summaryrefslogtreecommitdiff
path: root/rust
AgeCommit message (Collapse)Author
2025-09-17[Rust] Add TypeBuilder::set_child_typeMark Rowe
2025-09-17Fix a Rust formatting issueMark Rowe
2025-09-15Deprecate some Rust MediumLevelILFunction methods in favor of Function ↵Josh Ferrell
implementations
2025-09-07[Rust] Support pointer base types and offsetsLukBukkit
2025-09-03Fix user stack var rust APIsJosh Ferrell
2025-09-01Add option to build rust api without linking to coreJosh Ferrell
2025-08-27Rewrite Obj-C workflow in RustMark Rowe
This is functionally equivalent to the previous workflow_objc, with the following changes: 1. It mutates the `core.function.metaAnalysis` workflow rather than registering a new named workflow. The activities now all check for the presence of the Objective-C metadata added by `ObjCProcessor` to determine whether they should do work, rather than relying on `MachoView` to override the function workflow when Objective-C metadata is present. This fixes https://github.com/Vector35/binaryninja-api/issues/6779. 2. The auto-inlining of `objc_msgSend` selector stub functions is performed in a separate activity from the processing of `objc_msgSend` call sites. The selector stub inlining activity is configured so that it does not run in `DSCView` as the shared cache needs different behavior for stub functions more generally that `SharedCacheWorkflow` already provides. 3. The way that types like `id` and `SEL` are referenced is fixed so that they show up as `id` rather than `objc_struct*`. This also replaces the Objective-C portion of the shared cache's workflow, and incorporates several bug fixes that had been applied to it but not the standalone Objective-C workflow.
2025-08-27[Rust] Fix a couple of oversights in the APIMark Rowe
1. Some SSA-specific functions are now implemented on `LowLevelILFunction<M, SSA>` rather than `Ref<LowLevelILFunction<M, SSA>>`. 2. A lifting helper for `LLIL_TAILCALL` is added to `LowLevelILFunction`. 3. `PossibleValueSet::ImportedAddressValue` now holds the value.
2025-08-27[Rust] Add LowLevelILFunction::{get_ssa_register_value, get_ssa_flag_value}Mark Rowe
These are available on `LowLevelILFunction<M, SSA>`.
2025-08-20[Rust] Fix misc inconsistencies in `2ba29fd`Mason Reed
2025-08-20[Rust] Add project path file retrieval related functionsMason Reed
2025-08-20Deprecate Workflow::Instance in favor of Workflow::Get and Workflow::GetOrCreateMark Rowe
Calls to `Workflow::Instance` that were looking up a built-in workflow name are updated to use `Workflow::Get`. Others use `Workflow::GetOrCreate`.
2025-08-14[Mac] Consistently specify rpaths for plug-insMark Rowe
C++ plug-ins now consistently use the `plugin_rpath` or `ui_plugin_rpath` macros to ensure they have `SKIP_BUILD_RPATH` set when building on Mac (i.e., no `LC_RPATH` is added). Rust plug-ins have their build.rs updated to only specify `-Wl,-rpath` when building for Linux. It is not needed on macOS. On macOS we instead explicitly specify an `@rpath`-relative install name. This doesn't change any behavior, but avoids leaving an absolute path as the library's install name and is consistent with CMake's behavior for C++ plug-ins.
2025-08-13[Rust] Add builder API for creating workflowsMark Rowe
`Workflow::new` is replaced by `Workflow::build` that returns a `Builder` type that supports the operations that mutate a workflow, such as registering activities. `Workflow::instance` is replaced by `Workflow::get` to make clear that it is intended to look up an existing workflow. `Workflow::cloned` is introduced to wrap the common pattern of retrieving an existing workflow and cloning it with the same name in order to modify it. `Builder::activity_before` / `Builder::activity_after` are introduced to wrap the common pattern of registering an activity then inserting it before or after a given activity.
2025-08-13[Rust] Add a type-safe builder API for Activity configurationMark Rowe
This makes it possible to see what structure the configuration takes and eliminates errors due to typos in JSON string literals.
2025-08-13[Rust] Fix warnings about names that are not snake caseMark Rowe
The names can simply be omitted since they are only mentioned in the declaration of a function pointer.
2025-08-07Fix clean builds when CMake is using Unix MakefilesMark Rowe
The `$<TARGET_FILE:binaryninjaapi>` syntax does not do what is intended for Unix Makefiles. In practice there's no reason for this custom command to depend on the `binaryninjaapi` target. The Rust API uses core's C APIs directly rather than via the C++ API, and it already depends on binaryninjacore.h via `RUST_API_SOURCES`. Since it's running `cargo check` and not doing a full compilation this header-only dependency is sufficient.
2025-08-06[Rust] Take download callbacks by reference to avoid boxingMason Reed
2025-08-03[Rust] Misc formattingMason Reed
2025-08-01Add LogForException APIs to pass stack trace information separate from the ↵Rusty Wagner
message
2025-07-30[Rust] Only re-run `cargo check` if inputs have changedMark Rowe
2025-07-30Change rust project APIs to accept "impl AsRef<Path>" instead of "&str" for ↵Josh Ferrell
path arguments
2025-07-29Add MemoryMap::add_unbacked_memory_region to rust apiJosh Ferrell
2025-07-28[Rust] Misc formattingMason Reed
2025-07-28[Rust] Add `BinaryViewExt::image_base`Mason Reed
2025-07-28[Rust] Add docs for what the boolean return value does for some specific ↵Mason Reed
"progress" like callbacks Still need to add more, consider changing the boolean to an enum that describes it better, so we do not need to copy paste docs around.
2025-07-24make fields of LookupTableEntry publicalan
2025-07-22Fix non-clickable force analysis with rust render layer onMason Reed
Fixes https://github.com/Vector35/binaryninja-api/issues/7139
2025-07-17[Rust] Misc fixes / formattingMason Reed
- Fix cmake clean not cleaning target docs - Fix not prioritizing enterprise remote in collab tests - Some misc formatting - Fix incorrect assert in binary loading
2025-07-17[Rust] Misc formatting fixesMason Reed
2025-07-15Add the ability to limit the number of results in the cross reference APIsRusty Wagner
2025-07-15[Rust] Update some testsMason Reed
2025-07-15[Rust] Add `BinaryView::search` and friendsMason Reed
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-06[Rust] Add `FileMetadata::forget_undo_actions`Mason Reed
Need this for WARP, see next commit
2025-07-06[Rust] Make `ReportCollection::add_*` optionally take a viewMason Reed
To allow for creating reports outside the context of a view
2025-07-06[Rust] Fix typo for `MediumLevelILFunction::live_instruction_for_variable` paramMason Reed
2025-07-06[Rust] Fix MLIL function expression index usage in place of instruction indexMason Reed
Discovered when poking at variable values in WARP
2025-07-04[Rust] Fix double precision expression low level IL definitionMason Reed
2025-07-04[WARP] Fix possible skipped instructions when multiple IL expressions are ↵Mason Reed
appended for a given instruction
2025-07-03[Rust] Fix clippy + rustfmt complaintsMark Rowe
The clippy complaint was a real issue: the doc comment intended for the commented-out `unresolved_indirect_branches` was being interpreted as the start of the doc comment for the following function.
2025-07-04[Rust] Fix some grammar in README.mdMason Reed
2025-07-04[Rust] Add missing `ADD_OVERFLOW`, `TEST_BIT` and `LLIL_REG_STACK_FREE_REG` ↵Mason Reed
low level IL expressions
2025-07-03Add get_files_by_path_in_project and get_path_in_project to C++ and python APIsAlexander Khosrowshahi
2025-07-03api: indirect branch inlining supportRyan Snyder
2025-07-03[Rust] Add simple binary view tags testMason Reed
2025-07-02[Rust] Misc cleanupMason Reed
2025-07-02[Rust] Add missing `LLIL_FLOAT_CONST` low level IL expressionMason Reed
2025-07-02[Rust] Add missing `LLIL_FLAG_GROUP` and `LLIL_FLAG_COND` lifted IL expressionsMason Reed
2025-07-02[Rust] Misc formattingMason Reed