ELF abisum

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

ELF abisum Ranking & Summary

Advertisement

  • Rating:
  • License:
  • The Apache License 2.0
  • Price:
  • FREE
  • Publisher Name:
  • Satoru Takabayashi and Google
  • Publisher web site:

ELF abisum Tags


ELF abisum Description

ELF abisum is a tool to generate an ABI checksum of ELF binaries from their DWARF debug information. 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; fiNote that to use abisum in a build process, DSOs should be built with -g option of GCC, that inserts DWARF debug information into binaries.Installation: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.


ELF abisum Related Software