Сборка программ
<<define ELFOSABI_HPUX 1 /* HP-UX */ tdefine ELFOSABI_ARM 97 /* ARM */ #define ELFOSABI_STANDALONE 255 /* Самостоятельное (встраиваемое) приложение * / #define EI_ABIVERSION 8 /* версия ABI */ #define EI_PAD 9 /* Индекс байтов выравнивания */ /* Допустимые значения для e_type (тип объектного файла). */ #define ETJTONE 0 /* Не указан тип */ #define ET_REL I /* Перемещаемый файл */ #define ET_EXEC 2 /* Исполнимый файл */ #define ET_DYN 3 /* Разделяемьй объектный файл */ Define ET_CORE 4 /* Образ задачи */ 'define ET_NUM 5 /* Количество определенных типов */ e ET_LOPROC OxffOO /* Специфичный для процессора */ ttdefine ET_HIPROC Oxffff /* Специфичный для процессора */ /* Допустимые значения для e_machine (архитектура). */ ttdefine EM_NONE 0 /* Не указана машина */ ttdefine ЕМ_М32 1 /* AT&T WE 32100 */ ttdefine EM_SPARC 2 /* SUN SPARC */ ttdefine EM_386 3 /* Intel 80386 */ ttdefine EM_68K 4 /* Motorola m68k family */ ttdefine EM_88K 5 /* Motorola m88k family */ ttdefine EM__486 6 /* Intel 80486 */ ttdefine EM_860 7 /* Intel 80860 */ ttdefine EM_MIPS 8 /* MIPS R3000 big-endian */ ttdefine EM_S370 9 /* Amdahl */ ttdefine EM_MIPS_RS4_BE 10 /* MIPS R4000 big-endian */ ttdefine EM RS6000 11 /* RS6000 */ #define EM_PARISC 15 ttdefine EM_nCUBE 16 Idefine EM VPP500 17 /* HPPA */ /* nCUBE */ /* Fujitsu VPP500 */ ttdefine EM_SPARC32PLUS 18 /* Sun's "vSplus" */ ttdefine EM_960 19 /* Intel 80960 */ ttdefine EM PPC 20 /*. PowerPC */ ttdefine ttdefine ttdefine ttdefine ttdefine ttdefine ttdefine ttdefine ttdefine ttdefine ttdefine ttdefine ttdefine ttdefine ttdefine EM_V800 36 /* NEC V800 series */ EM_FR20 37 /* Fujitsu FR20 */ EM_RH32 38 /* TRW RH32 */ EM_MMA 39 /* Fujitsu MMA */ EM^ARM 40 /* ARM */ EM_FAKE_ALPHA 41 /* Digital Alpha J EM_SH 42 EM_SPARCV9 43 EMJTRICORE 44 EM_ARC 45 EM_H8_300 46 EM_H8_300H 47 EM_H8S 48 EM_H8_500 49 EM IA 64 50 /* Hitachi SH */ /* SPARC v9 64-bit */ /* Siemens Tricore */ /* Argonaut RISC Core */ /* Hitachi H8/300 */ /* Hitachi H8/300H */ /* Hitachi H8S */ /* Hitachi H8/500 */ /* Intel Merced */ <<define EM_MIPS_X 51 /* Stanford MIPS-X */ <<define EM^COLDFIRE 52 /* Motorola Coldfire */ <<define EM_68HC12 53 /* Motorola M68HC12 */ ((define EM_NUM 54 /* Если необходимо вьщелить неофициальное значение для ЕМ_*, пожалуйста, выделяйте большие случайные числа (0x8523, Oxa7f2, etc.), чтобы уменьшить вероятность пересечения с официальными или не-GNU неофициальными значениями. */ ((define EM_ALPHA 0x9026 /* Допустимые значения для e_version (версия). */ Idefine EV_NONE 0 /* Недопустимая версия ELF */ #define EV_CURRENT I /* Текущая версия */ (tdefine EV_NUM 2 /* Элемент таблицы символов. */ typedef struct f Elf32_Word st_name; /* Имя символа (индекс в таблице строк) */ Elf32_Addr st_value; /* Значение символа */ Elf32_Word st_size; /* Размер символа */ unsigned char st_info; /* Тип и привязка символа */ unsigned char st_other; /* Значение не определено, 0 */ Elf32_Section st_shndx; /* Индекс секции */) Elf32_Sym; '* Секция syminfo, если присутствует, содержит дополнительную информацию о каждом динамическом символе. */ typedef struct I Elf32_Half si_boundto; /* Прямая привязка, символ, к которому привязан */ Elf32_Half si_flags; /* Флаги символа */ > Elf32 Syminfo; /* Допустимые значения для si boundto. */ #define SYMINFO_BT_SELF Oxffff /* tdefine SYMINFO_BT_PARENT Oxfffe /* ttdefine SYMINFO_BT_LOWRESERVE OxffOO /* /* Возможные битовые маски для si_flags #define SYMINFO_FLG_DIRECT 0x0001 /* tfdefine SYMINFO_FLG_PASSTHRU 0x0002 /* тора */ tfdefine SYMINFO_FLG_COPY 0x0004 /* tdefine SYMINFO_FLG_LAZYLOAD 0x0008 /* /* Значения версии Syminfo. */ #define SYMINFO_NONE 0 ttdefine SYMINFO_CURRENT 1 #define SYMINFO NUM 2 Символ привязан к себе */ Символ привязан к родителю */ Начало зарезервированных записей */ Прямо привязываемый символ */ Промежуточный символ для трансляции Символ предназначен для перемещения копированием */ Символ привязан к объекту с отложенной загрузкой */ /* Как извлекать информацию из и включать ее в поле st_info. */ #define ELF32_ST_BIND(val) (((unsigned char) (val)) " 4) tfdefine ELF32_ST_TYPE(val) ((val) & Oxf) ttdefine ELF32_ST_INFO(bind, type) (((bind) " 4) + ((type) & Oxf)) /* Допустимые значения для подполя STJ3IND поля st_info (привязка символов). */