Spustitelný a propojitelný formát

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 7. června 2021; kontroly vyžadují 6 úprav .
ELF
Rozšíření .axf, .bin, .elf, .o, nebo .prx_.so.exe
Podpis 7f 45 4c 46
Vývojář Laboratoře systému Unix
Typ formátu binární , spustitelný , objekt , dynamicky propojovaná knihovna , výpis paměti

ELF ( anglicky  Executable and Linkable Format  - spustitelný a propojitelný souborový formát) je binární formát souboru používaný v mnoha moderních operačních systémech podobných UNIX , jako je FreeBSD , Linux , Solaris atd.

Historie

Standard formátu ELF byl původně vyvinut a publikován společností USL jako součást binárního aplikačního rozhraní UNIX System V [1] . Poté byl vybrán výborem TIS a vyvinut jako přenosný formát pro různé operační systémy běžící na 32bitové hardwarové architektuře Intel x86 . [2] ELF si rychle získal popularitu a poté, co společnost HP rozšířila formát a vydala standard ELF-64, se rozšířila na 64bitové platformy. [3]

Typy

Standard formátu ELF rozlišuje několik typů souborů:

Formát

Každý soubor ELF se skládá z následujících částí:

Záhlaví souboru

Záhlaví souboru (ELF Header) má pevné umístění na začátku souboru a obsahuje obecný popis struktury souboru a jeho hlavních charakteristik, jako jsou: typ, verze formátu, architektura procesoru , adresa virtuálního vstupního bodu , velikosti a offsety. dalších částí souboru. Hlavička je 52 bajtů pro 32bitové soubory nebo 64 pro 64bitové soubory . Tento rozdíl je způsoben tím, že hlavička souboru obsahuje tři pole s velikostí ukazatele, která je 4 a 8 bajtů pro 32bitové a 64bitové procesory . Tato pole jsou e_entry, e_phoffa e_shoff.

Pole záhlaví souboru ELF
Velikost název Účel
ELF

32

ELF

64

