-
Notifications
You must be signed in to change notification settings - Fork 194
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Consider an ABI extension to define metadata for binary analysis #297
Comments
Other useful pieces of info for binary analysis reconstruction of control flow graphs include:
|
|
|
One of the extension that could be potentially utilized now to identify BB and Funcs from LLVM side, could be Basic Block Address Map: https://llvm.org/docs/Extensions.html#sht-llvm-bb-addr-map-section-basic-block-address-map The basic block address map was used in a similar to BOLT(compiler/linker level but non for binary level) tooling to let correctly map profiled sampled information related to Funcs/BBs. The disadvantage - this BBAddrMap is presented only for LLVM/CLANG. Regarding jump tables, maybe considering something like: https://llvm.org/docs/Extensions.html#sht-llvm-jt-sizes-section-jump-table-addresses-and-sizes |
A slightly different topic, but it seems also related to the ABI-like agreement on BOLT binary rewriting and stripping tools expectations. Issues reported on that: |
Thank you for all the comments and suggestions. It looks like there is sufficient interest to go forward with this. Most likely in the form of an ABI extension that can be worked on incrementally with an implementation. We'll have more to say next year. |
Another reference we can take ideas from: google/android-riscv64#68 |
With increasing adoption of tools like BOLT and use of binary analysis by the Linux kernel, there may be demand for additional metadata to aid control flow discovery.
Examples include:
If there are to be metadata added to toolchains such as LLVM and GCC, it would be useful to document these in the ABI to help with interoperability of tools.
This issue is a placeholder for further discussion.
The text was updated successfully, but these errors were encountered: