BFDライブラリ

BFDライブラリ（ビーエフディーライブラリ、"Binary File Descriptor Library")は、GNUプロジェクトにおいて、各種のオブジェクトファイルを取り扱う主要なメカニズムである。2003年時点で、約50のファイルフォーマットと約25のプロセッサ・アーキテクチャをサポートしている。
BFDライブラリは、オブジェクトファイルに共通の抽象的なビューを与えることにより動作する。オブジェクトファイルは、それぞれが名前・属性・データブロックを持つ複数の「セクション」、シンボルテーブル、リロケータブルバイナリのエントリ、を記述する「ヘッダ」を持つ。
内部的にBFDライブラリは、データを抽象的な形式から対象のプロセッサやファイルフォーマットが要求するビット／バイトレイアウトの形式に変換する。その主要なサービスはバイトオーダーの違いを取り扱うことである。例えば、リトルエンディアンのホストでのビッグエンディアンのターゲットの扱い、32ビットと64ビットの間の正しいデータ変換、再配置エントリによって決定されるアドレス演算の手順のようなものである。
BFDライブラリは当初、多種多様なツールから利用できる一般的なライブラリとして設計されていたが、GPLでのライセンシング、新しいシステムの特性に対応するためのAPIの頻繁な調整により、利用は抑えられる傾向にあった。BFDライブラリの主要な利用者は、GNUアセンブラ (GAS)、GNUリンカ (GLD)、他のGNU Binutilsのツール、GNUデバッガ (GDB) である。結果として、BFDライブラリ自体が独立して配布されることはなく、binutilsとGDBのリリースに同梱されている。いずれにせよ、BFDライブラリは組み込みシステム向け開発のためのGNUツールの重要な構成要素である。
BFDライブラリは、コアダンプで出力された構造体データを読むためにも利用される。
歴史.
シグナスサポートのデビット・ヘンケル・ウォレスが、会社に新しいビジネスチャンスを開く方法として、このライブラリの開発を提案したとき、リチャード・ストールマンはそれは困難だろうと言ったが、デビットはそれは "Big Fucking Deal"、すなわち「たいしたこと」ではない、と請け負った。これがライブラリの名前となり、後に"Binary File Descriptor"がBFDのバクロニムとして考案された。