16 e_ident[16] Obecná charakteristika souboru. Pole bajtůe_ident
Index název Účel
0:3 EI_MAG0-EI_MAG3 Podpis souboru: 0x7f 0x45 0x4c 0x46.
čtyři EI_CLASS Třída objektového souboru.
název Význam Popis
ELFCLASSNONE 0 Nesprávná třída
ELFCLASS32 jeden 32bitový objektový soubor
ELFCLASS64 2 64bitový objektový soubor
5 EI_DATA Metoda kódování dat závislá na procesoru.
název Význam Popis
ELFDATANONE 0 Nesprávný typ
ELFDATA2LSB jeden Malý Endian
ELFDATA2MSB 2 Velký Endian
6 EI_VERSION Verze hlavičky ELF. Aktuálně by hodnota tohoto bajtu měla být EV_CURRENT.
název Význam
EV_CURRENT jeden
7 EI_OSABI Operační systém nebo přípony specifické pro ABI použité v souboru. Některá pole v jiných strukturách souborů ELF mají příznaky a pole, jejichž význam závisí na operačním systému nebo ABI; interpretace těchto polí je určena hodnotou daného bytu. Pokud soubor objektu nepoužívá přípony, doporučuje se, aby byl tento bajt nastaven na 0. Pokud je hodnota tohoto bajtu v rozsahu od 64do 255, pak jeho interpretace závisí na hodnotě pole hlavičky e_machine ELF. V tomto rozsahu může každá architektura definovat vlastní sadu hodnot.
název Význam Popis
ELFOSABI_NONE 0 UNIX Systém V ABI
ELFOSABI_HPUX jeden HP-UX
ELFOSABI_NETBSD 2 NetBSD
ELFOSABI_GNU 3 Soubor používá přípony GNU ELF ( GNU/Linux )
ELFOSABI_SOLARIS 6 Solaris
ELFOSABI_AIX 7 AIX
ELFOSABI_IRIX osm IRIX
ELFOSABI_FREEBSD 9 FreeBSD
ELFOSABI_TRU64 deset Tru64 UNIX
ELFOSABI_MODESTO jedenáct Modesto
ELFOSABI_OPENBSD 12 OpenBSD
ELFOSABI_OPENVMS 13 openvms
ELFOSABI_NSK čtrnáct Non Stop jádro
ELFOSABI_AROS patnáct OS Amiga Research
ELFOSABI_FENIXOS 16 fenixOS
ELFOSABI_CLOUDABI 17 CloudABI
ELFOSABI_OPENVOS osmnáct OpenVOS
64–255 Hodnoty závislé na procesoru
osm EI_ABIVERSION Verze ABI.
9 EI_PAD T. n. vycpávkové bajty (vycpávka). Prvky pole vyhrazené pro budoucí použití e_ident. Obvykle se instaluje v 0. Čtenáři objektových souborů by je měli ignorovat.
deset EI_PAD + 1
jedenáct EI_PAD + 2
12 EI_PAD + 3
13 EI_PAD + 4
čtrnáct EI_PAD + 5
patnáct EI_PAD + 6
2 e_type Typ souboru.
název Význam Popis
ET_NONE 0 Nejistý
ET_REL jeden Soubor se přesouvá
ET_EXEC 2 Spustitelný
ET_DYN 3 Soubor sdíleného objektu
ET_CORE čtyři základní soubor
ET_LOOS-ET_HIOS 65024–65279 Hodnoty závislé na operačním systému
ET_LOPROC-ET_HIPROC 65280–65535 Hodnoty závislé na procesoru
2 e_machine Architektura hardwarové platformy, pro kterou byl soubor vytvořen:
název Význam Popis
EM_NONE 0x0 Nedefinováno
EM_M32 0x01 AT&T WE 32100
EM_SPARC 0x02 SPARC
EM_386 0x03 Intel 80386
EM_68K 0x04 Motorola 68000 (M68k)
EM_88K 0x05 Motorola 88000 (M88k)
EM_IAMCU 0x06 Intel MCU
EM_860 0x07 Intel 80860
EM_MIPS 0x08 MIPS
EM_S370 0x09 IBM_System/370
EM_MIPS_RS3_LE 0x0A MIPS R3000 Little-endian
0x0B – 0x0E Rezervováno pro budoucí použití
EM_PARISC 0x0F Hewlett-Packard PA-RISC
0x10 Rezervováno pro budoucí použití
EM_960 0x13 Intel 80960
EM_PPC 0x14 PowerPC
EM_PPC64 0x15 PowerPC (64bitový)
EM_S390 0x16 S390 včetně S390x
EM_SPU 0x17 IBM SPU/SPC
0x18 - 0x23 Rezervováno pro budoucí použití
EM_V800 0x24 NEC V800
EM_FR20 0x25 Fujitsu FR20
EM_RH32 0x26 TRW RH-32
EM_MCOREaEM_RCE 0x27 Motorola RCE
EM_ARM 0x28 ARM (až ARMv7/Aarch32)
EM_OLD_ALPHA 0x29 Digitální alfa
EM_SH 0x2A superh
EM_SPARCV9 0x2B SPARC verze 9
EM_TRICORE 0x2C Vestavěný procesor Siemens TriCore
EM_ARC 0x2D Jádro Argonaut RISC
EM_H8_300 0x2E Hitachi H8/300
EM_H8_300H 0x2F Hitachi H8/300H
EM_H8S 0x30 Hitachi H8S
EM_H8_500 0x31 Hitachi H8/500
EM_IA_64 0x32 IA-64
EM_MIPS_X 0x33 Stanford MIPS-X
EM_COLDFIRE 0x34 Motorola ColdFire
EM_68HC12 0x35 Motorola M68HC12
EM_MMA 0x36 Multimediální akcelerátor Fujitsu MMA
EM_PCP 0x37 Siemens PCP
EM_NCPU 0x38 Vestavěný RISC procesor Sony nCPU
EM_NDR1 0x39 Mikroprocesor Denso NDR1
EM_STARCORE 0x3A Procesor Motorola Star*Core
EM_ME16 0x3B Procesor Toyota ME16
EM_ST100 0x3C Procesor STMicroelectronics ST100
EM_TINYJ 0x3D Advanced Logic Corp. Rodina vestavěných procesorů TinyJ
EM_X86_64 0x3E AMD x86-64
EM_MCST_ELBRUS 0xAF Elbrus (architektura procesoru)
EM_TI_C6000 0x8C Rodina TMS320C6000
EM_AARCH64 0xB7 ARM 64bitový (ARMv8/Aarch64)
EM_RISCV 0xF3 RISC-V
EM_BPF 0xF7 Paketový filtr Berkeley
EM_65816 0x101 WDC 65C816
čtyři e_version Číslo verze formátu. V tuto chvíli je za správnou považována pouze jedna hodnota.
název Význam Popis
EV_NONE 0 Nesprávná hodnota
EV_CURRENT jeden Současná verze
čtyři osm e_entry Virtuální adresa vstupního bodu, kterému systém předá řízení při spuštění procesu. Pokud soubor nemá vstupní bod, toto pole obsahuje 0.
čtyři osm e_phoff Posun tabulky záhlaví programu od začátku souboru v bajtech. Pokud soubor nemá tabulku záhlaví programu, toto pole obsahuje 0.
čtyři osm e_shoff Odsazení tabulky záhlaví oddílu od začátku souboru v bajtech. Pokud soubor nemá tabulku záhlaví oddílu, toto pole obsahuje 0.
čtyři e_flags Příznaky specifické pro procesor přidružené k souboru . Pokud chybí, toto pole obsahuje 0.
2 e_ehsize Velikost záhlaví souboru v bajtech ( 52pro 32bitové a 6464bitové soubory).
2 e_phentsize Velikost jedné hlavičky programu. Všechny hlavičky programů mají stejnou velikost ( 32pro 32bitové soubory a 56pro 64bitové).
2 e_phnum Počet hlaviček programů. Pokud soubor nemá tabulku záhlaví programu, toto pole obsahuje 0.
2 e_shentsize Velikost jednoho záhlaví sekce. Všechna záhlaví sekcí mají stejnou velikost ( 40pro 32bitové soubory a 64pro 64bitové soubory).
2 e_shnum Počet záhlaví sekcí. Pokud soubor nemá tabulku záhlaví oddílu, toto pole obsahuje 0.
2 e_shstrndx Index záznamu v tabulce záhlaví sekcí, který popisuje tabulku názvů sekcí (obvykle se tato tabulka nazývá .shstrtab a představuje samostatnou sekci). Pokud soubor neobsahuje tabulku názvů oddílů, toto pole obsahuje 0.

