summaryrefslogtreecommitdiff
path: root/architecture.cpp
AgeCommit message (Collapse)Author
2026-06-02Fix unbounded recursion in function inliningBrandon Miller
Fix crash that occurs when two functions that directly call each other are both marked "inline during analysis"
2026-04-08Fix crash with native architecture hooksBrandon Miller
2026-02-16Share context between BB recovery, lifing, and disassemblyBrandon Miller
Adds a GetInstructionTextWithContext callback to the architecture class that can be used to pass data from AnalyzeBasicBlocks. This same context is also supplied to LiftFunction and allows for supplying shared function and/or binary view level information across basic block analysis, function lifting, and disassembly text rendering
2026-01-27Perform function lifting and inlining in arch pluginsBrandon Miller
This change allows architecture plugins to override the LiftFunction callback to iterate a function's basic block list and lift entire functions at once. This is required for architectures such as TMS320 C6x, which have non-traditional "delay slots" in that branches, loads, and other instructions take multiple cycles to complete, and branch instructions can reside within the delay slots of other branches.
2026-01-01update copyrights for 2026Jordan Wiens
2025-12-16Add more reserve callsScott Lagler
2025-12-16Add missing std::vector reserve callsScott Lagler
# Conflicts: # function.cpp
2025-07-03api: indirect branch inlining supportRyan Snyder
2025-06-23abb: minor refactorRyan Snyder
2025-06-23Perform BB analysis from Architecture C++ APIBrandon Miller
This commit moves AnalyzeBasicBlocks from the binary ninja core to the API and allows architecture plugins to optionally override AnalyzeBasicBlocks for a custom implementation Supply ABB inputs in BNBasicBlockAnalysisContext Register default analyze basic blocks callback This allows the nanomips and rust core architecture plugins to work again while using the C++ API DefaultAnalyzeBasicBlocks Use default ABB from Python plugins Fix bug in API ArchAndAddr operator overload Python APIs for basic block analysis
2025-05-21Fix HLIL_LABEL renderingGlenn Smith
2025-03-28missed the older dates!Jordan Wiens
2025-02-11Fix partial initialization of `DisassemblyTextLine`Mason Reed
The usage of `DisassemblyTextLine` in the FFI was unsound, we would forget to initialize some fields causing a myriad of issues where round-tripping through the FFI was losing information.
2024-12-14Pass length to free flag conditions list callback and remove libc from rust apiMason Reed
Allows language bindings like rust to free conditions lists sanely
2024-12-14Pass length to free register list callbackMason Reed
Allows language bindings like rust to free register lists sanely
2024-10-28arch: fix text token exprIndex initRyan Snyder
2024-10-21Allow multiple high level representations for display, add Pseudo Rust and a ↵Rusty Wagner
Pseudo Python example plugin
2024-05-24arch: multiple delay slot support, suppress spurious mips warningRyan Snyder
2024-05-24platform: initial BNCustomPlatform supportRyan Snyder
2024-03-02Add support for memory intrinsics.Brian Potchik
2024-02-07add exprIndex field to BNInstructionTextTokenRyan Snyder
2024-01-08update copyright yearJordan Wiens
2023-11-14Fix a number of leaks and bad uses of free in the apiGlenn Smith
See https://github.com/Vector35/binaryninja-api/issues/4751
2023-11-13Add fmt library to apiGlenn Smith
2023-02-08Clean up possible early deletion issues in API callbacksRusty Wagner
2023-02-03Fix InstructionTextToken default ctor not initializing membersGlenn Smith
Fixes #3596
2023-01-30Fix UAF on C++ BinaryView plugin init, improve demangler and BinaryView APIsRusty Wagner
2023-01-05Update copyright to 2023Josh F
2022-11-30Type library C++ api & import recordingGlenn Smith
2022-11-10Include C++ standard headersChristian Blichmann
When compiling in C++ mode, the C++ standard library headers should be included instead of their C counterparts. Drive-by: - Removed include of `json/json.h` from `settings.cpp`, where it was not used
2022-11-10Warning cleanupRusty Wagner
2022-10-04Deprecate unused BinaryViewTypeArchitectureConstant APIXusheng
2022-05-11Clang+TypeParser APIsGlenn Smith
2022-01-28Format All FilesKyleMiles
2022-01-03update copyright yearsJordan Wiens
2021-09-05Refactor Python TypesPeter LaFosse
Remove _mutable types
2021-02-17add support for type xref and variable xrefXusheng
2021-01-18updating copyright yearJordan Wiens
2020-10-15edit current line in linear viewXusheng
add CanAssemble() to architectures
2020-09-15display as in linear viewXusheng
2020-04-28Add system register list to architectures.Rusty Wagner
Global registers are commonly used for module data pointers in architectures, which are global in nature but should still be eliminated in high level ILs once the data pointers have been resolved. This means there needs to be an additional type of global register for those that should never be eliminated in any way, such as an MSR register or other registers that contain important system state with side effects. To allow for this, a list of system registers can be supplied by the archtiecture.
2020-04-25Add GetDisplayStringForInteger APIPeter LaFosse
2020-04-21Add indentation option for text rendererRusty Wagner
2020-04-17Early HLIL testingRusty Wagner
2020-01-01update copyright year to 2020Jordan Wiens
2019-08-06Fix some double frees with DisassemblyTextLine in APIRusty Wagner
2019-08-02Fix some places missing tag conversion for text linesGlenn Smith
2019-08-01TagsGlenn Smith
2019-07-23Add API to process tokens for integer display types, comments, etc.Rusty Wagner
2019-02-28Fix typo in API nameRusty Wagner