Körbart och länkbart format

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 7 juni 2021; kontroller kräver 6 redigeringar .
ÄLVA
Förlängning .axf, .bin, .elf, .o, .prx, .soeller.exe
Signatur 7f 45 4c 46
Utvecklaren Unix System Laboratories
Formattyp binär , körbar , objekt , bibliotek för dynamiska länkar , minnesdump

ELF ( engelsk  Executable and Linkable Format  - körbart och länkbart filformat) är ett binärt filformat som används i många moderna UNIX-liknande operativsystem, som FreeBSD , Linux , Solaris , etc.

Historik

ELF-formatstandarden utvecklades och publicerades ursprungligen av USL som en del av UNIX System V binära applikationsgränssnitt [1] . Det valdes sedan ut av TIS- kommittén och utvecklades som ett bärbart format för olika operativsystem som körs på 32-bitars Intel x86-hårdvaruarkitekturen . [2] ELF blev snabbt populär och, efter att HP utökat formatet och publicerat ELF-64-standarden, spreds det till 64-bitarsplattformar. [3]

Typer

ELF-formatstandarden särskiljer flera typer av filer:

Format

Varje ELF-fil består av följande delar:

Filhuvud

Filhuvudet (ELF Header) har en fast plats i början av filen och innehåller en allmän beskrivning av filstrukturen och dess huvudsakliga egenskaper, såsom: typ, formatversion, processorarkitektur , virtuell ingångsadress , storlekar och förskjutningar andra delar av filen. Rubriken är 52 byte för 32-bitars filer eller 64 för 64-bitars . Denna skillnad beror på att filhuvudet innehåller tre fält med en pekarestorlek, som är 4 och 8 byte för 32-bitars respektive 64-bitars processorer . Dessa fält är , och . e_entrye_phoffe_shoff

ELF-filhuvudfält
Storleken namn Ändamål
ÄLVA

32

ÄLVA

64