Tabulka záhlaví programu

Tabulka hlaviček programu obsahuje hlavičky, z nichž každá popisuje samostatný segment programu a jeho atributy nebo další informace potřebné pro operační systém k přípravě programu ke spuštění. Tato tabulka může být umístěna kdekoli v souboru, její umístění (offset vzhledem k začátku souboru) je popsáno v poli e_phoffhlavičky ELF.

Při analýze struktury záhlaví programu lze najít různá umístění polí p_flagspro 32bitové a 64bitové soubory ELF. Tento rozdíl je způsoben zarovnáním struktury za účelem zvýšení efektivity zpracování.

Pole záhlaví programu
Velikost název Účel
ELF

32

ELF

64

čtyři p_type Typ segmentu, který toto záhlaví popisuje, nebo jak interpretovat hodnoty pole tohoto záhlaví.
název Význam Popis
PT_NULL 0 Titulek není použit, ostatní pole nejsou definována. Tento typ umožňuje zahrnout ignorované prvky do tabulky záhlaví programu souboru.
PT_LOAD jeden Segment, který se má načíst, popsaný pomocí polí p_filesza p_memsz. Bajty ze souboru jsou mapovány na segment v paměti. Pokud je velikost segmentu paměti ( p_memsz) větší než velikost segmentu souboru ( p_filesz), jsou bajty navíc doplněny nulami (bezprostředně následují bajty definované v segmentu). Velikost segmentu v souboru ( p_filesz) nemůže být větší než velikost segmentu v paměti ( p_memsz). Názvy programů segmentů ke stažení jsou uspořádány v tabulce názvů programů ve vzestupném pořadí podle hodnoty pole p_vaddr.
PT_DYNAMIC 2 Záhlaví programu poskytuje informace o dynamickém propojování.
PT_INTERP 3 Hlavička programu poskytuje velikost a umístění cesty ( řetězce ve stylu C zakončené nulou), která se má spustit jako interpret. Tento typ segmentu má smysl pouze pro spustitelné soubory (ačkoli může být také v souboru sdíleného objektu); v souboru se nemůže vyskytovat více než jednou. Pokud je přítomno záhlaví tohoto typu, musí předcházet jakékoli záhlaví programu načítaného segmentu.
PT_NOTE čtyři Hlavička programu definuje umístění a velikost pomocných informací.
PT_SHLIB 5 Tento typ segmentu je vyhrazen, ale jeho význam není definován. Programy obsahující hlavičku programu tohoto typu nevyhovují ABI.
PT_PHDR 6 Záhlaví programu, pokud je přítomno, určuje umístění a velikost samotné tabulky záhlaví programu, a to jak v souboru, tak v obrazu paměti programu. Tento typ segmentu se v souboru nemůže vyskytovat více než jednou. Navíc k němu může dojít pouze v případě, že soubor obsahuje tabulku záhlaví programu. Pokud je přítomno záhlaví tohoto typu, musí předcházet jakékoli záhlaví programu načítaného segmentu.
PT_TLS 7 Záhlaví programu definuje vzor Thread-Local Storage. Zavaděče ELF nesmí udržovat tuto položku v tabulce záhlaví programu.
PT_LOOS-PT_HIOS 1610612736 – 1879048191 Hodnoty závislé na operačním systému.
PT_LOPROC-PT_HIPROC 1879048192 – 2147483647 Hodnoty závislé na procesoru.
čtyři p_flags Příznaky související se segmenty (pro ELF64).
název Význam Popis
PF_X 0x1 Povolení k provedení
PF_W 0x2 Povolení k zápisu
PF_R 0x4 Oprávnění ke čtení
PF_MASKOS 0x0ff00000 Všechny bity zahrnuté v tomto poli definují hodnoty závislé na operačním systému.
PF_MASKPROC 0xf0000000 Všechny bity zahrnuté v tomto poli definují hodnoty specifické pro procesor.
čtyři osm p_offset Odsazení segmentu od začátku souboru.
čtyři osm p_vaddr Virtuální adresa segmentu v paměti, kam má být segment načten při mapování do paměti.
čtyři osm p_paddr Fyzická adresa segmentu (pro systémy, kde je to důležité).
čtyři osm p_filesz Velikost segmentu v souboru. Může být nulový.
čtyři osm p_memsz Velikost segmentu v paměti. Může být nulový.
čtyři p_flags Příznaky související se segmenty (pro ELF32) (možné hodnoty viz výše).
čtyři osm p_align Zarovnání segmentu. 0a 1určit nedostatek zarovnání. Jinak musí být do určité míry kladná 2.

