Joseph Koshy Ed Maste

The ELF Tool Chain Project


About This Project

We maintain BSD licensed implementations of essential compilation tools and libraries for building and analyzing ELF based program images.

Supported Operating Systems

Our source code is known to work on the following operating systems:

Why is this project useful?

This project provides tools for program development. Notably:

  • Our code is structured as a set of tools written using a set of well-documented libraries. This approach comes in useful when custom tools for manipulating ELF programs and shared libraries are desired.
  • We strive to keep to the traditional BSD standard for quality in code and documentation. We strive to 'Do The Right Thing'.
  • Our code is licensed under a liberal license.
  • As a project, we strive to make our decisions in a transparent and inclusive manner.

What are the shortcomings of this project?

  • Our code is relatively new, it has not seen the level of adoption that the GNU binutils code base has.
  • Our code base only deals with ELF objects; other object file formats are not supported.
  • Our development team is small, comprising of volunteers.

How do I help?

  • Please join the mailing list; let us know how you are using our code and how your experience has been.
  • Please review our code and documentation; let us know if you find a bug.
  • Pick up a ticket from our list of open tickets, and send in fixes.
  • We need help in setting up build and test automation for the OSes we support, please see [BuildAutomation].

Implementation Status

Tool Description Development Status Owner Repository Location Comments
Native or POSIX-mandated Tools
ar Archive manager. released kaiwang27 ar/
as Assembler. planning jkoshy as/ (see libmc, isa)
brandelf Set/read the ELF brand for an executable. released kaiwang27 brandelf/
c++filt Translated encoded symbols. released kaiwang27 c++filt/
elfdump Diagnostic tool. released kaiwang27 elfdump/
isa Instruction set analyser in development jkoshy isa/
ld Link editor. alpha kaiwang27 ld/
nm List symbols in an ELF object. released hglee nm/
mcs Manage comment sections in ELF objects. released kaiwang27 elfcopy/
ranlib Generate an archive symbol table. released kaiwang27 ar/
size List ELF object sizes. released samarunraj size/
strings Extract printable strings from an ELF object. released samarunraj strings/
strip Discard information from objects. released kaiwang27 elfcopy/
GNU Tools
addr2line Debug tool. released kaiwang27 addr2line/
elfcopy Copy and translate between object formats. released kaiwang27 elfcopy/
findtextrel Find undesired text relocations. released kaiwang27 findtextrel/
objdump Display object information. planning Merge with elfdump?
readelf Display ELF information. released kaiwang27 readelf/
Libraries and API sets
libdwarf A library for parsing DWARF debug information. released kaiwang27 libdwarf/ "pfgshield-freebsd" (email suppressed) notes that early versions of SGI's libdwarf library were released under a non-GPL'ed license.
libelf A library for reading and writing ELF objects. released jkoshy libelf/
libelftc Common code used by tools. released jkoshy libelftc/
libmc Machine/assembly code manipulation. planning jkoshy For use in an optimizing linker, debugger and assember, program instrumentation tools, and the like.
libpe A library for reading and writing Portable Executableâ„¢objects alpha kaiwang27 libpe/
Test Suites
ar The test suite for the `ar` utility. released kaiwang27 test/ar/
elfcopy The test suite for `elfcopy` utility. released kaiwang27 test/elfcopy/
elfdump The test suite for `elfdump` utility. released kaiwang27 test/elfdump/
libdwarf The test suite for the libdwarf library. released kaiwang27 test/libdwarf/
libelf The test suite for the libelf library. released jkoshy test/libelf/
libelftc The test suite for the libelftc library. alpha jkoshy test/libelftc/
nm The test suite for the nm utility. released test/nm/
size The test suite for the size utility. planning See ticket #9.
strings The test suite for the `strings` utility. planning See ticket #10.
Manual pages Reference documentation. released jkoshy multiple locations Each utility and library API has a manual entry.
libelf by Example Tutorial introduction to programming with libelf. released jkoshy documentation/libelf-by-example
libdwarf by Example An introduction to DWARF and libdwarf. planning jkoshy TBD

Getting Started

Project History

This work was originally a part of the FreeBSD Project; it has been moved to SourceForge.Net to encourage wider participation from the open-source developer community.


Wiki: BuildAutomation
Wiki: BuildingFromSource
Wiki: ElfToolChainAdvocacy
Wiki: PortingNotes
Wiki: Releases-Release0.5.1
Wiki: Releases-Release0.6.1
Wiki: Releases-Release0.7.1
Wiki: Releases