Skip to content

Custom analyze_basic_blocks() impl doesn't run on entry point #8315

Description

@m1stadev

Version and Platform (required):

  • Binary Ninja Version: 5.3.9757/5.4.10060-dev
  • Edition: Personal
  • OS: macOS
  • OS Version: Sequoia 15.7.7
  • CPU Architecture: M1 Pro

Bug Description:
I'm currently writing a plugin for the AVR architecture (https://github.com/m1stadev/binavry), and I wrote a custom Architecture.analyze_basic_blocks() implementation for reading MCU-specific IO registers stored in the BinaryView & saving them to the shared context. I use them in Architecture.get_instruction_text_with_context() to have IO addresses display the proper register names, but analyze_basic_blocks() doesn't seem to run on the entry function, leaving the IO registers unnamed (picture example below is interrupt table, RESET is the entry point, INT0 jumps to it):
Image

Steps To Reproduce:

  1. Install https://github.com/m1stadev/binavry + dependencies
  2. Load firmware.hex (basic ATmega328P example binary)
  3. View unmodified entry point IO register addresses

Expected Behavior:
Architecture.analyze_basic_blocks() running on the entry point function

Additional Information:
Adding other entry points using bv.add_entry_point() or bv.add_to_entry_functions() still calls Architecture.analyze_basic_blocks()

Metadata

Metadata

Assignees

Labels

State: Awaiting TriageIssue is waiting for more in-depth triage from a developer

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions