Eksekverbart og linkbart format

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 7. juni 2021; checks kræver 6 redigeringer .
NISSE
Udvidelse .axf, .bin, .elf, .o, eller .prx_.so.exe
Underskrift 7f 45 4c 46
Udvikler Unix System Laboratories
Formattype binær , eksekverbar , objekt , dynamisk linkbibliotek , hukommelsesdump

ELF ( engelsk  Executable and Linkable Format  - eksekverbart og linkbart filformat) er et binært filformat, der bruges i mange moderne UNIX-lignende operativsystemer, såsom FreeBSD , Linux , Solaris , osv.

Historie

ELF-formatstandarden blev oprindeligt udviklet og udgivet af USL som en del af UNIX System V binære applikationsgrænseflade [1] . Det blev derefter udvalgt af TIS -udvalget og udviklet som et bærbart format til forskellige operativsystemer, der kører på 32-bit Intel x86 hardwarearkitekturen . [2] ELF vandt hurtigt popularitet, og efter at HP udvidede formatet og udgav ELF-64-standarden, spredte det sig til 64-bit platforme. [3]

Typer

ELF-formatstandarden skelner mellem flere typer filer:

Formater

Hver ELF-fil består af følgende dele:

Filoverskrift

Filhovedet (ELF Header) har en fast placering i begyndelsen af ​​filen og indeholder en generel beskrivelse af filstrukturen og dens hovedkarakteristika, såsom: type, formatversion, processorarkitektur , virtuel indgangsadresse , størrelser og offsets andre dele af filen. Headeren er 52 bytes for 32-bit filer eller 64 for 64-bit . Denne forskel skyldes, at filoverskriften indeholder tre felter med en pointerstørrelse, som er 4 og 8 bytes for henholdsvis 32-bit og 64-bit processorer . Disse felter er e_entry, e_phoffog e_shoff.

ELF-filoverskriftsfelter
Størrelsen Navn Formål
NISSE

32

NISSE

64

16 e_ident[16] Filens generelle karakteristika. Array bytese_ident
Indeks Navn Formål
0 - 3 EI_MAG0-EI_MAG3 Fil signatur 0x7f 0x45 0x4c 0x46:.
fire EI_CLASS Objekt fil klasse.
Navn Betyder Beskrivelse
ELFCLASSNONE 0 Forkert klasse
ELFCLASS32 en 32-bit objektfil
ELFCLASS64 2 64-bit objektfil
5 EI_DATA Processorafhængig datakodningsmetode.
Navn Betyder Beskrivelse
ELFDATANONE 0 Forkert type
ELFDATA2LSB en Lille Endian
ELFDATA2MSB 2 Big Endian
6 EI_VERSION ELF-versionen af ​​overskriften. I øjeblikket skal værdien af ​​denne byte være EV_CURRENT.
Navn Betyder
EV_CURRENT en
7 EI_OSABI Operativsystem eller ABI - specifikke udvidelser, der bruges i filen. Nogle felter i andre ELF-filstrukturer har flag og felter, hvis betydning afhænger af operativsystemet eller ABI; fortolkningen af ​​disse felter bestemmes af værdien af ​​den givne byte. Hvis objektfilen ikke bruger filtypenavne, anbefales det, at denne byte sættes til 0. Hvis værdien for denne byte er i intervallet fra 64til 255, afhænger dens fortolkning af værdien af ​​e_machine ELF header-feltet. I dette interval kan hver arkitektur definere sit eget værdisæt.
Navn Betyder Beskrivelse
ELFOSABI_NONE 0 UNIX System V ABI
ELFOSABI_HPUX en HP-UX
ELFOSABI_NETBSD 2 NetBSD
ELFOSABI_GNU 3 Filen bruger GNU ELF-udvidelser ( GNU/Linux )
ELFOSABI_SOLARIS 6 Solaris
ELFOSABI_AIX 7 AIX
ELFOSABI_IRIX otte IRIX
ELFOSABI_FREEBSD 9 FreeBSD
ELFOSABI_TRU64 ti Tru64 UNIX
ELFOSABI_MODESTO elleve Modesto
ELFOSABI_OPENBSD 12 OpenBSD
ELFOSABI_OPENVMS 13 åbenvms
ELFOSABI_NSK fjorten Non Stop Kernel
ELFOSABI_AROS femten Amiga Research OS
ELFOSABI_FENIXOS 16 fenixOS
ELFOSABI_CLOUDABI 17 CloudABI
ELFOSABI_OPENVOS atten OpenVOS
64 - 255 Processorafhængige værdier
otte EI_ABIVERSION ABI version.
9 EI_PAD T.n. padding bytes (fyld). Array-elementer reserveret til fremtidig brug e_ident. Normalt installeret i 0. Objektfillæsere bør ignorere dem.
ti EI_PAD + 1
elleve EI_PAD + 2
12 EI_PAD + 3
13 EI_PAD + 4
fjorten EI_PAD + 5
femten EI_PAD + 6
2 e_type Filtype.
Navn Betyder Beskrivelse
ET_NONE 0 Usikker
ET_REL en Filen flyttes
ET_EXEC 2 Eksekverbar
ET_DYN 3 Delt objektfil
ET_CORE fire kernefil
ET_LOOS-ET_HIOS 65024 - 65279 Operativsystemafhængige værdier
ET_LOPROC-ET_HIPROC 65280 - 65535 Processorafhængige værdier
2 e_machine Arkitekturen af ​​hardwareplatformen, som filen blev oprettet til:
Navn Betyder Beskrivelse
EM_NONE 0x0 Udefineret
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 Reserveret til fremtidig brug
EM_PARISC 0x0F Hewlett-Packard PA-RISC
0x10 Reserveret til fremtidig brug
EM_960 0x13 Intel 80960
EM_PPC 0x14 PowerPC
EM_PPC64 0x15 PowerPC (64-bit)
EM_S390 0x16 S390 , inklusive S390x
EM_SPU 0x17 IBM SPU/SPC
0x18 - 0x23 Reserveret til fremtidig brug
EM_V800 0x24 NEC V800
EM_FR20 0x25 Fujitsu FR20
EM_RH32 0x26 TRW RH-32
EM_MCOREogEM_RCE 0x27 Motorola RCE
EM_ARM 0x28 ARM (op til ARMv7/Aarch32)
EM_OLD_ALPHA 0x29 Digital Alpha
EM_SH 0x2A superh
EM_SPARCV9 0x2B SPARC version 9
EM_TRICORE 0x2C Siemens TriCore indlejret processor
EM_ARC 0x2D Argonaut RISC Core
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 Fujitsu MMA Multimedia Accelerator
EM_PCP 0x37 Siemens PCP
EM_NCPU 0x38 Sony nCPU indlejret RISC-processor
EM_NDR1 0x39 Denso NDR1 mikroprocessor
EM_STARCORE 0x3A Motorola Star*Core-processor
EM_ME16 0x3B Toyota ME16 processor
EM_ST100 0x3C STMicroelectronics ST100 processor
EM_TINYJ 0x3D Advanced Logic Corp. TinyJ indlejret processorfamilie
EM_X86_64 0x3E AMD x86-64
EM_MCST_ELBRUS 0xAF Elbrus (processorarkitektur)
EM_TI_C6000 0x8C TMS320C6000 familie
EM_AARCH64 0xB7 ARM 64-bit (ARMv8/Aarch64)
EM_RISCV 0xF3 RISC-V
EM_BPF 0xF7 Berkeley pakkefilter
EM_65816 0x101 WDC 65C816
fire e_version Formatér versionsnummer. I øjeblikket anses kun én værdi for at være korrekt.
Navn Betyder Beskrivelse
EV_NONE 0 Forkert værdi
EV_CURRENT en Nuværende version
fire otte e_entry Den virtuelle adresse på det indgangspunkt, som systemet sender kontrollen til, når processen starter. Hvis filen ikke har et indgangspunkt, indeholder dette felt 0.
fire otte e_phoff Forskydning af programhovedtabellen fra begyndelsen af ​​filen, i bytes. Hvis filen ikke har en programoverskriftstabel, indeholder dette felt 0.
fire otte e_shoff Sektionsoverskriftstabel offset fra begyndelsen af ​​filen, i bytes. Hvis filen ikke har en sektionsoverskriftstabel, indeholder dette felt 0.
fire e_flags Processor-specifikke flag knyttet til filen . Hvis de er fraværende, indeholder dette felt 0.
2 e_ehsize Filhovedstørrelse i bytes ( 52for 32-bit og 6464-bit filer).
2 e_phentsize Størrelsen af ​​en programoverskrift. Alle programoverskrifter har samme størrelse ( 32for 32-bit-filer og 56for 64-bit-filer).
2 e_phnum Antallet af programoverskrifter. Hvis filen ikke har en programoverskriftstabel, indeholder dette felt 0.
2 e_shentsize Størrelsen af ​​en sektionsoverskrift. Alle sektionsoverskrifter har samme størrelse ( 40for 32-bit filer og 64for 64-bit).
2 e_shnum Antallet af sektionsoverskrifter. Hvis filen ikke har en sektionsoverskriftstabel, indeholder dette felt 0.
2 e_shstrndx Indekset for en post i sektionsoverskriftstabellen, der beskriver tabellen med sektionsnavne (normalt kaldes denne tabel .shstrtab og repræsenterer en separat sektion). Hvis filen ikke indeholder en sektionsnavnetabel, indeholder dette felt 0.

Programoverskriftstabel

Programhovedtabellen indeholder overskrifter, som hver beskriver et separat programsegment og dets attributter, eller anden information, der er nødvendig af operativsystemet for at forberede programmet til udførelse. Denne tabel kan placeres hvor som helst i filen, dens placering (offset i forhold til begyndelsen af ​​filen) er beskrevet i e_phoffELF-header-feltet.

Når man analyserer programhovedstrukturen, kan man finde forskellige feltplaceringer p_flagsfor 32-bit og 64-bit ELF-filer. Denne forskel skyldes justeringen af ​​strukturen for at øge forarbejdningseffektiviteten.

Programoverskriftsfelter
Størrelsen Navn Formål
NISSE

32

NISSE

64

fire p_type Den type segment, som denne overskrift beskriver, eller hvordan man fortolker feltværdierne for denne overskrift.
Navn Betyder Beskrivelse
PT_NULL 0 Titlen bruges ikke, resten af ​​felterne er ikke defineret. Denne type giver dig mulighed for at inkludere ignorerede elementer i filens programoverskriftstabel.
PT_LOAD en Segmentet, der skal indlæses, beskrevet af felterne p_fileszog p_memsz. Bytene fra filen er knyttet til et segment i hukommelsen. Hvis hukommelsessegmentstørrelsen ( p_memsz) er større end filsegmentstørrelsen ( p_filesz), udfyldes de ekstra bytes med nuller (de følger umiddelbart efter de bytes, der er defineret i segmentet). Størrelsen af ​​et segment i en fil ( p_filesz) kan ikke være større end størrelsen af ​​et segment i hukommelsen ( p_memsz). Programtitlerne for de downloadbare segmenter er arrangeret i programtitler-tabellen i stigende rækkefølge efter feltets værdi p_vaddr.
PT_DYNAMIC 2 Programhovedet giver information om dynamiske links.
PT_INTERP 3 Programhovedet angiver størrelsen og placeringen af ​​stien (nullterminerede C -stil strenge), der skal køre som en fortolker. Denne type segment er kun meningsfuld for eksekverbare filer (selvom det også kan være i en delt objektfil); det kan ikke forekomme mere end én gang i en fil. Hvis en header af denne type er til stede, skal den gå foran enhver programheader for det segment, der indlæses.
PT_NOTE fire Programhovedet definerer placeringen og størrelsen af ​​hjælpeinformationen.
PT_SHLIB 5 Denne segmenttype er reserveret, men dens betydning er udefineret. Programmer, der indeholder en programheader af denne type, overholder ikke ABI.
PT_PHDR 6 Programheaderen, hvis den findes, angiver placeringen og størrelsen af ​​selve programheader-tabellen, både i filen og i programmets hukommelsesbillede. Denne segmenttype kan ikke forekomme mere end én gang i en fil. Desuden kan det kun forekomme, hvis der er en programoverskriftstabel i filen. Hvis en header af denne type er til stede, skal den gå foran enhver programheader for det segment, der indlæses.
PT_TLS 7 Programhovedet definerer det tråd-lokale lagermønster. ELF-indlæsere må ikke opretholde denne post i programoverskriftstabellen.
PT_LOOS-PT_HIOS 1610612736 - 1879048191 Operativsystemafhængige værdier.
PT_LOPROC-PT_HIPROC 1879048192 - 2147483647 Processorafhængige værdier.
fire p_flags Segmentrelaterede flag (for ELF64).
Navn Betyder Beskrivelse
PF_X 0x1 Tilladelse til at udføre
PF_W 0x2 Skrivetilladelse
PF_R 0x4 Læsetilladelse
PF_MASKOS 0x0ff00000 Alle bits inkluderet i dette felt definerer operativsystemafhængige værdier.
PF_MASKPROC 0xf0000000 Alle bits inkluderet i dette felt definerer processorspecifikke værdier.
fire otte p_offset Segmentforskydning fra begyndelsen af ​​filen.
fire otte p_vaddr Den virtuelle adresse på segmentet i hukommelsen, hvor segmentet skal indlæses, når det tilknyttes hukommelsen.
fire otte p_paddr Segmentets fysiske adresse (for systemer, hvor det er vigtigt).
fire otte p_filesz Segmentstørrelsen i filen. Kan være nul.
fire otte p_memsz Størrelsen af ​​segmentet i hukommelsen. Kan være nul.
fire p_flags Segmentrelaterede flag (for ELF32) (se ovenfor for mulige værdier).
fire otte p_align Segmentjustering. 0og 1bestemme den manglende tilpasning. Ellers skal det være et positivt 2'er til en vis grad.

