binja_explain_instruction icon indicating copy to clipboard operation
binja_explain_instruction copied to clipboard

Tailcall causes AttributeError

Open nihaals opened this issue 5 months ago • 0 comments

Describe the bug Navigating to a tailcall()/__tailcall causes an AttributeError.

Offending instruction information

Address:
  0x100003d98
Architecture:
  aarch64
bv.read:
  00021fd6
bv.get_disassembly:
  br      x16
function.get_lifted_il_at:
  jump(x16)
function.get_lifted_ils_at:
  [<LowLevelILJump: jump(x16)>, <LowLevelILUndef: undefined>, <LowLevelILJump: jump(0x100003d9c)>]
function.get_llil_at:
  <return> tailcall(x16)
function.get_llils_at:
  [<LowLevelILTailcall: <return> tailcall(x16)>]
architecture.get_low_level_il_from_bytes:
  jump(x16)

Expected behavior The error is not shown.

Actual behavior

[Default] Traceback (most recent call last):
[Default]   File "/.../explain.py", line 196, in explain_llil
[Default]     return explanations[name].format(**preprocess(bv, llil_instruction))
[Default]   File "/.../explain.py", line 35, in __getattr__
[Default]     raise AttributeError(f"{self.instruction} has no attribute '{item}'")
[Default] AttributeError: <return> tailcall(x16) has no attribute 'params'
...

Platform Information (please complete the following information):

  • Binary Ninja Version: 3.5.4526
  • OS: macOS
  • Python Interpreter: Bundled 3.10(?)

nihaals avatar Mar 09 '24 19:03 nihaals