16 e_ident[16] Allmänna egenskaper hos filen. Arraybytese_ident
Index namn Ändamål
0 - 3 EI_MAG0-EI_MAG3 Filsignatur: 0x7f 0x45 0x4c 0x46.
fyra EI_CLASS Objektfilklass.
namn Menande Beskrivning
ELFCLASSNONE 0 Felaktig klass
ELFCLASS32 ett 32-bitars objektfil
ELFCLASS64 2 64-bitars objektfil
5 EI_DATA Processorberoende datakodningsmetod.
namn Menande Beskrivning
ELFDATANONE 0 Felaktig typ
ELFDATA2LSB ett Lilla Endian
ELFDATA2MSB 2 Big Endian
6 EI_VERSION ELF-versionen av rubriken. För närvarande bör värdet på denna byte vara EV_CURRENT.
namn Menande
EV_CURRENT ett
7 EI_OSABI Operativsystem eller ABI- specifika tillägg som används i filen. Vissa fält i andra ELF-filstrukturer har flaggor och fält vars betydelse beror på operativsystemet eller ABI; tolkningen av dessa fält bestäms av värdet på den givna byten. Om objektfilen inte använder tillägg, rekommenderas att denna byte sätts till 0. Om värdet för denna byte ligger i intervallet från 64till 255beror dess tolkning på värdet för e_machine ELF-huvudfältet. I detta intervall kan varje arkitektur definiera sin egen uppsättning värden.
namn Menande Beskrivning
ELFOSABI_NONE 0 UNIX System V ABI
ELFOSABI_HPUX ett HP-UX
ELFOSABI_NETBSD 2 NetBSD
ELFOSABI_GNU 3 Filen använder GNU ELF-tillägg ( GNU/Linux )
ELFOSABI_SOLARIS 6 Solaris
ELFOSABI_AIX 7 AIX
ELFOSABI_IRIX åtta IRIX
ELFOSABI_FREEBSD 9 FreeBSD
ELFOSABI_TRU64 tio Tru64 UNIX
ELFOSABI_MODESTO elva Modesto
ELFOSABI_OPENBSD 12 OpenBSD
ELFOSABI_OPENVMS 13 openvms
ELFOSABI_NSK fjorton Non Stop Kernel
ELFOSABI_AROS femton Amiga Research OS
ELFOSABI_FENIXOS 16 fenixOS
ELFOSABI_CLOUDABI 17 CloudABI
ELFOSABI_OPENVOS arton ÖppnaVOS
64 - 255 Processorberoende värden
åtta EI_ABIVERSION ABI-version.
9 EI_PAD T.n. utfyllnadsbytes (fyllning). Arrayelement reserverade för framtida användning e_ident. Installeras vanligtvis i 0. Objektfilläsare bör ignorera dem.
tio EI_PAD + 1
elva EI_PAD + 2
12 EI_PAD + 3
13 EI_PAD + 4
fjorton EI_PAD + 5
femton EI_PAD + 6
2 e_type Filtyp.
namn Menande Beskrivning
ET_NONE 0 Osäker
ET_REL ett Filen flyttas
ET_EXEC 2 Körbar
ET_DYN 3 Fil med delat objekt
ET_CORE fyra kärnfil
ET_LOOS-ET_HIOS 65024 - 65279 Operativsystemberoende värden
ET_LOPROC-ET_HIPROC 65280 - 65535 Processorberoende värden
2 e_machine Arkitekturen för hårdvaruplattformen som filen skapades för:
namn Menande Beskrivning
EM_NONE 0x0 Odefinierad
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 Reserverad för framtida bruk
EM_PARISC 0x0F Hewlett-Packard PA-RISC
0x10 Reserverad för framtida bruk
EM_960 0x13 Intel 80960
EM_PPC 0x14 PowerPC
EM_PPC64 0x15 PowerPC (64-bitars)
EM_S390 0x16 S390 , inklusive S390x
EM_SPU 0x17 IBM SPU/SPC
0x18 - 0x23 Reserverad för framtida bruk
EM_V800 0x24 NEC V800
EM_FR20 0x25 Fujitsu FR20
EM_RH32 0x26 TRW RH-32
EM_MCOREochEM_RCE 0x27 Motorola RCE
EM_ARM 0x28 ARM (upp till ARMv7/Aarch32)
EM_OLD_ALPHA 0x29 Digital alfa
EM_SH 0x2A superh
EM_SPARCV9 0x2B SPARC version 9
EM_TRICORE 0x2C Siemens TriCore inbyggd 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 inbyggd 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 inbäddad processorfamilj
EM_X86_64 0x3E AMD x86-64
EM_MCST_ELBRUS 0xAF Elbrus (processorarkitektur)
EM_TI_C6000 0x8C TMS320C6000 familj
EM_AARCH64 0xB7 ARM 64-bitar (ARMv8/Aarch64)
EM_RISCV 0xF3 RISC-V
EM_BPF 0xF7 Berkeley paketfilter
EM_65816 0x101 WDC 65C816
fyra e_version Formatera versionsnummer. För närvarande anses endast ett värde vara korrekt.
namn Menande Beskrivning
EV_NONE 0 Felaktigt värde
EV_CURRENT ett Aktuell version
fyra åtta e_entry Den virtuella adressen till ingångspunkten till vilken systemet skickar kontrollen när processen startar. Om filen inte har en ingångspunkt innehåller det här fältet 0.
fyra åtta e_phoff Offset av programhuvudtabellen från början av filen, i byte. Om filen inte har en programhuvudtabell innehåller detta fält 0.
fyra åtta e_shoff Sektionshuvudtabell förskjuten från början av filen, i byte. Om filen inte har en sektionsrubriktabell innehåller det här fältet 0.
fyra e_flags Processorspecifika flaggor associerade med filen . Om de saknas innehåller detta fält 0.
2 e_ehsize Filrubrikstorlek i byte ( 52för 32-bitars och 6464-bitars filer).
2 e_phentsize Storleken på en programhuvud. Alla programhuvuden har samma storlek ( 32för 32-bitarsfiler och 56för 64-bitarsfiler).
2 e_phnum Antalet programrubriker. Om filen inte har en programhuvudtabell innehåller detta fält 0.
2 e_shentsize Storleken på en sektionsrubrik. Alla avsnittsrubriker har samma storlek ( 40för 32-bitarsfiler och 64för 64-bitars).
2 e_shnum Antalet avsnittsrubriker. Om filen inte har en sektionsrubriktabell innehåller det här fältet 0.
2 e_shstrndx Indexet för en post i sektionsrubriktabellen som beskriver tabellen med sektionsnamn (vanligtvis kallas den här tabellen .shstrtab och representerar en separat sektion). Om filen inte innehåller en sektionsnamntabell innehåller det här fältet 0.

