summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2025-02-24Specify target rust version in Rust CIMason Reed
This impacts the linter and formatting jobs, one day we will store the rust target version as a environment variable... one day. Then no one will understand what is going on!
2025-02-24Fix clippy lints applying to `binaryninjacore-sys`Mason Reed
This should _hopefully_ fix clippy checking the output of bindgen.
2025-02-24Remove `is_floating_point` from `Type` impl DebugMason Reed
It is unnecessary
2025-02-24Add SVD Loader PluginMason Reed
2025-02-24Fix default scope for settings QueryOptions in Rust APIMason Reed
2025-02-24Add `BinaryViewExt::comment_at` and `BinaryViewExt::set_comment_at`Mason Reed
How did we not have this before?
2025-02-24Implement Rust MemoryMapMason Reed
Also split out SegmentFlags and fix some UB with the section creation
2025-02-24Add platform recognizer to Rust APIMason Reed
2025-02-23Fix API compilation for clang on windowsJosh Ferrell
2025-02-21Deduplicate function objects returned from 'get_functions_by_name' API.Brian Potchik
2025-02-19[SharedCache] Don't capture `this` within lambda passed to ↵Mark Rowe
MMappedFileAccessor::Open Nothing guarantees that the `SharedCache` lives long enough.
2025-02-18add documentation for BN_QSETTINGS_POSTFIXJordan Wiens
2025-02-18[SharedCache] Fix un-updated symbols listMason Reed
There was a second BeginBulkModifySymbols after rebasing the new processing symbols commit
2025-02-18Add BinaryView.forget_undo_actionsGlenn Smith
Closes Vector35/binaryninja-api#6430
2025-02-18Remove function from Debug impl of MediumLevelILLiftedInstruction in Rust APIMason Reed
Causing unneeded noise in the debug print
2025-02-18Fix the lifted GotoLabel in Rust printing the function in Debug implMason Reed
This was causing a lot of extra noise, where the function is kept just to ref for the tag name
2025-02-18Fix Rust TagReference incorrectly holding a Tag referenceMason Reed
This caused a crash when a user called function.tags() on a function with tags
2025-02-17[SharedCache] Fix building on windows due to unresolved extern symbolsMason Reed
This is _probably_ the fix? I am not actually sure I am pushing so the CI can figure it out for me :)
2025-02-17[SharedCache] Remove using namespace statement from headersMason Reed
2025-02-17Don't fully initialize when in parseOnly modePeter LaFosse
2025-02-17Add long Symbol constructor for no namespace allocationMason Reed
This allows us to construct a symbol without constructing a namespace, while also giving us the ability to specify raw, long, short names
2025-02-17[SharedCache] Split out symbol processing into own functionMason Reed
Split out from https://github.com/WeiN76LQh/binaryninja-api/tree/process-local-symbols
2025-02-17[SharedCache] Define BackingCacheTypeWeiN76LQh
Split out from https://github.com/WeiN76LQh/binaryninja-api/tree/process-local-symbols
2025-02-17Fix misc Rust formattingMason Reed
2025-02-17Fix some misc Rust CMakeLists.txt issuesMason Reed
GLOB_RECURSE has been cut down a little bit to make configuring times reasonable
2025-02-17[SharedCache] Remove serialization of "unsigned long" in favor of uintX_tGlenn Smith
2025-02-17Fix assert on deserialize routines_command_64Glenn Smith
2025-02-17[SharedCache] Split state into initial, loaded, and modifiedMark Rowe
The initial state is initialized during `PerformInitialLoad` and is immutable after that point. This required some slight restructuring of how information about memory regions is tracked as that was previously modified as regions were loaded. Memory regions are now stored in a map from their address range to the `MemoryRegion` object. This makes it cheap to look them up by address which is a common operation. The modified state consists of changes since the last save to the `DSCView` / `ViewSpecificState`. This means it is no longer necessary to copy any state when mutating a `SharedCache` instance for the first time. Instead, its data structures start off empty and are populated as images, sections, or symbol information is loaded. The loaded state consists of all modified state that has since been saved. It lives on the `ViewSpecificState`. Saving modified state merges it into the the existing loaded state. This pattern is carried over to the `Metadata` stored on the `DSCView`. The initial state is stored under its own metadata key, and each modified state is stored under a key with an incrementing number. This means each save of the state only needs to serialize the state that changed, rather than reserializing all of the state all of the time. There are two huge benefits from these changes: 1. At no point does `SharedCache` have to copy its in memory state. The basic copy-on-write approach introduced in #6129 reduced how often these copies are made, but they're still frequent and very expensive. 1. At no point does `SharedCache` have to re-serialize state to JSON that it has already serialized. JSON serialization previously added hundreds of milliseconds to any mutating operation on `SharedCache`. As a result, this speeds up the initial load of the shared cache by around 2x and loading of subsequent images improves by about the same. One trade-off is that the serialization / deserialization logic is more complicated. There are two reasons for this: 1. The state is now split across multiple metadata keys and needs to be merged when it is loaded. 2. The in-memory representation uses pointers to identify memory regions. These relationships have to be re-established after the JSON is deserialized. As a future direction it is worth considering whether the logic owned by `SharedCache` could be split in a similar manner to the data. The initial loading of the cache header, loading of images, and handling of symbol information are all mostly independent and work on separate data. If the logic were split into separate classes it would be easier to reason about which data is valid when, and would easily permit concurrent loading of multiple images from the shared library in a thread-safe manner.
2025-02-17Add created at and created by to project browser info paneJosh Ferrell
2025-02-17Add action to project browser to download missing filesJosh Ferrell
2025-02-17Associate a RemoteProject to a Project when applicableJosh Ferrell
2025-02-14uidf refactorRyan Snyder
2025-02-14Update MemoryMap UI with better support for segment modifications.Brian Potchik
2025-02-14fix typo in il_function variable property in python apiJordan Wiens
2025-02-13Add missing test binaries for Rust APIMason Reed
2025-02-13Fix base detection in rust API failing on auto arch detectionMason Reed
Also added actual test for base address detection
2025-02-13Add licensing check for Rust codeMason Reed
If we add new rust dependencies we should now be alerted when a new license type is added.
2025-02-13[SharedCache] Use StringRef for performanceGlenn Smith
2025-02-13StringRef and direct access to symbol namesGlenn Smith
2025-02-13Remove bintxt pluginMason Reed
Binary Ninja now supports these formats in the core
2025-02-13Remove bintxt.Brian Potchik
2025-02-13Update MemoryMap UI Segment Columns.Brian Potchik
2025-02-13Fix leaking BNDataVariableAndName when calling BNGetDebugDataVariableBy ↵Mason Reed
functions
2025-02-13Set default analysis level in BASE to fullBrandon Miller
2025-02-12[SharedCache] Remove designator initializationMason Reed
Fixes MSVC C++17 failing to compile, hopefully.
2025-02-12[SharedCache] Don't pretty-print the metadataGlenn Smith
2025-02-12[SharedCache] Fix crash when trying to deserialize a `routines_command_64` ↵Mason Reed
which had not been serialized. We will just return early, this is fine as the previous code would effectively do the same thing.
2025-02-12[SharedCache] Fix misc compiler warningsMason Reed
These are from clang so there are still a bunch of warnings on GCC and MSVC
2025-02-12[SharedCache] Fix designator order for fieldsMason Reed
This apparently is not an issue on LLVM, but GCC and MSVC both seem to dislike this.
2025-02-12[SharedCache] Always initialize logger firstMason Reed
Potential nullptr deref on invalid view type (see the error log right after the logger init)