Sektionsoverskriftstabel

Sektionsoverskriftstabellen indeholder sektionsattributterne for filen. Denne tabel er kun nødvendig af linkeren, eksekverbare filer behøver ikke denne tabel (ELF-indlæseren ignorerer den). Oplysningerne i sektionsoverskriftstabellen bruges af linkeren til optimalt at arrangere disse sektioner i segmenter, når filen kompileres, under hensyntagen til deres attributter.

Sektionsoverskriftsfelter
Størrelsen Navn Formål
NISSE

32

NISSE

64

fire sh_name Forskydning af linjen, der indeholder navnet på denne sektion, i forhold til begyndelsen af ​​tabellen med sektionsnavne.
fire sh_type Overskriftstype.
Navn Betyder Beskrivelse
SHT_NULL 0 Titlen bruges ikke, resten af ​​felterne er ikke defineret.
SHT_PROGBITS en Afsnittet indeholder information defineret af programmet, dets format og betydning bestemmes af programmet alene.
SHT_SYMTAB 2 Afsnittet indeholder symboltabellen. Der kan kun være én sådan sektion i en fil i øjeblikket.
SHT_STRTAB 3 Afsnittet indeholder en tabel med strenge. En fil kan have mange sektioner af denne type.
SHT_RELA fire Afsnittet indeholder udvidet information om bevægelser. En fil kan have mange sektioner af denne type.
SHT_HASH 5 Sektionen indeholder en symbolhash-tabel. Der kan kun være én sådan sektion i en fil i øjeblikket.
SHT_DYNAMIC 6 Afsnittet indeholder information om dynamiske links. Der kan kun være én sådan sektion i en fil i øjeblikket.
SHT_NOTE 7 Afsnittet indeholder oplysninger, der markerer filen på en eller anden måde.
SHT_NOBITS otte Sektionen tager ingen plads i filen, ellers ligner den SHT_PROGBITS.
SHT_REL 9 Afsnittet indeholder information om bevægelser. En fil kan have mange sektioner af denne type.
SHT_SHLIB ti Denne sektionstype er defineret, men har ingen specifik betydning.
SHT_DYNSYM elleve Afsnittet indeholder symboltabellen. Der kan kun være én sådan sektion i en fil i øjeblikket.
SHT_INIT_ARRAY fjorten Afsnittet indeholder en række pointere til programinitieringsfunktionerne. Funktioner må ikke tage nogen argumenter og ikke returnere noget.
SHT_FINI_ARRAY femten Afsnittet indeholder en række henvisninger til programafslutningsfunktionerne. Funktioner må ikke tage nogen argumenter og ikke returnere noget.
SHT_PREINIT_ARRAY 16 Afsnittet indeholder en række pointere til funktioner, der kaldes, før programinitieringsfunktionerne kaldes. Funktioner må ikke tage nogen argumenter og ikke returnere noget.
SHT_GROUP 17 Dette afsnit definerer en gruppe af sektioner. En sektionsgruppe er en samling af relaterede sektioner, der skal håndteres på en særlig måde af linkeren. Sådanne sektioner kan kun være i objektfiler, der kan flyttes (hvis felt e_typehar værdien ET_REL). Overskriften, der definerer en gruppe af sektioner, skal være i sektionstabellen før overskrifterne for alle sektioner, der er inkluderet i gruppen, der defineres.
SHT_SYMTAB_SHNDX atten En sektion er knyttet til en symboltabel og er nødvendig, hvis et element i denne tabel refererer til en sektionsoverskrift, der har et indeks SHN_XINDEX(dette sker, hvis sektionsindekset er så stort, at det ikke passer i feltet st_shndx). Afsnittet indeholder en række numre af typen Elf32_Wordfor ELF32 og Elf64_Wordfor ELF64. Hvert element i dette array svarer til en indgang i symboltabellen og placeres i den tilsvarende rækkefølge. Disse elementer er indekser over de afsnitsoverskrifter, som de tilsvarende symboler er knyttet til. Hvis værdien af ​​feltet for det st_shndxtilsvarende element i symboltabellen er SHN_XINDEX, indeholder elementet det reelle sektionsoverskriftsindeks, ellers indeholder elementet 0.
SHT_LOOS-SHT_HIOS 1610612736 - 1879048191 Operativsystemafhængige værdier.
SHT_LOPROC-SHT_HIPROC 1879048192 - 2147483647 Processorafhængige værdier.
SHT_LOUSER-SHT_HIUSER 2147483648 - 4294967295 Programafhængige værdier. Disse værdier kan bruges af filbehandlere i ELF-format uden konflikt med de aktuelt definerede værdier.
fire otte sh_flags sektionsattributter.
Navn Betyder Beskrivelse
SHF_WRITE 0x1 Skrivetilladelse.
SHF_ALLOC 0x2 Sektionen optager hukommelse, mens processen kører. Nogle servicesektioner indlæses ikke i hukommelsen, når en objektfil indlæses; for sådanne sektioner er dette flag deaktiveret.
SHF_EXECINSTR 0x4 Afsnittet indeholder eksekverbare maskininstruktioner.
SHF_MERGE 0x10 Data i en partition kan kombineres for at eliminere duplikering. Hvis flaget SHF_STRINGSikke er sat, har dataelementerne i sektionen samme størrelse. Størrelsen af ​​et element er angivet i feltet sh_entsize. Hvis flaget SHF_STRINGSer sat, består sektionen af ​​arrays af nulterminerede tegn, og størrelsen på et tegn er angivet i feltet sh_entsize.

