summaryrefslogtreecommitdiff
path: root/function.cpp
AgeCommit message (Collapse)Author
2026-06-02Add support for multiple global pointer registersBrandon Miller
2026-05-22Refactor calling conventions to support correct representation of structuresRusty Wagner
2026-05-20Sort switch blocks in graph view by case numberGlenn Smith
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-14Allow controlling which address is used for instructions created when ↵Mark Rowe
inlining during analysis Previously the address of the instruction in the function being inlined was used as the new instruction's address when copying it during inlining. Now there is an additional option: use the address of the call instruction that is being replaced as the new instruction's address. This new mode is useful when inlining thunks or stub functions, but care must be taken if using it beyond that. The benefit is that it ensures that when a function contains multiple calls to the same stub function, each inlined copy ends up with distinct addresses. This ensures that call type adjustments and other overrides that are stored on the function and keyed by address can be applied independently to each callsite that was inlined. The trade-off is that if the function being inlined contains non-trivial logic, all of the inlined instructions sharing an address will limit what type of adjustments can be applied to them. The Objective-C and shared cache workflows are updated to take advantage of this new mode when they enable inlining of stub functions. This will make it possible for multiple calls to the same runtime function within a single function to have separate call type adjustments applied in the future.
2026-01-01update copyrights for 2026Jordan Wiens
2025-12-16Add missing std::vector reserve callsScott Lagler
# Conflicts: # function.cpp
2025-12-15Add PossibleValueSet operation APIs and fixes to PVS python APIJosh Ferrell
2025-11-03Add helpers for whether a function is exported.Alexander Taylor
2025-10-22Move implementations of key functions on Variable and SSAVariable to headersMark Rowe
These types are heavily used as map keys so allowing the compiler to inline these functions makes map lookups cheaper.
2025-07-15Finish guided analysis feature and add unit tests.Brian Potchik
2025-07-15Move LLIL instruction retrieval into the LLIL function where it belongsMason Reed
The python API was kept the same seeing as we are close to the release, will likely start deprecating some of those API's soon.
2025-07-08Various improvements for guided disassembly mode.Brian Potchik
2025-07-03Reduce number of refreshes and memory usage of cross references widget.Rusty Wagner
* Generates IL for cross references only when visible instead of all at once. * Releases memory for IL after the cross references retrieves the tokens. * Much faster algorithm for updating IL when functions change. * Don't refresh cross references at all if the widget isn't visible. Retreiving the new set of cross references is deferred until the widget becomes visible again. * Don't redo the query for the list of cross references when anything in the entire UI changes, even the window layout. Only recompute the list when an event for a new cross reference selection comes in.
2025-07-03api: indirect branch inlining supportRyan Snyder
2025-06-29Fix invalid memory free for ArchAndAddr list in C++ API.Brian Potchik
2025-06-25Remove implicit conversions from Confidence to underlying type, these can ↵Rusty Wagner
cause bugs and also issues with C++20
2025-06-25Initial support for guided disassembly.Brian Potchik
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-06-11API to create immediate function graphsGlenn Smith
2025-06-11Expose Function::CheckForDebugReportGlenn Smith
2025-06-10Add UI action and API to control switch recovery in HLILRusty Wagner
2025-06-03Add UI action and API to control early returns in HLILRusty Wagner
2025-06-03Add UI action and API to flip conditions during HLIL restructuringRusty Wagner
2025-05-23Add UI action and API to control expression foldingRusty Wagner
2025-05-19Implement function level metadataBrandon Miller
2025-04-23Add Function::Analyze API to perform on-demand function analysis.Brian Potchik
2025-03-28missed the older dates!Jordan Wiens
2025-03-17core: initial union support with C++ APIRyan Snyder
2025-02-14uidf refactorRyan Snyder
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.
2025-02-06Add After variants for looking up variables at instructionsGlenn Smith
Fixes #6397
2025-02-02Fix QualifiedName being leaked in function UserTypeReference related functionsMason Reed
2024-10-24Initial implementation of the module-level analysis workflow.Brian Potchik
2024-10-23Linear view function regions collapsePeter LaFosse
Update collapse code to support PseudoC
2024-10-21Allow multiple high level representations for display, add Pseudo Rust and a ↵Rusty Wagner
Pseudo Python example plugin
2024-08-02Support setting user global pointer valueXusheng
2024-07-09Expose Function::UsesIncomingGlobalPointer through the API. Fix ↵Xusheng
https://github.com/Vector35/binaryninja-api/issues/5686
2024-05-24platform: initial BNCustomPlatform supportRyan Snyder
2024-02-10Use TypeID for serializing enum types, replace set_int_enum_display_typeid ↵kat
with set_int_display_type, add get_int_display_type_and_typeid, bump ABI
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-06Allow setting UIDF on any mlil/hlil usageJosh Ferrell
2023-07-07Expose function "pure" flag to api and typesystemGlenn Smith
2023-02-20Allow DataVariables to be added to Componentskat
2023-02-08Add boolean for Function.user_type to indicate if a user type has been setPeter LaFosse
2023-02-05Add IsConstantData to the C++ RegisterValue API.Brian Potchik
2023-02-04Initial support for constant data expressions.Brian Potchik
2023-01-30Fix Type object leaksRusty Wagner