Programhuvudtabell

Programhuvudtabellen innehåller rubriker, som var och en beskriver ett separat programsegment och dess attribut, eller annan information som behövs av operativsystemet för att förbereda programmet för exekvering. Denna tabell kan placeras var som helst i filen, dess plats (offset i förhållande till början av filen) beskrivs i e_phoffELF-rubrikfältet.

När man analyserar programhuvudstrukturen kan man hitta olika fältplatser p_flagsför 32-bitars och 64-bitars ELF-filer. Denna skillnad beror på inriktningen av strukturen för att öka bearbetningseffektiviteten.

Programhuvudfält
Storleken namn Ändamål
ÄLVA

32

ÄLVA

64

fyra p_type Typen av segment som denna rubrik beskriver, eller hur man tolkar fältvärdena för denna rubrik.
namn Menande Beskrivning
PT_NULL 0 Titeln används inte, resten av fälten är inte definierade. Den här typen låter dig inkludera ignorerade element i filens programhuvudtabell.
PT_LOAD ett Segmentet som ska laddas, beskrivs av fälten p_fileszoch p_memsz. Byten från filen mappas till ett segment i minnet. Om minnessegmentstorleken ( p_memsz) är större än filsegmentstorleken ( p_filesz), utfylls de extra byten med nollor (de följer omedelbart de byte som definieras i segmentet). Storleken på ett segment i en fil ( p_filesz) kan inte vara större än storleken på ett segment i minnet ( p_memsz). Programtitlarna för de nedladdningsbara segmenten är ordnade i programtitlartabellen i stigande ordning efter fältets värde p_vaddr.
PT_DYNAMIC 2 Programhuvudet ger information om dynamisk länkning.
PT_INTERP 3 Programhuvudet anger storleken och platsen för sökvägen (nollterminerade C - stilsträngar) som ska köras som tolk. Den här typen av segment är bara meningsfull för körbara filer (även om det också kan vara i en delad objektfil); det kan inte förekomma mer än en gång i en fil. Om en rubrik av denna typ finns, måste den föregå varje programhuvud för segmentet som laddas.
PT_NOTE fyra Programhuvudet definierar platsen och storleken på hjälpinformationen.
PT_SHLIB 5 Denna segmenttyp är reserverad, men dess betydelse är odefinierad. Program som innehåller en programhuvud av denna typ överensstämmer inte med ABI.
PT_PHDR 6 Programhuvudet, om det finns, anger platsen och storleken på själva programhuvudtabellen, både i filen och i programmets minnesbild. Denna segmenttyp kan inte förekomma mer än en gång i en fil. Dessutom kan det bara inträffa om det finns en programhuvudtabell i filen. Om en rubrik av denna typ finns, måste den föregå varje programhuvud för segmentet som laddas.
PT_TLS 7 Programhuvudet definierar mönstret för trådlokal lagring. ELF-lastare får inte behålla denna post i programhuvudtabellen.
PT_LOOS-PT_HIOS 1610612736 - 1879048191 Operativsystemberoende värden.
PT_LOPROC-PT_HIPROC 1879048192 - 2147483647 Processorberoende värden.
fyra p_flags Segmentrelaterade flaggor (för ELF64).
namn Menande Beskrivning
PF_X 0x1 Tillstånd att utföra
PF_W 0x2 Skrivtillstånd
PF_R 0x4 Lästillstånd
PF_MASKOS 0x0ff00000 Alla bitar som ingår i detta fält definierar operativsystemberoende värden.
PF_MASKPROC 0xf0000000 Alla bitar som ingår i detta fält definierar processorspecifika värden.
fyra åtta p_offset Segmentoffset från början av filen.
fyra åtta p_vaddr Den virtuella adressen för segmentet i minnet där segmentet ska laddas när det mappas till minnet.
fyra åtta p_paddr Den fysiska adressen för segmentet (för system där det är viktigt).
fyra åtta p_filesz Segmentstorleken i filen. Kan vara null.
fyra åtta p_memsz Storleken på segmentet i minnet. Kan vara null.
fyra p_flags Segmentrelaterade flaggor (för ELF32) (se ovan för möjliga värden).
fyra åtta p_align Segmentinriktning. 0och 1avgöra bristen på anpassning. Annars måste det vara en positiv 2 till en viss grad.

