VDBAddress.st
author Jan Vrany <jan.vrany@labware.com>
Fri, 29 Jul 2022 16:12:54 +0100
changeset 266 e21d777d076e
parent 264 23960fcb9dac
permissions -rw-r--r--
Fix `VDBInstructionListApplication` to analyze blocks for standalone instruction list ...that is, for instructions without any "disassemblable" (function, address range). This is used in some inspector goodies on Compiler's code buffer.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
188
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"
264
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
     2
jv:libgdbs - GNU Debugger Interface Library
188
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
Copyright (C) 2015-now Jan Vrany
264
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
     4
Copyright (C) 2022 LabWare
188
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
264
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
     6
Permission is hereby granted, free of charge, to any person obtaining a copy
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
     7
of this software and associated documentation files (the 'Software'), to deal
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
     8
in the Software without restriction, including without limitation the rights
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
     9
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
    10
copies of the Software, and to permit persons to whom the Software is
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
    11
furnished to do so, subject to the following conditions:
188
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
264
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
    13
The above copyright notice and this permission notice shall be included in all
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
    14
copies or substantial portions of the Software.
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
    15
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
    16
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
    17
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
    18
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
    19
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
    20
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
    21
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
    22
SOFTWARE.
188
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
"
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
"{ Package: 'jv:vdb' }"
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
"{ NameSpace: Smalltalk }"
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
GDBDebuggerObject subclass:#VDBAddress
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
	instanceVariableNames:'value'
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
	classVariableNames:''
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
	poolDictionaries:''
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
	category:'VDB-Expressions'
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
!
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
!VDBAddress class methodsFor:'documentation'!
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
copyright
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
"
264
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
    39
jv:libgdbs - GNU Debugger Interface Library
188
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
Copyright (C) 2015-now Jan Vrany
264
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
    41
Copyright (C) 2022 LabWare
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
    42
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
    43
Permission is hereby granted, free of charge, to any person obtaining a copy
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
    44
of this software and associated documentation files (the 'Software'), to deal
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
    45
in the Software without restriction, including without limitation the rights
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
    46
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
    47
copies of the Software, and to permit persons to whom the Software is
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
    48
furnished to do so, subject to the following conditions:
188
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
264
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
    50
The above copyright notice and this permission notice shall be included in all
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
    51
copies or substantial portions of the Software.
188
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
264
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
    53
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
    54
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
    55
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
    56
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
    57
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
    58
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
    59
SOFTWARE.
188
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
"
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
! !
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
!VDBAddress class methodsFor:'instance creation'!
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
value: aString
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
    ^ self new setValue: aString
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
    "Created: / 10-11-2019 / 23:25:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
! !
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
!VDBAddress methodsFor:'accessing'!
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
disassemble
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
    | result disassembly arch |
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
    result := debugger send: (GDBMI_data_disassemble arguments: (Array with: '-a' with: value with: '--' with: 5)).
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
    disassembly := result propertyAt: 'asm_insns'.
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
    arch := debugger selectedInferior threads anyOne stack first arch.
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
    disassembly do:[:each | each setDebugger: debugger; setArchitecture: arch ].
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
    ^ disassembly
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
    "Created: / 10-11-2019 / 23:26:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
! !
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
!VDBAddress methodsFor:'converting'!
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
asString
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
    ^ '0x' , value hexPrintString
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
    "Created: / 10-11-2019 / 23:39:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
! !
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
!VDBAddress methodsFor:'initialization'!
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
setValue: aString
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
    value := aString
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
    "Created: / 10-11-2019 / 23:24:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
! !
7080f4698aec UI: add `VDBDisassemblyApplication`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
264
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
   102
!VDBAddress class methodsFor:'documentation'!
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
   103
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
   104
version_HG
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
   105
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
   106
    ^ '$Changeset: <not expanded> $'
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
   107
! !
23960fcb9dac Relicense under MIT license.
Jan Vrany <jan.vrany@labware.com>
parents: 188
diff changeset
   108