Hvert element i en sektion sammenlignes med andre elementer i sektioner med samme navn, type og flag. Elementer, der vil have samme værdi under programafviklingen, kan kombineres. Flytninger, der henviser til medlemmer af sådanne sektioner, skal løses i overensstemmelse hermed. Før fletning skal alle elementer i en sektion parses for at afgøre, om værdierne faktisk vil være identiske på kørselstidspunktet.

Denne forening er ikke et krav for overholdelse af ABI.

SHF_STRINGS 0x20 En sektion består af arrays af null-terminerede tegn. Størrelsen på et tegn er angivet i feltet sh_entsize.
SHF_INFO_LINK 0x40 Sektionsoverskriftsfeltet sh_infoindeholder indekset for sektionsoverskriftstabelposten.
SHF_LINK_ORDER 0x80 Særlige krav til placering. Kravene gælder, hvis sh_linkafsnitsoverskriftsfeltet refererer til et andet afsnit (relateret afsnit). Hvis det sh_linksammenkædede afsnitsfelt ikke indeholder 0, skal det aktuelle afsnit være i outputfilen i samme rækkefølge i forhold til det sammenkædede afsnit, som det sammenkædede afsnit er i forhold til det afsnit, det er knyttet til.
SHF_OS_NONCONFORMING 0x100 Afsnittet kræver speciel, operativsystemspecifik håndtering for at forhindre forkert opførsel.
SHF_GROUP 0x200 Sektion - et element (muligvis det eneste) i en gruppe af sektioner
SHF_TLS 0x400 Sektionen indeholder Thread-Local Storage, hver tråd vil have sin egen kopi af denne sektion.
SHF_COMPRESSED 0x800 Afsnittet indeholder komprimerede data. Dette flag gælder kun for sektioner, som der ikke er allokeret hukommelse til, når en objektfil indlæses i hukommelsen. Flaget bruges ikke i kombination med SHF_ALLOC. Dette flag gælder heller ikke for sektioner af typen SHT_NOBITS.

