GDBInstructionsAndSourceLine.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Thu, 07 Feb 2019 15:18:41 +0000
changeset 175 a04e1a36e888
parent 158 f767120c1e1e
child 259 651864c2aa29
permissions -rw-r--r--
Fix for multi-location breakpoints created initially as pending If the breakpoint has been created as pending breakpoint it is unknown whether it is a multi-location breakpoint or not so it has no locations. If, once the object is loaded abd breakpoint can be installed, it turns out there are multiple locations, we get an an =breakpoint-modified event listing all locations. Therefore, we have to update existing breakpoint and add locations.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
126
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
jv:libgdbs - GNU Debugger Interface Library
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
Copyright (C) 2015-now Jan Vrany
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
This library is free software; you can redistribute it and/or
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
modify it under the terms of the GNU Lesser General Public
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
License as published by the Free Software Foundation; either
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
version 2.1 of the License. 
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
This library is distributed in the hope that it will be useful,
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
but WITHOUT ANY WARRANTY; without even the implied warranty of
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
Lesser General Public License for more details.
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
You should have received a copy of the GNU Lesser General Public
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
License along with this library; if not, write to the Free Software
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
"
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
"{ Package: 'jv:libgdbs' }"
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
"{ NameSpace: Smalltalk }"
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
GDBDebuggerObject subclass:#GDBInstructionsAndSourceLine
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
	instanceVariableNames:'file fullname line line_asm_insn'
158
f767120c1e1e Portability: do not use `CacheDictionary`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
    25
	classVariableNames:'SourceCache SourceCacheSize'
126
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
	poolDictionaries:''
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
	category:'GDB-Core'
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
!
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
!GDBInstructionsAndSourceLine class methodsFor:'documentation'!
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
copyright
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
"
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
jv:libgdbs - GNU Debugger Interface Library
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
Copyright (C) 2015-now Jan Vrany
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
This library is free software; you can redistribute it and/or
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
modify it under the terms of the GNU Lesser General Public
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
License as published by the Free Software Foundation; either
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
version 2.1 of the License. 
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
This library is distributed in the hope that it will be useful,
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
but WITHOUT ANY WARRANTY; without even the implied warranty of
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
Lesser General Public License for more details.
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
You should have received a copy of the GNU Lesser General Public
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
License along with this library; if not, write to the Free Software
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
"
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
! !
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
131
21d97c0ee600 API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
    53
!GDBInstructionsAndSourceLine class methodsFor:'initialization'!
21d97c0ee600 API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
    54
21d97c0ee600 API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
    55
initialize
21d97c0ee600 API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
    56
    "Invoked at system start or when the class is dynamically loaded."
21d97c0ee600 API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
    57
158
f767120c1e1e Portability: do not use `CacheDictionary`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
    58
    SourceCache := Dictionary new.
f767120c1e1e Portability: do not use `CacheDictionary`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
    59
    SourceCacheSize := 16
131
21d97c0ee600 API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
    60
158
f767120c1e1e Portability: do not use `CacheDictionary`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
    61
    "Modified (comment): / 30-10-2018 / 19:44:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
131
21d97c0ee600 API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
    62
! !
21d97c0ee600 API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
    63
126
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
!GDBInstructionsAndSourceLine class methodsFor:'accessing-magritte'!
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
descriptionContainer
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
    ^ super descriptionContainer
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
        define: #line_asm_insn as: Array of: GDBInstruction;
131
21d97c0ee600 API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
    69
        define: #line as: Integer;
126
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
        yourself
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
    "Created: / 22-06-2018 / 10:58:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
131
21d97c0ee600 API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
    73
    "Modified: / 07-08-2018 / 11:49:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
126
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
! !
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
!GDBInstructionsAndSourceLine methodsFor:'accessing'!
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
address
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
    line_asm_insn isEmptyOrNil ifTrue:[ ^ -1 ].
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
    ^ line_asm_insn first address
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
    "Created: / 03-07-2018 / 14:51:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
!
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
file
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
    "Return filename (path) containing frame's function source."
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
    | f |
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
    "/ GDB/MI provides two paths, `file` and `fullname`. 
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
    "/ 
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
    "/ However, sometimes GDB gets confused and does not return
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
    "/ anything directly useful, especially when debug info contains
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
    "/ relative paths with multiple segments. 
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
    "/ 
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
    "/ As a courtesy to the user, in that case try to resolve full
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
    "/ path here too. Hence the code below.
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
    "/
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
    "/ To avoid re-resolving of file each time this method is called,
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
    "/ cache resolved Filename in `fullname` instvar. 
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
    fullname isFilename ifTrue:[ 
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
        "/ Already resolved by the code below
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
        ^ fullname pathName
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
    ].
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
    f := fullname ? file.
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
    f isNil ifTrue:[ ^ nil ].
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
    f := f copyReplaceAll: $/ with: Filename separator.
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
    f := f asFilename.
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
    "/ check, if GDB returned correctly resolved filename...
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
    f exists ifTrue:[
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
        fullname := f.
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
        ^ fullname pathName
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
    ].
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
    "/ ...if not, try to look it up in source directories...
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
    self debugger directories do:[:d | 
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
        f := d asFilename / (fullname ? file).
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   121
        f exists ifTrue:[ 
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   122
            fullname := f.
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   123
            ^ fullname pathName.
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
        ].
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
    ].
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
    "/ ...if not found there...
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   128
    ^ nil
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   129
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   130
    "Modified: / 12-03-2018 / 10:32:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
    "Modified: / 22-03-2018 / 16:52:52 / jv"
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132
!
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   134
instructions
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   135
    ^ line_asm_insn ? #()
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   137
    "Created: / 22-06-2018 / 10:58:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   138
    "Modified: / 22-06-2018 / 12:54:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