Sektionsrubriktabell

Sektionsrubriktabellen innehåller sektionsattributen för filen. Denna tabell behövs endast av länken, körbara filer behöver inte denna tabell (ELF-laddaren ignorerar den). Informationen som ges i sektionsrubriktabellen används av länkaren för att optimalt ordna dessa sektioner i segment när filen kompileras, med hänsyn till deras attribut.

Sektionsrubrikfält
Storleken namn Ändamål
ÄLVA

32

ÄLVA

64

fyra sh_name Förskjutning av raden som innehåller namnet på denna sektion, i förhållande till början av tabellen med sektionsnamn.
fyra sh_type Typ av rubrik.
namn Menande Beskrivning
SHT_NULL 0 Titeln används inte, resten av fälten är inte definierade.
SHT_PROGBITS ett Avsnittet innehåller information som definieras av programmet, dess format och betydelse bestäms av programmet enbart.
SHT_SYMTAB 2 Avsnittet innehåller symboltabellen. Det kan bara finnas ett sådant avsnitt i en fil för tillfället.
SHT_STRTAB 3 Avsnittet innehåller en tabell med strängar. En fil kan ha många sektioner av denna typ.
SHT_RELA fyra Avsnittet innehåller utökad information om rörelser. En fil kan ha många sektioner av denna typ.
SHT_HASH 5 Avsnittet innehåller en symbolhashtabell. Det kan bara finnas ett sådant avsnitt i en fil för tillfället.
SHT_DYNAMIC 6 Avsnittet innehåller information om dynamisk länkning. Det kan bara finnas ett sådant avsnitt i en fil för tillfället.
SHT_NOTE 7 Avsnittet innehåller information som markerar filen på något sätt.
SHT_NOBITS åtta Avsnittet tar inget utrymme i filen, annars liknar det SHT_PROGBITS.
SHT_REL 9 Avsnittet innehåller information om rörelser. En fil kan ha många sektioner av denna typ.
SHT_SHLIB tio Denna sektionstyp är definierad, men har ingen specifik betydelse.
SHT_DYNSYM elva Avsnittet innehåller symboltabellen. Det kan bara finnas ett sådant avsnitt i en fil för tillfället.
SHT_INIT_ARRAY fjorton Avsnittet innehåller en rad pekare till programinitieringsfunktionerna. Funktioner får inte ta några argument och inte returnera något.
SHT_FINI_ARRAY femton Avsnittet innehåller en rad hänvisningar till programavslutningsfunktionerna. Funktioner får inte ta några argument och inte returnera något.
SHT_PREINIT_ARRAY 16 Avsnittet innehåller en uppsättning pekare till funktioner som anropas innan programinitieringsfunktionerna anropas. Funktioner får inte ta några argument och inte returnera något.
SHT_GROUP 17 Detta avsnitt definierar en grupp av avsnitt. En sektionsgrupp är en samling relaterade sektioner som måste hanteras på ett speciellt sätt av länken. Sådana avsnitt kan bara finnas i flyttbara objektfiler (vars fält e_typehar värdet ET_REL). Rubriken som definierar en grupp av avsnitt måste finnas i avsnittstabellen innan rubrikerna för alla avsnitt som ingår i gruppen definieras.
SHT_SYMTAB_SHNDX arton En sektion är associerad med en symboltabell och är nödvändig om något element i denna tabell refererar till en sektionsrubrik som har ett index SHN_XINDEX(detta händer om sektionsindexet är så stort att det inte får plats i fältet st_shndx). Avsnittet innehåller en rad nummer av typen Elf32_Wordför ELF32 och Elf64_Wordför ELF64. Varje element i denna array motsvarar en post i symboltabellen och placeras i motsvarande ordning. Dessa element är index över avsnittsrubriker till vilka motsvarande symboler är associerade. Om värdet på fältet för st_shndxmotsvarande element i symboltabellen är SHN_XINDEX, innehåller elementet det verkliga sektionsrubrikindexet, annars innehåller elementet 0.
SHT_LOOS-SHT_HIOS 1610612736 - 1879048191 Operativsystemberoende värden.
SHT_LOPROC-SHT_HIPROC 1879048192 - 2147483647 Processorberoende värden.
SHT_LOUSER-SHT_HIUSER 2147483648 - 4294967295 Programberoende värden. Dessa värden kan användas av filhanterare i ELF-format utan konflikt med de för närvarande definierade värdena.
fyra åtta sh_flags avsnittsattribut.
namn Menande Beskrivning
SHF_WRITE 0x1 Skrivtillstånd.
SHF_ALLOC 0x2 Avsnittet tar upp minne medan processen körs. Vissa tjänstesektioner laddas inte in i minnet när en objektfil laddas; för sådana sektioner är denna flagga inaktiverad.
SHF_EXECINSTR 0x4 Avsnittet innehåller körbara maskininstruktioner.
SHF_MERGE 0x10 Data i en partition kan kombineras för att eliminera dubbelarbete. Om flaggan SHF_STRINGSinte är inställd har dataelementen i sektionen samma storlek. Storleken på ett element anges i fältet sh_entsize. Om flaggan SHF_STRINGSär inställd består sektionen av arrayer med nollterminerade tecken och storleken på ett tecken anges i fältet sh_entsize.

