Jump to content

Библиотека дескрипторов двоичных файлов

Библиотека дескрипторов двоичных файлов
Оригинальный автор(ы) Лебедь Решения
Репозиторий
Написано в С
Тип Библиотека
Лицензия Стандартная общественная лицензия GNU

Библиотека дескрипторов двоичных файлов ( BFD ) — это основной механизм проекта GNU для переносимого манипулирования объектными файлами в различных форматах. По состоянию на 2003 год Он поддерживает около 50 форматов файлов и 25 архитектур наборов команд .

Когда Дэвид Хенкель-Уоллес из Cygnus Support предложил развивать библиотеку как способ открыть для компании новые возможности для бизнеса, Ричард Столлман сказал, что это будет сложно; Ответ Дэвида заключался в том, что это не было такой уж «чертовски большой сделкой». Сокращенно до «BFD» это стало названием библиотеки. [ 1 ] «Дискриптор двоичного файла» был изобретен позже как бэкроним для «BFD».

BFD работает, предоставляя общее абстрактное представление объектных файлов. Объектный файл имеет «заголовок» с описательной информацией; переменное количество «разделов», каждый из которых имеет имя, некоторые атрибуты и блок данных; таблица символов ; записи о переезде ; и так далее.

Внутри BFD преобразует данные из абстрактного представления в детали расположения битов/байтов, необходимые целевому процессору и формату файла. Его ключевые услуги включают обработку различий в порядке байтов , например, между с прямым порядком байтов хостом и целью с прямым порядком байтов , правильное преобразование между 32-битными и 64-битными данными, а также детали арифметики адресов , указанные в записях перемещения.

БФД [ 2 ] Библиотеку можно логически разделить на две части. Фронт-энд и бэк-энд. Внешний интерфейс предоставляет общий интерфейс, независимый от базового представления объектного файла. Пользователи будут взаимодействовать с объектными файлами с помощью этого интерфейса. Даже если расположение объектных файлов не известно пользователю, он все равно сможет использовать интерфейс. Это сокрытие деталей осуществляется с помощью серверной части. Серверная часть реализует взаимодействие внешнего интерфейса с макетом объектных файлов. Всякий раз, когда вводится новый тип объектных файлов, серверной части необходимо зарегистрировать этот тип и реализовать его, если он должен поддерживаться приложением BFD.

Хотя BFD изначально разрабатывался как универсальная библиотека, которую можно было бы использовать с помощью самых разных инструментов, частая необходимость дорабатывать API для соответствия возможностям новых систем имела тенденцию ограничивать ее использование; [ 3 ] [ 4 ] [ 5 ] Основными клиентами BFD являются GNU Assembler (GAS), GNU Linker (GLD) и другие инструменты GNU Binary Utilities («binutils»), а также GNU Debugger (GDB). В результате BFD не распространяется отдельно, а всегда включен в выпуски binutils и GDB. Тем не менее, BFD является важнейшим компонентом использования инструментов GNU для разработки встраиваемых систем .

Библиотеку BFD можно использовать для чтения структурированных данных из дампа ядра .

Использование библиотеки BFD

[ редактировать ]

Например: Распечатайте размер объектного файла с помощью API библиотеки bfd.

#include "bfd.h"
#include <stdio.h>

int main()
{
  bfd* abfd = bfd_openr("a.o",NULL); 
  printf("%llu\n", bfd_get_size(abfd));
  return 0;
}

Команда сборки:

gcc main.c -lbfd -o output
./output # prints the size
  1. ^ «Открытые исходные коды: голоса революции открытого исходного кода» . О'Рейли. Январь 1999 года . Проверено 11 ноября 2011 г. Гамби начал проектировать библиотеку и обсуждать дизайн со Столлманом. Столлман сказал, что работа слишком сложна — потребуется полностью переписать все инструменты, и ее будет слишком сложно поддерживать. Гамби сказал ему, что это не такое уж «большое дело», и поэтому назвал это новое творение библиотекой BFD. (Мы объяснили нашим клиентам, что BFD означает библиотеку дескрипторов двоичных файлов.)
  2. ^ [1] Спецификация BFD
  3. ^ Лангасек, Стив (22 мая 2005 г.). «Re: в зависимости от общего libbfd из binutils-dev» . debian-devel (список рассылки) . Проверено 3 апреля 2011 г.
  4. ^ Куратоми, Тошио (4 июня 2010 г.). «binutils еще раз» . Упаковка Fedora (список рассылки) . Проверено 3 апреля 2011 г.
  5. ^ Тейлор, Ян (12 сентября 2003 г.). «Re: FreeBSD 4.6 — binutils 2.14 устанавливает бесполезную libbfd» . binutils (список рассылки) . Проверено 3 апреля 2011 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 6e2714fdf66c3beadaa7dc6001670621__1721420940
URL1:https://arc.ask3.ru/arc/aa/6e/21/6e2714fdf66c3beadaa7dc6001670621.html
Заголовок, (Title) документа по адресу, URL1:
Binary File Descriptor library - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)