Binary File Descriptor library
The BFD, or Binary File Descriptor library, is the
GNU Project's main mechanism for the portable manipulation of object files in a variety of formats. As of 2003, it supports approximately 50 file formats for some 25 processor architectures.
BFD works by presenting a common abstract view of object files. An object file has a "header" with descriptive info; a variable number of "sections" that each have a name, some attributes, and a block of data; a
symbol table; relocation entries; and so forth.
Internally, BFD translates the data from the abstract view into the details of the bit/byte layout required by the target processor and file format. Its key services include handling
byte orderdifferences, such as between a little-endianhost and big-endiantarget, correct conversion between 32-bitand 64-bitdata, and details of addressarithmetic specified by relocation entries.
Although BFD was originally designed to be a generic library usable by a wide variety of tools, its licensing under the GPL, and the frequent need to tinker with the API to accommodate new systems' capabilities has tended to limit its use; BFD's main clients are the
GNU Assembler(GAS), GNU Linker(GLD), and other GNU Binary Utilities("binutils") tools, and the GNU Debugger(GDB). As a result, BFD is not distributed separately, but is always included with releases of binutils and GDB. Nevertheless, BFD is a critical component in the use of GNU tools for embedded systems development.
The BFD lib can be used to read the structured data out of a
David Henkel-Wallaceof Cygnus Support proposed developing the library, as a way to open up new business opportunities for the company, Richard Stallmansaid (correctly) that it would be difficult; David's response was "BFD" (big fucking deal). This became the library name, [cite web
title = Binary File Descriptor Library manual — History
month = August
year = 2007
publisher = GNU Project
url = http://sourceware.org/binutils/docs/bfd/History.html#History
accessdate = 2008-04-08
quote = The name came from a conversation David Wallace was having with Richard Stallman about the library: RMS said that it would be quite hard—David said "BFD". Stallman was right, but the name stuck.] and "Binary File Descriptor" was invented later as the meaning of the letters.
* [http://sources.redhat.com/binutils/ Binutils page, with access to current BFD sources]
Wikimedia Foundation. 2010.