НАЗВАНИЕ
ldfcn - программы доступа к об ектным файлам обычного
формата
СИНТАКСИС
#include <stdio.h> #include <filehdr.h> #include <ldfcn.h>
ОПИСАНИЕ
Программы доступа к об ектным файлам обычного формата
это совокупность функций, обеспечивающих чтение об ектных файлов и архивов, содержащих объектные файлы. Хотя
вызывающая программа должна "знать" детали структуры
обрабатываемых ею частей об ектного файла, использование программ доступа исключает необходимость знания
структуры файла в целом.
Интерфейс между вызывающей программой и программами доступа основан на определяемом типе LDFILE. Тип определен во включаемом файле <ldfcn.h> как структура struct ldfile. Основное назначение этой структуры - обеспечить унифицированный доступ как к отдельным об ектным файлам, так и к архивам объектных файлов.
Функция ldopen(3X) размещает и инициализирует структуру LDFILE, возвращая в вызывающую программу указатель на структуру. Доступ к полям структуры LDFILE обеспечивается макросами, определенными в <ldfcn.h>:
Функции доступа подразделяются на 4 группы:
Эти функции детально описаны в соответствующих разделах Справочника.
После успешного поиска (функциями третьей группы) текущая позиция в файле устанавливается на начало найденной информации.
Все функции, кроме ldopen(3X), ldgetname(3X) и ldtbindex(3X), возвращают значения SUCCESS или FAILURE (эти константы определены во включаемом файле <ldfcn.h>). Ldopen(3Х) и ldaopen [см. ldopen(3Х)] возвращают указатель на структуру LDFILE.
Дополнительные средства доступа к объектному файлу обеспечиваются набором макросов, определенных в файле <ldfcn.h>. Эти макросы являются прямыми аналогами стандартных функций ввода/вывода, осуществляющим чтение и обработку файлов. Макросы используют поле дескриптора файла из структуры LDFILE.
Предоставляются следующие макросы:
GETC (ldptr) FGETC (ldptr) GETW (ldptr) UNGETC (c, ldptr) FGETS (ldptr) FREAD ((char *) ptr, sizeof (*ptr), nitems, ldptr) FSEEK (ldptr, offset, ptrname) FTELL (ldptr) REWIND (ldptr) FEOF (ldptr) FERROR (ldptr) FILENO (ldptr) SETBUF (ldptr, buf) STROFFSET (ldptr)
Макрос STROFFSET вычисляет адрес таблицы цепочек. Относительно других макросов следует обратиться к описаниям соответствующих стандартных функций ввода/вывода.
При редактировании связей вызывающей программы следует подключить библиотеку программ доступа к объектным файлам libld.a.
СМ. ТАКЖЕ
fseek(3S), ldahread(3X), ldclose(3X), ldgetname(3X),
ldfhread(3X), ldlread(3X), ldlseek(3X), ldohseek(3X),
ldopen(3X), ldrseek(3X), ldsseek(3X), ldshread(3X),
ldtbindex(3X), ldtbread(3X), ldtbseek(3X), stdio(3S),
intro(5).
ПРЕДОСТЕРЕЖЕНИЯ
Макрос FSEEK, определенный в файле <ldfcn.h>, обращается к стандартной функции ввода/вывода fseek(3S). Нельзя
использовать FSEEK для позиционирования относительно
конца архивного файла, поскольку конец архивного файла
не обязательно совпадает с концом одного из содержащихся в архиве объектных файлов.