!
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   140
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
line
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   142
    ^ line
131
21d97c0ee600 API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
   143
!
21d97c0ee600 API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
   144
21d97c0ee600 API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
   145
source
21d97c0ee600 API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
   146
    "Return the source (as StringCollection !!!!!!) or nil if not available"
21d97c0ee600 API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
   147
158
f767120c1e1e Portability: do not use `CacheDictionary`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   148
    | f s |
131
21d97c0ee600 API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
   149
21d97c0ee600 API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
   150
    f := self file.
21d97c0ee600 API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
   151
    f isNil ifTrue:[ ^ nil "no file, source not available" ].
158
f767120c1e1e Portability: do not use `CacheDictionary`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   152
    s := SourceCache at: f ifAbsentPut: [ nil ].
f767120c1e1e Portability: do not use `CacheDictionary`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   153
    s isNil ifTrue:[
f767120c1e1e Portability: do not use `CacheDictionary`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   154
        SourceCache size >= SourceCacheSize ifTrue:[ 
f767120c1e1e Portability: do not use `CacheDictionary`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   155
            SourceCache removeKey: (SourceCache keys anElement)
f767120c1e1e Portability: do not use `CacheDictionary`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   156
        ].
f767120c1e1e Portability: do not use `CacheDictionary`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   157
        SourceCache at: f put: f asFilename contents withTabsExpanded
f767120c1e1e Portability: do not use `CacheDictionary`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   158
    ].
f767120c1e1e Portability: do not use `CacheDictionary`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   159
    ^ s
131
21d97c0ee600 API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
   160
21d97c0ee600 API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
   161
    "Created: / 07-08-2018 / 11:32:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
158
f767120c1e1e Portability: do not use `CacheDictionary`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 133
diff changeset
   162
    "Modified: / 30-10-2018 / 19:47:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
126
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   163
! !
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   164
133
026074322527 Add support for instruction dissection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   165
!GDBInstructionsAndSourceLine methodsFor:'enumerating'!
026074322527 Add support for instruction dissection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   166
026074322527 Add support for instruction dissection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   167
instructionsDo: aBlock
026074322527 Add support for instruction dissection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   168
    line_asm_insn ? #() do: aBlock
026074322527 Add support for instruction dissection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   169
026074322527 Add support for instruction dissection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   170
    "Created: / 16-08-2018 / 11:31:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
026074322527 Add support for instruction dissection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   171
! !
026074322527 Add support for instruction dissection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   172
132
70c17add3b24 Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 131
diff changeset
   173
!GDBInstructionsAndSourceLine methodsFor:'initialization & release'!
70c17add3b24 Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 131
diff changeset
   174
70c17add3b24 Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 131
diff changeset
   175
setArchitecture: aGDBArchitecture
70c17add3b24 Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 131
diff changeset
   176
    self instructions do:[:e | e setArchitecture: aGDBArchitecture ]
70c17add3b24 Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 131
diff changeset
   177
70c17add3b24 Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 131
diff changeset
   178
    "Created: / 16-08-2018 / 09:39:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
70c17add3b24 Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 131
diff changeset
   179
!
70c17add3b24 Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 131
diff changeset
   180
70c17add3b24 Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 131
diff changeset
   181
setDebugger: aGDBDebugger
70c17add3b24 Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 131
diff changeset
   182
    super setDebugger: aGDBDebugger.
70c17add3b24 Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 131
diff changeset
   183
    self instructions do:[:e | e setDebugger: aGDBDebugger ]
70c17add3b24 Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 131
diff changeset
   184
70c17add3b24 Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 131
diff changeset
   185
    "Created: / 16-08-2018 / 09:33:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
70c17add3b24 Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 131
diff changeset
   186
! !
70c17add3b24 Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 131
diff changeset
   187
126
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   188
!GDBInstructionsAndSourceLine methodsFor:'testing'!
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   189
133
026074322527 Add support for instruction dissection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   190
isBranch
126
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   191
    ^ false
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   192
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   193
    "Created: / 03-07-2018 / 14:39:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   194
!
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   195
133
026074322527 Add support for instruction dissection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 132
diff changeset
   196
isReturn
126
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   197
    ^ false
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   198
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   199
    "Created: / 03-07-2018 / 14:39:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   200
! !
fb73b0af430b Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   201
131
21d97c0ee600 API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
   202
!GDBInstructionsAndSourceLine class methodsFor:'documentation'!
21d97c0ee600 API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
   203
21d97c0ee600 API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
   204
version_HG
21d97c0ee600 API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
   205
21d97c0ee600 API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
   206
    ^ '$Changeset: <not expanded> $'
21d97c0ee600 API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
   207
! !
21d97c0ee600 API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
   208
21d97c0ee600 API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
   209
21d97c0ee600 API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 126
diff changeset
   210
GDBInstructionsAndSourceLine initialize!