The Ada-BFD is a library which provides Ada API for GNU Binutils BFD library. It works on any version of GNU Binutils (starting at 2.15). The recommended version for GNU Binutils is at least the 2.39.
The Ada-BFD library allows to:
- list and scan the ELF sections of an executable or object file,
- get the content of the ELF sections,
- get access to the symbol table,
- use the BFD disassembler
The Ada BFD library is distributed under the GNU GENERAL PUBLIC LICENSE, Version 2 (see COPYING).
The unit tests used by Ada BFD use the Ada Util and Ada Test Util libraries distributed under the Apache License Version 2 (see testutil/LICENSE.txt). They also use the Ahven Unit Test Library distributed under the ISC license (see testutil/LICENSE.Ahven). These unit test libraries are not installed.
- Fix #7: Binutils 2.39 changed init_disassemble_info signature
- Fix #8: The dynamic minisymbols are not loaded by Bfd.Symbols.Read_Symbols
To compile Ada BFD you'll need:
- an Ada compiler (gcc 12.1).
- the binutils 2.39 or higher installed for development. You need the bfd.h include as well as libbfd and libiberty. On Debian systems (including Ubuntu) install the development packages by using:
sudo apt-get install binutils-dev libiberty-dev
On NetBSD 9.2, you need to install by using:
sudo pkg_add binutils
sudo pkg_add gettext-lib
sudo pkg_add libiberty
Run the GNU configure command and build the library:
./configure
make
make check
You can install the library by using:
make install
You can also build the Ada BFD library with Alire by using (but the
dependency to the binutils-dev
is not handled by the crate):
alr build
Several samples are provided to show how to use the Ada BFD library. To build them, use:
make samples
Example | Usage example | Description |
---|---|---|
bfdinfo | ./bin/bfdinfo ./bin/bfdgen | Open BFD file, get flags, list sections and symbols |
sections | ./bin/sections ./bin/bfdgen | Display the ELF sections with the Bfd.Sections |
symbol | ./bin/symbol ./bin/bfdgen main | Read the symbol table with Bfd.Symbols |
disassemble | ./bin/disassemble ./bin/bfdgen | Disassemble the text section with Bfd.Disassemble |
- Muen Separation Kernel, An x86/64 Separation Kernel for High Assurance
- Memory Analysis Tool