The ELF Tool Chain Project
- SF.Net project overview.
- Mailing Lists.
- Source Tree.
- Wiki Index.
- Source analysis by Ohloh.Net.
- Commit log search, by FreshBSD.org
- RSS feed of project activity.
- 2012/09/24: Release 0.6.1 is now available for download.
- 2011/11/16: Release 0.5.1 is now available for download.
About This Project
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.
|Tool||Description||Development Status||Owner||Repository Location||Comments|
|Native or POSIX-mandated Tools|
|as||Assembler.||planning||(see libmc, isa)|
|brandelf||Set/read the ELF brand for an executable.||released||brandelf/|
|c++filt||Translated encoded symbols.||released||kaiwang27||c++filt/|
|isa||Instruction set analyser||in development||jkoshy||isa/|
|ld||Link editor.||in development||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/|
|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||libelftc/|
|libmc||Machine/assembly code manipulation.||planning||For use in an optimizing linker, debugger and assember, program instrumentation tools, and the like.|
|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-test-suite||The test suite for the libdwarf library.||released||kaiwang27||test/libdwarf/|
|libelf||The test suite for the libelf library.||released||jkoshy||test/libelf/|
|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|
Open Project-Wide Tickets
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.
- The DWARF standard.
- The ERESI project---The ERESI Reverse Engineering Software Interface.
- The Libunwind project.
- The Linux Standard Base specification (v3.1).
- The NASM and YASM open source assemblers.
- The New Jersey Machine Code Toolkit.
- The Knit utility.
- The Solaris Linker and Libraries Guide.
- The PyDevTools project allows rapid prototyping of program development tools in Python.