Vector35 / Vector35/binaryninja-api
Custom analyze_basic_blocks() impl doesn't run on entry point
@zznop is already working on this.
Since Jul 14, 2026.
- Dominant language
- C++
- Stars
- 1.3k
- Forks
- 298
- Avg merge
- 5d 5h
- Merged PRs (30d)
- 19
Description
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):
Steps To Reproduce:
- Install https://github.com/m1stadev/binavry + dependencies
- Load firmware.hex (basic ATmega328P example binary)
- 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()
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.