World Library  
Flag as Inappropriate
Email this Article

Binary File Descriptor library

Article Id: WHEBN0000337343
Reproduction Date:

Title: Binary File Descriptor library  
Author: World Heritage Encyclopedia
Language: English
Subject: C++ libraries, C libraries, Objdump, Executable file formats, GNU Project software
Collection: C Libraries, Executable File Formats, Free Computer Libraries, Gnu Project Software
Publisher: World Heritage Encyclopedia

Binary File Descriptor library

Binary File Descriptor library
Original author(s) Cygnus Solutions
Written in C
Type Library
License GNU General Public License

The Binary File Descriptor library (BFD) 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.


  • History 1
  • Design 2
  • References 3
  • External links 4


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 that it would be difficult; David's response was "Big Fucking Deal". Abbreviated to "BFD", this became the library name.[1] "Binary File Descriptor" was invented later as a backronym for "BFD".


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 has 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, the frequent need to tinker with the API to accommodate new systems' capabilities has tended to limit its use;[2][3][4] 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 library can be used to read the structured data out of a core dump.


  1. ^ "Open Sources: Voices from the Open Source Revolution". O'Reilly. January 1999. Retrieved 2011-11-11. Gumby began designing the library and discussing the design with Stallman. Stallman said that the job was too difficult—it would require a complete rewrite of all the tools, and it would be too difficult to maintain. Gumby told him it wasn't such a "Big F*cking Deal" and hence named this new creation the BFD library. (We explained to our customers that BFD stood for the binary file descriptor library.) 
  2. ^ Langasek, Steve (2005-05-22). "Re: depending on shared libbfd from binutils-dev". debian-devel (Mailing list). Retrieved 2011-04-03. 
  3. ^ Kuratomi, Toshio (2010-06-04). "binutils once more". Fedora-packaging (Mailing list). Retrieved 2011-04-03. 
  4. ^ Taylor, Ian (2003-09-12). "Re: FreeBSD 4.6 - binutils 2.14 installs useless libbfd". binutils (Mailing list). Retrieved 2011-04-03. 

External links

  • Binutils page, with access to current BFD sources
This article was sourced from Creative Commons Attribution-ShareAlike License; additional terms may apply. World Heritage Encyclopedia content is assembled from numerous content providers, Open Access Publishing, and in compliance with The Fair Access to Science and Technology Research Act (FASTR), Wikimedia Foundation, Inc., Public Library of Science, The Encyclopedia of Life, Open Book Publishers (OBP), PubMed, U.S. National Library of Medicine, National Center for Biotechnology Information, U.S. National Library of Medicine, National Institutes of Health (NIH), U.S. Department of Health & Human Services, and, which sources content from all federal, state, local, tribal, and territorial government publication portals (.gov, .mil, .edu). Funding for and content contributors is made possible from the U.S. Congress, E-Government Act of 2002.
Crowd sourced content that is contributed to World Heritage Encyclopedia is peer reviewed and edited by our editorial staff to ensure quality scholarly research articles.
By using this site, you agree to the Terms of Use and Privacy Policy. World Heritage Encyclopedia™ is a registered trademark of the World Public Library Association, a non-profit organization.

Copyright © World Library Foundation. All rights reserved. eBooks from Project Gutenberg are sponsored by the World Library Foundation,
a 501c(4) Member's Support Non-Profit Organization, and is NOT affiliated with any governmental agency or department.