Tabulka záhlaví sekce

Tabulka záhlaví sekce obsahuje atributy sekce souboru. Tuto tabulku potřebuje pouze linker, spustitelné soubory tuto tabulku nepotřebují (zavaděč ELF ji ignoruje). Informace uvedené v tabulce záhlaví sekcí používá linker k optimálnímu uspořádání těchto sekcí do segmentů při kompilaci souboru s přihlédnutím k jejich atributům.

Pole záhlaví sekce
Velikost název Účel
ELF

32

ELF

64

čtyři sh_name Odsazení řádku obsahujícího název tohoto oddílu vzhledem k začátku tabulky názvů oddílů.
čtyři sh_type Typ záhlaví.
název Význam Popis
SHT_NULL 0 Titulek není použit, ostatní pole nejsou definována.
SHT_PROGBITS jeden Sekce obsahuje informace definované programem, její formát a význam určuje pouze program.
SHT_SYMTAB 2 Sekce obsahuje tabulku symbolů. V současné době může být v souboru pouze jeden takový oddíl.
SHT_STRTAB 3 Sekce obsahuje tabulku řetězců. Soubor může mít mnoho sekcí tohoto typu.
SHT_RELA čtyři Sekce obsahuje rozšířené informace o pohybech. Soubor může mít mnoho sekcí tohoto typu.
SHT_HASH 5 Sekce obsahuje hašovací tabulku symbolů. V současné době může být v souboru pouze jeden takový oddíl.
SHT_DYNAMIC 6 Sekce obsahuje informace o dynamickém propojování. V současné době může být v souboru pouze jeden takový oddíl.
SHT_NOTE 7 Sekce obsahuje informace, které soubor nějakým způsobem označují.
SHT_NOBITS osm Sekce nezabírá v souboru žádné místo, jinak je podobná SHT_PROGBITS.
SHT_REL 9 Sekce obsahuje informace o pohybech. Soubor může mít mnoho sekcí tohoto typu.
SHT_SHLIB deset Tento typ sekce je definován, ale nemá žádný konkrétní význam.
SHT_DYNSYM jedenáct Sekce obsahuje tabulku symbolů. V současné době může být v souboru pouze jeden takový oddíl.
SHT_INIT_ARRAY čtrnáct Sekce obsahuje pole ukazatelů na funkce inicializace programu. Funkce nesmí přijímat žádné argumenty a nic vracet.
SHT_FINI_ARRAY patnáct Sekce obsahuje pole ukazatelů na funkce finalizace programu. Funkce nesmí přijímat žádné argumenty a nic vracet.
SHT_PREINIT_ARRAY 16 Sekce obsahuje pole ukazatelů na funkce, které jsou volány před voláním funkcí inicializace programu. Funkce nesmí přijímat žádné argumenty a nic vracet.
SHT_GROUP 17 Tato sekce definuje skupinu sekcí. Skupina sekcí je kolekce souvisejících sekcí, se kterými musí linker zacházet zvláštním způsobem. Takové sekce mohou být pouze v přemístitelných objektových souborech (jejichž pole e_typemá hodnotu ET_REL). Nadpis, který definuje skupinu sekcí, musí být v tabulce sekcí před nadpisy všech sekcí obsažených v definované skupině.
SHT_SYMTAB_SHNDX osmnáct Sekce je spojena s tabulkou symbolů a je nezbytná, pokud jakýkoli prvek této tabulky odkazuje na záhlaví sekce, která má index SHN_XINDEX(k tomu dochází, pokud je index sekce tak velký, že se nevejde do pole st_shndx). Sekce obsahuje pole čísel typu Elf32_Wordpro ELF32 a Elf64_Wordpro ELF64. Každý prvek tohoto pole odpovídá položce v tabulce symbolů a je umístěn v odpovídajícím pořadí. Tyto prvky jsou indexy nadpisů sekcí, ke kterým jsou přiřazeny odpovídající symboly. Pokud je hodnota pole st_shndxodpovídajícího prvku tabulky symbolů SHN_XINDEX, prvek obsahuje skutečný index záhlaví sekce, v opačném případě prvek obsahuje 0.
SHT_LOOS-SHT_HIOS 1610612736 – 1879048191 Hodnoty závislé na operačním systému.
SHT_LOPROC-SHT_HIPROC 1879048192 – 2147483647 Hodnoty závislé na procesoru.
SHT_LOUSER-SHT_HIUSER 2147483648 – 4294967295 Hodnoty závislé na programu. Tyto hodnoty mohou být použity obslužnými nástroji souborů formátu ELF bez konfliktu s aktuálně definovanými hodnotami.
čtyři osm sh_flags atributy sekce.
název Význam Popis
SHF_WRITE 0x1 Povolení k zápisu.
SHF_ALLOC 0x2 Sekce zabírá paměť, zatímco proces běží. Některé sekce služby se při načítání souboru objektu nenačtou do paměti; pro takové sekce je tento příznak zakázán.
SHF_EXECINSTR 0x4 Sekce obsahuje spustitelné strojové instrukce.
SHF_MERGE 0x10 Data v oddílu lze kombinovat, aby se eliminovala duplicita. Pokud příznak SHF_STRINGSnení nastaven, mají datové prvky v sekci stejnou velikost. Velikost jednoho prvku je uvedena v poli sh_entsize. Pokud je nastaven příznak SHF_STRINGS, sekce se skládá z polí znaků zakončených nulou a velikost jednoho znaku je určena v poli sh_entsize.

