1. Summary
  2. Files
  3. Support
  4. Report Spam
  5. Create account
  6. Log in


The Elftoolchain Project has migrated to SourceForge.Net's Allura system.

Please visit http://elftoolchain.sourceforge.net/ instead.

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 (see libmc, isa)
brandelf Set/read the ELF brand for an executable. released 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. 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/
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 libelftc/
libmc Machine/assembly code manipulation. planning For use in an optimizing linker, debugger and assember, program instrumentation tools, and the like.
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-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

Getting Started

Open Project-Wide Tickets

Ticket Status Owner Milestone Summary
#28 new jkoshy RELEASE_1_0 Testing for memory leaks
#30 new jkoshy Future Work Restrict symbol visibility and use of relocations in our libraries
#273 assigned jkoshy RELEASE_1_0 Document the project's coding style
#279 accepted jkoshy RELEASE_1_0 Create tools to ease building the project's source code on multiple OSes
#286 new jkoshy RELEASE_1_0 Package up the project's manual pages
#288 new jkoshy RELEASE_1_0 Setup infrastructure to perform test coverage measurements
#293 new jkoshy Future Work Localization of messages
#306 new jkoshy Future Work Supporting systems with case-insensitive file systems
#321 assigned jkoshy Future Work Patch to get libraries and applications building with autotools
#336 new jkoshy RELEASE_1_0 Support for Fedora
#352 new jkoshy RELEASE_1_0 Revisit the use of binary data files in test suites
#359 new jkoshy RELEASE_1_0 Configure TET correctly on NetBSD/amd64
#367 accepted jkoshy RELEASE_1_0 Code review and code cleanups
#370 new jkoshy RELEASE_1_0 Code duplication in ar(1) and elfcopy(1)
#373 accepted jkoshy RELEASE_1_0 Port the project to OpenBSD
#374 accepted jkoshy RELEASE_1_0 Darwin support.
#377 new jkoshy RELEASE_1_0 Implement "libar"
#384 new jkoshy Future Work Refactoring: move common code in elfcopy/mcs/strip to a library
#385 new jkoshy RELEASE_1_0 Port the project to OpenIndiana
#386 new jkoshy RELEASE_1_0 dwarf_srclines() should sort line number array since dwarf line numbers are not always globally sorted in .debug_line
#388 accepted jkoshy RELEASE_1_0 File descriptor exhaustion under Minix
#391 accepted jkoshy Future Work [PATCH] GNU/kFreeBSD build fixes
#393 new jkoshy RELEASE_1_0 Scan sources for typos in user messages
#395 accepted jkoshy Trac Hosting Migrate Trac to SF.Net's Allura
#399 assigned jkoshy Future Work Support building on the Android OS
#410 accepted jkoshy RELEASE_1_0 Merge requests for v0.6 -stable
#432 new jkoshy RELEASE_1_0 Avoid "dead assignment" LLVM scan-build warnings (2)
#433 new jkoshy RELEASE_1_0 Fix wrong amount of malloc() byte allocation

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.

Related Reading