Skip to content

Commit 7a184cb

Browse files
committed
Fix disassembly flavour warnings on non- x86 targets
1 parent c51feb7 commit 7a184cb

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

common/context_handler.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,9 @@ def display_code(self) -> None:
364364

365365
output_line(f"{filename}'{function_name}:")
366366

367-
pre_instructions = extract_instructions(self.target, function_start, pc - 1, self.state.disassembly_syntax)[-3:]
367+
pre_instructions = extract_instructions(
368+
self.target, self.arch, function_start, pc - 1, self.state.disassembly_syntax
369+
)[-3:]
368370
print_instructions(
369371
self.target,
370372
pre_instructions,
@@ -381,7 +383,7 @@ def display_code(self) -> None:
381383
disassembly_end_address = min(frame_end_address, max_disassembly_end_address)
382384

383385
post_instructions = extract_instructions(
384-
self.target, pc, disassembly_end_address, self.state.disassembly_syntax
386+
self.target, self.arch, pc, disassembly_end_address, self.state.disassembly_syntax
385387
)
386388

387389
if len(post_instructions) > 0:

common/instruction_util.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
from lldb import SBAddress, SBInstruction, SBTarget
55

6+
from arch import BaseArch, I386, X86_64
67
from common.color_settings import LLEFColorSettings
78
from common.golang.analysis import go_annotate_jumps
89
from common.golang.util import go_context_analysis
@@ -11,7 +12,7 @@
1112

1213

1314
def extract_instructions(
14-
target: SBTarget, start_address: int, end_address: int, disassembly_flavour: str
15+
target: SBTarget, arch: BaseArch, start_address: int, end_address: int, disassembly_flavour: str
1516
) -> list[SBInstruction]:
1617
"""
1718
Returns a list of instructions between a range of memory address defined by @start_address and @end_address.
@@ -25,7 +26,10 @@ def extract_instructions(
2526
current = start_address
2627
while current <= end_address:
2728
address = SBAddress(current, target)
28-
instruction = target.ReadInstructions(address, 1, disassembly_flavour).GetInstructionAtIndex(0)
29+
if isinstance(arch, I386) or isinstance(arch, X86_64):
30+
instruction = target.ReadInstructions(address, 1, disassembly_flavour).GetInstructionAtIndex(0)
31+
else:
32+
instruction = target.ReadInstructions(address, 1).GetInstructionAtIndex(0)
2933
instructions.append(instruction)
3034
instruction_size = instruction.GetByteSize()
3135
if instruction_size > 0:

0 commit comments

Comments
 (0)