Varje element i en sektion jämförs med andra element i sektioner med samma namn, typ och flaggor. Element som kommer att ha samma värde under programkörning kan kombineras. Flyttningar som hänvisar till medlemmar i sådana sektioner måste lösas i enlighet med detta. Innan sammanslagning måste alla element i en sektion analyseras för att avgöra om värdena kommer att vara identiska under körning.

Denna förening är inte ett krav för efterlevnad av ABI.

SHF_STRINGS 0x20 En sektion består av arrayer av nollterminerade tecken. Storleken på ett tecken anges i fältet sh_entsize.
SHF_INFO_LINK 0x40 Sektionsrubrikfältet sh_infoinnehåller indexet för sektionsrubriktabellposten.
SHF_LINK_ORDER 0x80 Särskilda platskrav. Kraven gäller om sh_linkavsnittsrubrikfältet hänvisar till ett annat avsnitt (relaterat avsnitt). Om det sh_linklänkade avsnittsfältet inte innehåller 0måste det aktuella avsnittet finnas i utdatafilen i samma ordning i förhållande till det länkade avsnittet som det länkade avsnittet är i förhållande till avsnittet som det är länkat till.
SHF_OS_NONCONFORMING 0x100 Avsnittet kräver speciell, operativsystemspecifik hantering för att förhindra felaktigt beteende.
SHF_GROUP 0x200 Sektion - ett element (möjligen det enda) i en grupp av sektioner
SHF_TLS 0x400 Avsnittet innehåller trådlokal lagring, varje tråd kommer att ha sin egen kopia av detta avsnitt.
SHF_COMPRESSED 0x800 Avsnittet innehåller komprimerad data. Denna flagga gäller endast för sektioner för vilka minne inte allokeras när en objektfil laddas in i minnet. Flaggan används inte i kombination med SHF_ALLOC. Denna flagga gäller inte heller för sektioner av typ SHT_NOBITS.