Každý prvek v sekci je porovnáván s ostatními prvky v sekcích se stejným názvem, typem a příznaky. Prvky, které budou mít při provádění programu stejnou hodnotu, lze kombinovat. Tahy týkající se členů takových sekcí musí být odpovídajícím způsobem vyřešeny. Před sloučením musí být všechny prvky sekce analyzovány, aby se zjistilo, zda budou hodnoty za běhu efektivně identické.

Toto přidružení není podmínkou pro shodu s ABI.

SHF_STRINGS 0x20 Sekce se skládá z polí znaků zakončených nulou. Velikost jednoho znaku je uvedena v poli sh_entsize.
SHF_INFO_LINK 0x40 Pole záhlaví sekce sh_infoobsahuje index záznamu tabulky záhlaví sekce.
SHF_LINK_ORDER 0x80 Zvláštní požadavky na umístění. Požadavky platí, pokud sh_linkpole záhlaví oddílu odkazuje na jiný oddíl (související oddíl). Pokud pole sh_linkpropojené sekce neobsahuje 0, musí být aktuální sekce ve výstupním souboru ve stejném pořadí vzhledem k propojené sekci, v jakém je propojená sekce vzhledem k sekci, ke které je připojena.
SHF_OS_NONCONFORMING 0x100 Sekce vyžaduje speciální zacházení specifické pro operační systém, aby se zabránilo nesprávnému chování.
SHF_GROUP 0x200 Sekce - prvek (možná jediný) ze skupiny sekcí
SHF_TLS 0x400 Sekce obsahuje Thread-Local Storage, každé vlákno bude mít svou vlastní kopii této sekce.
SHF_COMPRESSED 0x800 Sekce obsahuje komprimovaná data. Tento příznak se vztahuje pouze na sekce, pro které není při načítání souboru objektu do paměti alokována paměť. Příznak se nepoužívá v kombinaci s SHF_ALLOC. Tento příznak také neplatí pro sekce typu SHT_NOBITS.

