| Age | Commit message (Collapse) | Author |
|
Previously you must have written the type library to disk
|
|
to be considered for heuristic calling convention detection
|
|
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
|
|
container file entries.
|
|
A `BN_DEPRECATED` macro is introduced that expands to a `[[deprecated(msg)]]`
attribute. Using functions that are annotated as deprecated will
generate a compiler warning. This should help make users aware that they
should migrate to replacement APIs.
|
|
|
|
|
|
documentation.
|
|
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.
|
|
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.
|
|
|
|
|
|
Fixes https://github.com/Vector35/binaryninja-api/issues/7666.
Correctly managing the state of bulk symbol modifications via
`BeginBulkModifySymbols` / `EndBulkModifySymbols` is error-prone in the
face of exceptions and early returns. Leaking a bulk symbol modification
can leave the view in a state where no further changes to symbols will
be applied.
All users of the C++ API are encouraged to move from
`BeginBulkModifySymbols` / `EndBulkModifySymbols` to the new
`BulkSymbolModification` class.
|
|
|
|
|
|
|
|
|
|
consistent, lock-free AnalysisContext queries.
|
|
|
|
|
|
|
|
Loggers are not owned by a specific thread and many are used by multiple threads. The indenting APIs could not be made to be thread safe in any way as they exist, so they have been removed. The data races caused by the indenting APIs are actually an important stability issue that could cause the indentation level to go out of bounds and crash the product.
If you were using the indentation APIs, you will need to rewrite the usage to manually manage the indentation level in a thread safe way.
|
|
This reverts commit 72fcf44f3731ade3cf1310da55f633f1cb9069ce.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Also adds support for parsing bitfields in PDB, DWARF and SVD plugins
WIP: API needs to be considered more, also need to find type related apis that may need to be rethought.
|
|
|
|
|
|
These types are heavily used as map keys so allowing the compiler to
inline these functions makes map lookups cheaper.
|
|
|
|
|
|
|
|
Add note about type_names not being sorted anymore
|
|
|
|
|
|
|
|
|
|
container transforms.
|
|
the payload.
|
|
|
|
|
|
adjustments of the same confidence
A call type adjustment set via `SetAutoCallTypeAdjustment` will only
take effect if any existing call type adjustment, automatic or
user-defined, is of a lower confidence level. This ensures that user
call type adjustments with full confidence will not be overridden by
a workflow.
Similar changes have been made to `SetAutoCallStackAdjustment`,
`SetAutoInlinedDuringAnalysis` and the overload of
`SetAutoCallRegisterStackAdjustment` that adjusts a single register
stack.
|
|
|
|
To avoid non-determinism and provide consistent behavior in all cases,
now only confidence, symbol type, and name are considered when
disambiguating multiple symbols at the same address.
The previously documented behavior was not what was implemented. While
recency was considered in some cases for disambiguating symbols at the
same address, respecting it consistetly results in non-deterministic
behavior when symbols are being added concurrently by multiple sources.
|
|
address are handled"
This reverts commit 6293afcb4e10997838f94c38430feba9742bea75.
|
|
handled
|