Кіріспе

Бинарлық файлдарды сипаттаушы кітапханасы (Binary File Descriptor - BFD) — әр түрлі форматтағы объект файлдарын портативті түрде өңдеуге арналған GNU жобасының негізгі құралы. 2003 жылғы мәліметтер бойынша, ол шамамен 25 процессор архитектурасы үшін 50-ге жуық файл форматтарын қолдайды.

Тарих

Цигнус Саппорт компаниясының Дэвид Хенкель Уоллес кітапхананы компанияға жаңа бизнес мүмкіндіктерін ашу жолы ретінде дамытуды ұсынғанда, Ричард Столлман мұның қиын болатынын айтты; Дэвидтің жауабы бұл "үлкен мәселе емес" болды. "BFD" деп қысқартылған бұл кітапхананың аты болды. "Биналық файл дескрипторы" кейіннен "BFD" дегеннің кері акроним ретінде ойлап табылды.

Дизайн

BFD объект файлдарының ортақ абстрактілі көрінісін ұсыну арқылы жұмыс істейді. Объект файлында сипаттамалық ақпаратты қамтитын "бас бөлігі" болады; әрқайсысының аты, белгілі бір атрибуттары және дерек блогы бар "бөлімдердің" өзгеретін саны; символдар тізімі; қайта орналастыру жазбалары және т.б. Ішкі жүйеде BFD деректерді абстрактілі көріністен мақсатты процессор мен файл форматы үшін қажетті бит/байт құрылымының егжей-тегжейіне аударады. Оның негізгі қызметтеріне байт ретінің айырмашылықтарын (мысалы, кішкентай эндиандық хост пен үлкен эндиандық мақсат арасындағыдай), 32 биттік және 64 биттік деректерді дұрыс түрлендіруді, сондай-ақ қайта орналастыру жазбаларында көрсетілген адрес арифметикасының егжей-тегжейін қамтиды. BFD кітапханасын логикалық тұрғыдан екі бөлікке бөлуге болады: алдыңғы және артқы бөлік. Алдыңғы бөлік негізгі объект файл көрінісіне тәуелсіз ортақ интерфейсті ұсынады. Пайдаланушылар осы интерфейс арқылы объект файлдарымен өзара әрекеттеседі. Объект файлдарының құрылымын пайдаланушы білмесе де, интерфейсті пайдалана алады. Бұл егжей-тегжейлі ақпаратты жасыру артқы бөлік көмегімен жүзеге асырылады. Артқы бөлік алдыңғы бөліктің интерфейсінің объект файлдарының құрылымымен қалай өзара әрекеттесетінін іске асырады. Жаңа объект файлдарының түрі енгізілген кезде, артқы бөлік осы түрін тіркеуі және BFD қолданбасымен қолдау көрсету қажет болса, оны іске асыруы керек. BFD бастапқыда көптеген құралдармен пайдалануға болатын жалпы кітапхана ретінде жобаланған болса да, жаңа жүйелердің мүмкіндіктерін қамтамасыз ету үшін API-мен жиі түзетулер жасау қажеттілігі оның қолданылуын шектеді; BFD-нің негізгі клиенттері GNU Assembler (GAS), GNU Linker (GLD), басқа GNU Binary Utilities ("binutils") құралдары және GNU Debugger (GDB) болып табылады. Нәтижесінде, BFD жеке таралмайды, бірақ әрқашан binutils және GDB нұсқаларымен бірге келеді. Дегенмен, BFD - енбелгі жүйелерді әзірлеу үшін GNU құралдарын пайдаланудағы маңызды компонент. BFD кітапханасын өзекті төгілмеден (core dump) құрылымды деректерді оқу үшін пайдалануға болады.