Všechny pohyby související s komprimovaným úsekem odkazují na jeho data v nekomprimovaném stavu. Proto je pro umožnění pohybu nutná dekomprese sekce. Každá komprimovaná sekce definuje svůj vlastní kompresní algoritmus. Pro různé sekce v souboru objektu ELF je přijatelné používat různé kompresní algoritmy.

Komprimované části začínají záhlavím identifikujícím kompresní algoritmus.

Komprimovaná pole záhlaví sekce
Velikost název Účel
ELF

32

ELF

64

čtyři čtyři ch_type kompresní algoritmus.
název Význam Popis
ELFCOMPRESS_ZLIB jeden Data v sekci jsou komprimována pomocí algoritmu Zlib . Komprimovaná data následují bezprostředně za záhlavím a před koncem sekce.
ELFCOMPRESS_LOOS-ELFCOMPRESS_HIOS 1610612736 – 1879048191 Hodnoty závislé na operačním systému.
ELFCOMPRESS_LOPROC-ELFCOMPRESS_HIPROC 1879048192 – 2147483647 Hodnoty závislé na procesoru.
čtyři ch_reserved Rezervováno pro budoucí použití.
čtyři osm ch_size Velikost dekomprimované sekce v bajtech.
čtyři osm ch_addralign Požadované zarovnání pro dekomprimovanou sekci.
SHF_MASKOS 0x0ff00000 Všechny bity zahrnuté v tomto poli definují hodnoty závislé na operačním systému.
SHF_MASKPROC 0xf0000000 Všechny bity zahrnuté v tomto poli definují hodnoty specifické pro procesor.
čtyři osm sh_addr Pokud má být sekce načtena do paměti při načítání souboru objektu, toto pole určuje adresu, ze které bude sekce načtena, jinak pole obsahuje 0.
čtyři osm sh_offset Odsazení sekce od začátku souboru v bajtech. Části typu SHT_NOBITSnezabírají místo v souboru, pro ně toto pole obsahuje koncepční umístění v souboru.
čtyři osm sh_size Velikost sekce v souboru. Může být nulový.
čtyři sh_link Index přidružené sekce. Toto pole může mít různé účely v závislosti na typu záhlaví. Interpretace polí sh_linka sh_infov závislosti na hodnotě polesh_type
sh_type sh_link sh_info
SHT_DYNAMIC Index záhlaví sekce tabulky řetězců, který používají prvky této sekce. 0
SHT_HASH Index záhlaví sekce tabulky symbolů, do které tato hashovací tabulka patří. 0
SHT_REL,SHT_RELA Index záhlaví sekce přidružené tabulky symbolů. Index záhlaví sekce, na který se mají použít data o přemístění.
SHT_SYMTAB,SHT_DYNSYM Index záhlaví sekce související tabulky řetězců. O jeden více než index posledního lokálního symbolu ( STB_LOCAL) v tabulce symbolů.
SHT_GROUP Index záhlaví sekce přidružené tabulky symbolů. Index prvku v přidružené tabulce symbolů. Název zadaného prvku poskytuje podpis skupiny sekcí.
SHT_SYMTAB_SHNDX Index záhlaví sekce přidružené sekce tabulky symbolů. 0
čtyři sh_info Další informace o sekci (možné hodnoty viz výše).
čtyři osm sh_addralign Požadované zarovnání sekce.
čtyři osm sh_entsize Velikost v bajtech každé položky (pokud sekce obsahuje pole položek s pevnou velikostí, jinak pole obsahuje 0).

Obsah sekcí a segmentů

Utility

Pro práci se soubory ELF existuje mnoho nástrojů , ty hlavní jsou obsaženy v softwarové sadě GNU Binutils :

Viz také

Poznámky

  1. System V Application Binary Interface Archivováno 21. května 2015 ve Wayback Machine Edition 4.1 (1997-03-18 )
  2. Specifikace ELF Archivována 16. června 2012 na  Wayback Machine
  3. Formát objektového souboru ELF-64 Archivováno 1. července 2015 na Wayback Machine
  4. FreshPorts -- devel/elfutils . www.freshports.org. Získáno 31. března 2018. Archivováno z originálu 16. února 2018.

Odkazy