Alla rörelser relaterade till en komprimerad sektion refererar till dess data i okomprimerat tillstånd. Därför är sektionsdekompression nödvändig för att tillåta rörelse. Varje komprimerad sektion definierar sin egen komprimeringsalgoritm. Det är acceptabelt att olika sektioner i en ELF-objektfil använder olika komprimeringsalgoritmer.

Komprimerade sektioner börjar med en rubrik som identifierar komprimeringsalgoritmen.

Komprimerade avsnittsrubrikfält
Storleken namn Ändamål
ÄLVA

32

ÄLVA

64

fyra fyra ch_type komprimeringsalgoritm.
namn Menande Beskrivning
ELFCOMPRESS_ZLIB ett Data i avsnittet komprimeras med Zlib- algoritmen . Komprimerad data följer omedelbart efter rubriken och före slutet av avsnittet.
ELFCOMPRESS_LOOS-ELFCOMPRESS_HIOS 1610612736 - 1879048191 Operativsystemberoende värden.
ELFCOMPRESS_LOPROC-ELFCOMPRESS_HIPROC 1879048192 - 2147483647 Processorberoende värden.
fyra ch_reserved Reserverad för framtida bruk.
fyra åtta ch_size Storleken i byte för den dekomprimerade sektionen.
fyra åtta ch_addralign Krävs inriktning för den dekomprimerade sektionen.
SHF_MASKOS 0x0ff00000 Alla bitar som ingår i detta fält definierar operativsystemberoende värden.
SHF_MASKPROC 0xf0000000 Alla bitar som ingår i detta fält definierar processorspecifika värden.
fyra åtta sh_addr Om sektionen ska laddas in i minnet när objektfilen laddas, anger detta fält adressen från vilken sektionen ska laddas, annars innehåller fältet 0.
fyra åtta sh_offset Sektionsförskjutning från början av filen i byte. Typavsnitt SHT_NOBITStar inte upp plats i filen, för dem innehåller detta fält den begreppsmässiga platsen i filen.
fyra åtta sh_size Sektionsstorlek i filen. Kan vara null.
fyra sh_link Indexet för det associerade avsnittet. Detta fält kan ha olika syften beroende på rubriktyp. Tolkning av fält sh_linkoch sh_infoberoende på fältets värdesh_type
sh_type sh_link sh_info
SHT_DYNAMIC Indexet för strängtabellssektionshuvudet som används av elementen i det här avsnittet. 0
SHT_HASH Index för rubriken för symboltabellsektionen som denna hashtabell tillhör. 0
SHT_REL,SHT_RELA Sektionshuvudindex för den tillhörande symboltabellen. Sektionsrubrikindex som flyttuppgifterna ska tillämpas på.
SHT_SYMTAB,SHT_DYNSYM Index för sektionshuvudet för den tillhörande strängtabellen. En mer än indexet för den sista lokala symbolen ( STB_LOCAL) i symboltabellen.
SHT_GROUP Sektionshuvudindex för den tillhörande symboltabellen. Indexet för elementet i den tillhörande symboltabellen. Namnet på det angivna elementet ger sektionsgruppens signatur.
SHT_SYMTAB_SHNDX Sektionsrubrikindex för den tillhörande symboltabellsektionen. 0
fyra sh_info Ytterligare information om avsnittet (se ovan för möjliga värden).
fyra åtta sh_addralign Erforderlig sektionsinriktning.
fyra åtta sh_entsize Storleken i byte för varje post (om avsnittet innehåller en array av poster med fast storlek, annars innehåller fältet 0).

Innehåll i avsnitt och segment

Utilities

Det finns många verktyg för att arbeta med ELF-filer, de viktigaste finns i GNU Binutils mjukvaruverktygssats :

Se även

Anteckningar

  1. System V Application Binary Interface Arkiverad 21 maj 2015 på Wayback Machine Edition 4.1 (1997-03-18 )
  2. ELF-specifikation Arkiverad 16 juni 2012 på  Wayback Machine
  3. ELF-64 Object File Format Arkiverad 1 juli 2015 på Wayback Machine
  4. FreshPorts -- devel/elfutils . www.freshports.org. Hämtad 31 mars 2018. Arkiverad från originalet 16 februari 2018.

Länkar