Alle bevægelser relateret til en komprimeret sektion refererer til dens data i ukomprimeret tilstand. Derfor er sektionsdekompression nødvendig for at tillade bevægelse. Hver komprimeret sektion definerer sin egen komprimeringsalgoritme. Det er acceptabelt, at forskellige sektioner i en ELF-objektfil bruger forskellige komprimeringsalgoritmer.

Komprimerede sektioner begynder med en overskrift, der identificerer komprimeringsalgoritmen.

Komprimerede sektionsoverskriftsfelter
Størrelsen Navn Formål
NISSE

32

NISSE

64

fire fire ch_type kompressionsalgoritme.
Navn Betyder Beskrivelse
ELFCOMPRESS_ZLIB en Dataene i afsnittet komprimeres ved hjælp af Zlib -algoritmen . Komprimerede data følger umiddelbart efter overskriften og før slutningen af ​​afsnittet.
ELFCOMPRESS_LOOS-ELFCOMPRESS_HIOS 1610612736 - 1879048191 Operativsystemafhængige værdier.
ELFCOMPRESS_LOPROC-ELFCOMPRESS_HIPROC 1879048192 - 2147483647 Processorafhængige værdier.
fire ch_reserved Reserveret til fremtidig brug.
fire otte ch_size Størrelsen i bytes af den dekomprimerede sektion.
fire otte ch_addralign Påkrævet justering for den dekomprimerede sektion.
SHF_MASKOS 0x0ff00000 Alle bits inkluderet i dette felt definerer operativsystemafhængige værdier.
SHF_MASKPROC 0xf0000000 Alle bits inkluderet i dette felt definerer processorspecifikke værdier.
fire otte sh_addr Hvis sektionen skal indlæses i hukommelsen, når objektfilen indlæses, angiver dette felt adressen, hvorfra sektionen skal indlæses, ellers indeholder feltet 0.
fire otte sh_offset Sektionsforskydning fra begyndelsen af ​​filen i bytes. Typesektioner SHT_NOBITSoptager ikke plads i filen; for dem indeholder dette felt den konceptuelle placering i filen.
fire otte sh_size Sektionsstørrelse i filen. Kan være nul.
fire sh_link Indekset for den tilknyttede sektion. Dette felt kan have forskellige formål afhængigt af headertypen. Fortolkning af felter sh_linkog sh_infoafhængig af feltets værdish_type
sh_type sh_link sh_info
SHT_DYNAMIC Indekset for strengtabelsektionsoverskriften, der bruges af elementerne i denne sektion. 0
SHT_HASH Indeks for overskriften på symboltabelsektionen, som denne hash-tabel tilhører. 0
SHT_REL,SHT_RELA Sektionsoverskriftsindekset for den tilknyttede symboltabel. Sektionsoverskriftsindekset, som flyttedataene skal anvendes på.
SHT_SYMTAB,SHT_DYNSYM Indeks for sektionsoverskriften for den tilknyttede strengtabel. En mere end indekset for det sidste lokale symbol ( STB_LOCAL) i symboltabellen.
SHT_GROUP Sektionsoverskriftsindekset for den tilknyttede symboltabel. Indekset for elementet i den tilknyttede symboltabel. Navnet på det angivne element giver sektionsgruppens signatur.
SHT_SYMTAB_SHNDX Sektionsoverskriftsindekset for den tilknyttede symboltabelsektion. 0
fire sh_info Yderligere information om afsnittet (se ovenfor for mulige værdier).
fire otte sh_addralign Påkrævet sektionsopretning.
fire otte sh_entsize Størrelsen i bytes af hver post (hvis sektionen indeholder en række af faste størrelsesposter, ellers indeholder feltet 0).

Indhold af sektioner og segmenter

Hjælpeprogrammer

Der er mange værktøjer til at arbejde med ELF-filer, de vigtigste er indeholdt i GNU Binutils- softwareværktøjssættet :

Se også

Noter

  1. System V Application Binary Interface Arkiveret 21. maj 2015 på Wayback Machine Edition 4.1 (1997-03-18 )
  2. ELF-specifikation Arkiveret 16. juni 2012 på  Wayback Machine
  3. ELF-64 Object File Format Arkiveret 1. juli 2015 på Wayback Machine
  4. FreshPorts -- devel/elfutils . www.freshports.org. Hentet 31. marts 2018. Arkiveret fra originalen 16. februar 2018.

Links