summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2025-02-10[SharedCache] Optimizations regarding stl container usage in SharedCache.cppkat
2025-02-10Fix some issues regarding allocations within the sharedcache plugin FFIkat
2025-02-10[SharedCache] Make `m_exportInfos` map's values a `shared_ptr`WeiN76LQh
This avoids expensive copying when returning a value from the map in `SharedCache::GetExportListForHeader`. Additionally it ensures that the value stays alive and at the same location in memory if `m_exportInfos` is modified and requires its storage to be re-allocated. I was unable to use a `unique_ptr` instead of a `shared_ptr` because of copy semantics with `m_exportInfos` in `ViewStateCacheStore`. I don't see things being any worse using `shared_ptr` instead of `unique_ptr` anyway and it means less code changes.
2025-02-10[SharedCache] Only setup undo actions and bulk modify in ↵WeiN76LQh
`SharedCache::FindSymbolAtAddrAndApplyToAddr` if a symbol is found
2025-02-10[SharedCache] Improve the types for `m_exportInfos`WeiN76LQh
This commit changes 2 things; 1. `m_exportInfos` is now a map where its values are also a map rather than a vector of pairs. The reason for this is that `SharedCache::FindSymbolAtAddrAndApplyToAddr` is a hot path which does by far the most accesses to `m_exportInfos`. In that function it must find the correct symbol for a given address so a map lookup will be much quicker than iterating a vector. The other use cases of `m_exportInfos` would prefer a vector but they are executed very infrequently. 2. The symbols are stored in `m_exportInfos` as references to the `Symbol` type. This makes more sense because otherwise there is a lot of time spent converting to and from a `Symbol` type and a pair of `BNSymbolType` + a `std::string`.
2025-02-10[SharedCache] Add parameter to `SharedCache::InitializeHeader` to check if ↵WeiN76LQh
`m_exportInfos` was modified This probably makes more sense than the current solution of using execution of the callback parameter to determine if `m_exportInfos` was modified.
2025-02-10[SharedCache] Use `m_exportInfos` as an export list cacheWeiN76LQh
`SharedCache::ParseExportTrie` is getting called a lot during DSC library loading and analysis. In large part due to the hot path `SharedCache::FindSymbolAtAddrAndApplyToAddr`. Its unnecessary for it to be being called more than once per DSC header as the export list symbol information is stored in `SharedCache::m_exportInfos`. This commit adds the function `SharedCache::GetExportListForHeader`, which will either return the header's list of symbol information cached in `SharedCache::m_exportInfos` or call `SharedCache::ParseExportTrie` and cache the results in `SharedCache::m_exportInfos`. This should also improve the execution time of `SharedCache::LoadAllSymbolsAndWait`. Further improvement here would be to add locking to `SharedCache::GetExportListForHeader` so that races don't result in redundant parsing of the export trie for the same header if multiple threads call `SharedCache::GetExportListForHeader` at the same time for the same header. This only really matters during initial loading because from what I can tell that parses all the export trie's anyway.
2025-02-07Fix misc Rust example unused varMason Reed
2025-02-07Implement Rust BaseAddressDetectionRubens Brandao
2025-02-07Implement Rust DisassemblyTextRendererRubens Brandao
2025-02-07Implement Rust WebsocketProviderRubens Brandao
2025-02-07Fix incorrect casts in Rust RepositoryPluginMason Reed
Was causing linux arm builds to fail
2025-02-07Add server error to EnterpriseCheckoutError::RefreshExpiredLicenseFailedMason Reed
2025-02-07Move session registration for Rust headless initialization to be immediateMason Reed
This fixes a possible race if another thread can successfully shutdown before the current thread can register its session
2025-02-07Fix Rust LinearDisassemblyLine not freeing properlyMason Reed
2025-02-07Update types Rust test to check for type deletionMason Reed
2025-02-07Fix secrets_provider Rust tests failing for enterprise buildsMason Reed
Try and just initialize once
2025-02-06Update Rust tests to respect image baseMason Reed
2025-02-06Fix BinaryReader and BinaryWriter not respecting image base in Rust APIMason Reed
2025-02-06Fix rust decompile exampleMason Reed
2025-02-06Misc rust API formattingMason Reed
2025-02-06Fix double ref increment for misc Repository C++ APIsMason Reed
Noticed these when reviewing the Rust Repository API
2025-02-06Correctly quote the string in the Debug impl for BnStringMason Reed
2025-02-06Implement Rust RepositoryRubens Brandao
2025-02-06Implement Rust SecretsProviderRubens Brandao
2025-02-06Add ability to query IL functions in FlowGraph for Rust APIMason Reed
2025-02-06Add simple type to view test for Rust APIMason Reed
2025-02-06[mips] Fix decoding of MIPS ds*32 instructions, add lifting for MIPS drotr* ↵Galen Williamson
instructions; clean up some warnings in powerpc/il.cpp
2025-02-06Add After variants for looking up variables at instructionsGlenn Smith
Fixes #6397
2025-02-05fix mis-named type library action in docsJordan Wiens
2025-02-05correct user/auto api differences explanationJordan Wiens
2025-02-05Stop importing Type Archive types in parse_type_stringGlenn Smith
CC Vector35/binaryninja-api#6235
2025-02-05Fixes: Unsupported ELF relocations: R_ARM_THM_MOVW_ABS_NC, ↵Galen Williamson
R_ARM_THM_MOVT_ABS #6215
2025-02-05Search item descriptions in project browserJosh Ferrell
2025-02-04Fixes `Architecture._get_stack_pointer_register` to return 0 instead of None ↵Galen Williamson
when unimplemented to prevent ctypes error
2025-02-04Update to Qt 6.8.2Rusty Wagner
2025-02-04Fix misc rust formattingMason Reed
2025-02-04Fix crash with unnamed function self reference in DWARF importMason Reed
2025-02-04Avoid crashing when initial type parse fails in DSCViewkat
2025-02-04Firmware Ninja relationships APIBrandon Miller
2025-02-04Do not call callbacks on IL instruction when the instruction index is ↵Xusheng
invalid. Fix https://github.com/Vector35/binaryninja-api/issues/6320
2025-02-03Fix leak in Render Layer apiGlenn Smith
2025-02-03Greatly improve performance of memory map viewJosh Ferrell
2025-02-03update enumeration example api docsJordan Wiens
2025-02-03Add option to support auto parsing text formats.Brian Potchik
2025-02-03Fix documentation around `LLIL_MUL`Dusk Banks
`mul` is aligned with at least what x86 returns for tokens. Signed-off-by: Dusk Banks <me@bb010g.com>
2025-02-02Fix Rust apply_to_linear_object logic applying non basic block backed disasm ↵Mason Reed
lines
2025-02-02Fix upper 16 registers not being listed in ARMv7 register list operandMason Reed
Fixes #6383
2025-02-02Fix QualifiedName being leaked in function UserTypeReference related functionsMason Reed
2025-02-02Fix crash in dwarf import when no constant value attribute found for enumerationMason Reed
Fixes #6382