author | Jan Vrany <jan.vrany@labware.com> |
Mon, 30 May 2022 13:58:25 +0100 | |
changeset 259 | 651864c2aa29 |
parent 158 | f767120c1e1e |
child 272 | cdd1c9ad00de |
permissions | -rw-r--r-- |
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 |
259
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
158
diff
changeset
|
4 |
Copyright (C) 2022 LabWare |
126
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5 |
|
259
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
158
diff
changeset
|
6 |
Permission is hereby granted, free of charge, to any person obtaining a copy |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
158
diff
changeset
|
7 |
of this software and associated documentation files (the 'Software'), to deal |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
158
diff
changeset
|
8 |
in the Software without restriction, including without limitation the rights |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
158
diff
changeset
|
9 |
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
158
diff
changeset
|
10 |
copies of the Software, and to permit persons to whom the Software is |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
158
diff
changeset
|
11 |
furnished to do so, subject to the following conditions: |
126
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
12 |
|
259
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
158
diff
changeset
|
13 |
The above copyright notice and this permission notice shall be included in all |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
158
diff
changeset
|
14 |
copies or substantial portions of the Software. |
126
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
15 |
|
259
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
158
diff
changeset
|
16 |
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
158
diff
changeset
|
17 |
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
158
diff
changeset
|
18 |
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
158
diff
changeset
|
19 |
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
158
diff
changeset
|
20 |
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
158
diff
changeset
|
21 |
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
158
diff
changeset
|
22 |
SOFTWARE. |
126
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
23 |
" |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
24 |
"{ Package: 'jv:libgdbs' }" |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
25 |
|
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
26 |
"{ NameSpace: Smalltalk }" |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
27 |
|
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
28 |
GDBDebuggerObject subclass:#GDBInstructionsAndSourceLine |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
29 |
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
|
30 |
classVariableNames:'SourceCache SourceCacheSize' |
126
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
31 |
poolDictionaries:'' |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
32 |
category:'GDB-Core' |
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 |
|
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
35 |
!GDBInstructionsAndSourceLine class methodsFor:'documentation'! |
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 |
copyright |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
38 |
" |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
39 |
jv:libgdbs - GNU Debugger Interface Library |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
40 |
Copyright (C) 2015-now Jan Vrany |
259
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
158
diff
changeset
|
41 |
Copyright (C) 2022 LabWare |
126
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
42 |
|
259
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
158
diff
changeset
|
43 |
Permission is hereby granted, free of charge, to any person obtaining a copy |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
158
diff
changeset
|
44 |
of this software and associated documentation files (the 'Software'), to deal |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
158
diff
changeset
|
45 |
in the Software without restriction, including without limitation the rights |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
158
diff
changeset
|
46 |
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
158
diff
changeset
|
47 |
copies of the Software, and to permit persons to whom the Software is |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
158
diff
changeset
|
48 |
furnished to do so, subject to the following conditions: |
126
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
49 |
|
259
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
158
diff
changeset
|
50 |
The above copyright notice and this permission notice shall be included in all |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
158
diff
changeset
|
51 |
copies or substantial portions of the Software. |
126
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
52 |
|
259
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
158
diff
changeset
|
53 |
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
158
diff
changeset
|
54 |
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
158
diff
changeset
|
55 |
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
158
diff
changeset
|
56 |
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
158
diff
changeset
|
57 |
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
158
diff
changeset
|
58 |
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
651864c2aa29
Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents:
158
diff
changeset
|
59 |
SOFTWARE. |
126
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
60 |
" |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
61 |
! ! |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
62 |
|
131
21d97c0ee600
API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
126
diff
changeset
|
63 |
!GDBInstructionsAndSourceLine class methodsFor:'initialization'! |
21d97c0ee600
API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
126
diff
changeset
|
64 |
|
21d97c0ee600
API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
126
diff
changeset
|
65 |
initialize |
21d97c0ee600
API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
126
diff
changeset
|
66 |
"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
|
67 |
|
158
f767120c1e1e
Portability: do not use `CacheDictionary`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
68 |
SourceCache := Dictionary new. |
f767120c1e1e
Portability: do not use `CacheDictionary`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
69 |
SourceCacheSize := 16 |
131
21d97c0ee600
API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
126
diff
changeset
|
70 |
|
158
f767120c1e1e
Portability: do not use `CacheDictionary`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
71 |
"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
|
72 |
! ! |
21d97c0ee600
API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
126
diff
changeset
|
73 |
|
126
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
74 |
!GDBInstructionsAndSourceLine class methodsFor:'accessing-magritte'! |
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 |
descriptionContainer |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
77 |
^ super descriptionContainer |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
78 |
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
|
79 |
define: #line as: Integer; |
126
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
80 |
yourself |
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: / 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
|
83 |
"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
|
84 |
! ! |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
85 |
|
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
86 |
!GDBInstructionsAndSourceLine methodsFor:'accessing'! |
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 |
address |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
89 |
line_asm_insn isEmptyOrNil ifTrue:[ ^ -1 ]. |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
90 |
^ line_asm_insn first address |
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 |
"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
|
93 |
! |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
94 |
|
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
95 |
file |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
96 |
"Return filename (path) containing frame's function source." |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
97 |
|
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
98 |
| f | |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
99 |
|
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
100 |
"/ GDB/MI provides two paths, `file` and `fullname`. |
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 |
"/ 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
|
103 |
"/ anything directly useful, especially when debug info contains |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
104 |
"/ relative paths with multiple segments. |
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 |
"/ 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
|
107 |
"/ path here too. Hence the code below. |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
108 |
"/ |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
109 |
"/ 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
|
110 |
"/ cache resolved Filename in `fullname` instvar. |
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 |
fullname isFilename ifTrue:[ |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
113 |
"/ Already resolved by the code below |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
114 |
^ fullname pathName |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
115 |
]. |
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 |
f := fullname ? file. |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
118 |
f isNil ifTrue:[ ^ nil ]. |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
119 |
f := f copyReplaceAll: $/ with: Filename separator. |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
120 |
f := f asFilename. |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
121 |
|
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
122 |
"/ check, if GDB returned correctly resolved filename... |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
123 |
f exists ifTrue:[ |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
124 |
fullname := f. |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
125 |
^ fullname pathName |
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 |
|
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
128 |
"/ ...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
|
129 |
self debugger directories do:[:d | |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
130 |
f := d asFilename / (fullname ? file). |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
131 |
f exists ifTrue:[ |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
132 |
fullname := f. |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
133 |
^ fullname pathName. |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
134 |
]. |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
135 |
]. |
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 |
"/ ...if not found there... |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
138 |
^ nil |
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 |
"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
|
141 |
"Modified: / 22-03-2018 / 16:52:52 / jv" |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
142 |
! |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
143 |
|
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
144 |
instructions |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
145 |
^ line_asm_insn ? #() |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
146 |
|
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
147 |
"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
|
148 |
"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
|
149 |
! |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
150 |
|
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
151 |
line |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
152 |
^ line |
131
21d97c0ee600
API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
126
diff
changeset
|
153 |
! |
21d97c0ee600
API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
126
diff
changeset
|
154 |
|
21d97c0ee600
API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
126
diff
changeset
|
155 |
source |
21d97c0ee600
API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
126
diff
changeset
|
156 |
"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
|
157 |
|
158
f767120c1e1e
Portability: do not use `CacheDictionary`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
158 |
| f s | |
131
21d97c0ee600
API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
126
diff
changeset
|
159 |
|
21d97c0ee600
API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
126
diff
changeset
|
160 |
f := self file. |
21d97c0ee600
API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
126
diff
changeset
|
161 |
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
|
162 |
s := SourceCache at: f ifAbsentPut: [ nil ]. |
f767120c1e1e
Portability: do not use `CacheDictionary`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
163 |
s isNil ifTrue:[ |
f767120c1e1e
Portability: do not use `CacheDictionary`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
164 |
SourceCache size >= SourceCacheSize ifTrue:[ |
f767120c1e1e
Portability: do not use `CacheDictionary`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
165 |
SourceCache removeKey: (SourceCache keys anElement) |
f767120c1e1e
Portability: do not use `CacheDictionary`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
166 |
]. |
f767120c1e1e
Portability: do not use `CacheDictionary`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
167 |
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
|
168 |
]. |
f767120c1e1e
Portability: do not use `CacheDictionary`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
133
diff
changeset
|
169 |
^ s |
131
21d97c0ee600
API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
126
diff
changeset
|
170 |
|
21d97c0ee600
API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
126
diff
changeset
|
171 |
"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
|
172 |
"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
|
173 |
! ! |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
174 |
|
133
026074322527
Add support for instruction dissection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
132
diff
changeset
|
175 |
!GDBInstructionsAndSourceLine methodsFor:'enumerating'! |
026074322527
Add support for instruction dissection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
132
diff
changeset
|
176 |
|
026074322527
Add support for instruction dissection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
132
diff
changeset
|
177 |
instructionsDo: aBlock |
026074322527
Add support for instruction dissection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
132
diff
changeset
|
178 |
line_asm_insn ? #() do: aBlock |
026074322527
Add support for instruction dissection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
132
diff
changeset
|
179 |
|
026074322527
Add support for instruction dissection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
132
diff
changeset
|
180 |
"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
|
181 |
! ! |
026074322527
Add support for instruction dissection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
132
diff
changeset
|
182 |
|
132
70c17add3b24
Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
131
diff
changeset
|
183 |
!GDBInstructionsAndSourceLine methodsFor:'initialization & release'! |
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 |
setArchitecture: aGDBArchitecture |
70c17add3b24
Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
131
diff
changeset
|
186 |
self instructions do:[:e | e setArchitecture: aGDBArchitecture ] |
70c17add3b24
Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
131
diff
changeset
|
187 |
|
70c17add3b24
Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
131
diff
changeset
|
188 |
"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
|
189 |
! |
70c17add3b24
Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
131
diff
changeset
|
190 |
|
70c17add3b24
Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
131
diff
changeset
|
191 |
setDebugger: aGDBDebugger |
70c17add3b24
Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
131
diff
changeset
|
192 |
super setDebugger: aGDBDebugger. |
70c17add3b24
Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
131
diff
changeset
|
193 |
self instructions do:[:e | e setDebugger: aGDBDebugger ] |
70c17add3b24
Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
131
diff
changeset
|
194 |
|
70c17add3b24
Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
131
diff
changeset
|
195 |
"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
|
196 |
! ! |
70c17add3b24
Introduces a model of architectures
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
131
diff
changeset
|
197 |
|
126
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
198 |
!GDBInstructionsAndSourceLine methodsFor:'testing'! |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
199 |
|
133
026074322527
Add support for instruction dissection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
132
diff
changeset
|
200 |
isBranch |
126
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
201 |
^ false |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
202 |
|
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
203 |
"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
|
204 |
! |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
205 |
|
133
026074322527
Add support for instruction dissection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
132
diff
changeset
|
206 |
isReturn |
126
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
207 |
^ false |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
208 |
|
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
209 |
"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
|
210 |
! ! |
fb73b0af430b
Added initial support for disassembling
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
211 |
|
131
21d97c0ee600
API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
126
diff
changeset
|
212 |
!GDBInstructionsAndSourceLine class methodsFor:'documentation'! |
21d97c0ee600
API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
126
diff
changeset
|
213 |
|
21d97c0ee600
API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
126
diff
changeset
|
214 |
version_HG |
21d97c0ee600
API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
126
diff
changeset
|
215 |
|
21d97c0ee600
API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
126
diff
changeset
|
216 |
^ '$Changeset: <not expanded> $' |
21d97c0ee600
API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
126
diff
changeset
|
217 |
! ! |
21d97c0ee600
API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
126
diff
changeset
|
218 |
|
21d97c0ee600
API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
126
diff
changeset
|
219 |
|
21d97c0ee600
API: added `GDBInstructionAndSource >> #source`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
126
diff
changeset
|
220 |
GDBInstructionsAndSourceLine initialize! |