ELF abisum 0.1

ELF abisum is a tool to generate an ABI checksum of ELF binaries from their DWARF debug information.

  Add it to your Download Basket!

 Add it to your Watch List!


Rate it!
send us
an update
The Apache License 2.0 
3.0/5 7
Satoru Takabayashi and Google
ROOT \ Programming \ Assembler Tools
ELF abisum is a tool to generate an ABI checksum of ELF binaries from their DWARF debug information. The DWARF debug information contains lots of useful bits for checking ABIs, including types of variables, members of structs, signatures of functions, etc.

The goal of ELF abisum is to make a build process faster by reducing unnecessary relinking of binaries.

Suppose you develop a program using lots of DSOs (Dynamic Shared Objects, aka .so files) and there are dependencies to the DSOs in your Makefile like:

foobar: liba.so libb.so libc.so libd.so ...
gcc -o foobar -L. -la -lb -lc -ld ...

In this case, every time you make a small change in a DSO, you need to relink the all DSOs to the dynamic executable foobar. The time to relink isn't negligible if the number of DSOs is big. In theory, the relinking isn't always necessary. If there are no ABI changes in a DSO, there is no need to relink the DSO to a dynamic executable that depends on the DSO.

ELF abisum is developed to solve this problem by reducing unnecessary relinking of binaries. Using abisum, the Makefile above could be rewritten as follows:

foobar: liba.abi libb.abi libc.abi libd.abi ...
gcc -o foobar -L. -la -lb -lc -ld ...

liba.abi: liba.so
abisum liba.so > liba.abi.tmp
if ! cmp -s liba.abi.tmp liba.abi; then mv liba.abi.tmp liba.abi; fi

Note that to use abisum in a build process, DSOs should be built with -g option of GCC, that inserts DWARF debug information into binaries.


The simplest way to compile this package is:

1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. If you're using `csh' on an old version of System V, you might need to type `sh ./configure' instead to prevent `csh' from trying to execute `configure' itself.

Running `configure' takes awhile. While running, it prints some messages telling which features it is checking for.

2. Type `make' to compile the package.

3. Optionally, type `make check' to run any self-tests that come with the package.

4. Type `make install' to install the programs and any data files and documentation.

5. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution.

Last updated on June 30th, 2008

#ABI checksum #debug information #ELF binary #ELF #binary #ABI #checksum

Add your review!