author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Tue, 30 Oct 2018 20:04:25 +0000 | |
changeset 159 | 5a364902a0fa |
parent 158 | f767120c1e1e |
child 259 | 651864c2aa29 |
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 |
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! |