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 order differences, such as between a little-endian host and big-endian target, correct conversion between 32-bit and 64-bit data, and details of address arithmetic 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 Core Dump.


When David Henkel-Wallace of Cygnus Support proposed developing the library, as a way to open up new business opportunities for the company, Richard Stallman said (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 =
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.


External links

* [ Binutils page, with access to current BFD sources]

Wikimedia Foundation. 2010.

Look at other dictionaries:

  • Library (computing) — This article is about the programming concept. For Windows 7 Libraries, see Features new to Windows 7#Libraries. Illustration of an application which uses libvorbisfile to play an Ogg Vorbis file In computer science, a library is a collection of… …   Wikipedia

  • File locking — is a mechanism that enforces access to a computer file by only one user or process at any specific time. The purpose of locking is to prevent the classic interceding update scenario. The interceding update problem may be illustrated as in the… …   Wikipedia

  • Object file — OBJ file redirects here. For specific format used on DOS, see Relocatable Object Module Format. In computer science, an object file is an organized collection of separate, named sequences of machine code[citation needed]. Each sequence, or object …   Wikipedia

  • C file input/output — C Standard Library Data types Character classification Strings Mathematics File input/output Date/time Localiza …   Wikipedia

  • Glossary of library and information science — This page is a glossary of library and information scienceAlphanumericTOC align=center nobreak= numbers= externallinks= references= top=|A*abstract a brief set of statements that summarize, classifies, evaluates, or describes the important points …   Wikipedia

  • ZIP (file format) — unzip redirects here. For the program, see Info ZIP. ZIP Filename extension .zip .zipx (newer compression algorithms) Internet media type application/zip Uniform Type Identifier archive Magic …   Wikipedia

  • Core dump — A core dump gets its name from an old memory technology using tiny magnetic cores, shown here at 50x magnification. In computing, a core dump (more properly a memory dump or storage dump) consists of the recorded state of the working memory of a… …   Wikipedia

  • GNU linker — Infobox Software name = GNU linker caption = collapsible = author = GNU Project developer = GNU Project released = latest release version = latest release date = latest preview version = latest preview date = frequently updated = programming… …   Wikipedia

  • GNU Binutils — Infobox Software name = GNU Binutils caption = developer = GNU Project latest release version = 2.18 (August 2007) operating system = genre = programming tools license = GPL website = [… …   Wikipedia

  • GNU Debugger — infobox software developer = GNU Project released = 1986 latest release version = 6.8 latest release date = March 27, 2008 operating system = genre = Debugger license = GPL website = [] The… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”

We are using cookies for the best presentation of our site. Continuing to use this site, you agree with this.