xref: /netbsd-src/share/man/man5/elf.5 (revision 8ae6144b338cbe44f6f817d2788b84d13957b9e8)
1*8ae6144bSmsaitoh.\"	$NetBSD: elf.5,v 1.16 2024/05/13 00:01:53 msaitoh Exp $
26ce5077cSpooka.\"
35eb3bf91Sthorpej.\" Copyright (c) 2001, 2002 The NetBSD Foundation, Inc.
46ce5077cSpooka.\" All rights reserved.
56ce5077cSpooka.\"
66ce5077cSpooka.\" This document is derived from work contributed to The NetBSD Foundation
75eb3bf91Sthorpej.\" by Antti Kantee.
86ce5077cSpooka.\"
96ce5077cSpooka.\" Redistribution and use in source and binary forms, with or without
106ce5077cSpooka.\" modification, are permitted provided that the following conditions
116ce5077cSpooka.\" are met:
126ce5077cSpooka.\" 1. Redistributions of source code must retain the above copyright
136ce5077cSpooka.\"    notice, this list of conditions and the following disclaimer.
146ce5077cSpooka.\" 2. Redistributions in binary form must reproduce the above copyright
156ce5077cSpooka.\"    notice, this list of conditions and the following disclaimer in the
166ce5077cSpooka.\"    documentation and/or other materials provided with the distribution.
176ce5077cSpooka.\"
186ce5077cSpooka.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
196ce5077cSpooka.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
206ce5077cSpooka.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
216ce5077cSpooka.\" PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE
226ce5077cSpooka.\" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
236ce5077cSpooka.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
246ce5077cSpooka.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
256ce5077cSpooka.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
266ce5077cSpooka.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
276ce5077cSpooka.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
286ce5077cSpooka.\" POSSIBILITY OF SUCH DAMAGE.
296ce5077cSpooka.\"
30e518d424Spooka.Dd November 18, 2006
316ce5077cSpooka.Dt ELF 5
326ce5077cSpooka.Os
336ce5077cSpooka.Sh NAME
346ce5077cSpooka.Nm ELF
356ce5077cSpooka.Nd executable and linking format
366ce5077cSpooka.Sh SYNOPSIS
37472351e1Swiz.In elf.h
386ce5077cSpooka.Sh DESCRIPTION
396ce5077cSpookaBecause of the flexible nature of ELF, the structures describing it are
406ce5077cSpookaavailable both as 32bit and 64bit versions. This document uses the 32bit
416ce5077cSpookaversions, refer to
425e015e5eSjoerg.In elf.h
436ce5077cSpookafor the corresponding 64bit versions.
446ce5077cSpooka.Pp
455eb3bf91SthorpejThe four main types of an ELF object file are:
466ce5077cSpooka.Bl -tag -width "relocatable"
476ce5077cSpooka.It executable
486ce5077cSpookaA file suitable for execution. It contains the information required for
496ce5077cSpookacreating a new process image.
506ce5077cSpooka.It relocatable
516ce5077cSpookaContains the necessary information to be run through the link editor
526ce5077cSpooka.Xr ld 1
536ce5077cSpookato create an executable or a shared library.
546ce5077cSpooka.It shared
556ce5077cSpookaThe shared object contains necessary information which can be used by
566ce5077cSpookaeither the link editor
576ce5077cSpooka.Xr ld 1
586ce5077cSpookaat link time or by the dynamic loader
59deaad9bdSpooka.Xr ld.elf_so 1
606ce5077cSpookaat run time.
615eb3bf91Sthorpej.It core
625eb3bf91SthorpejA file which describes the virtual address space and register state
635eb3bf91Sthorpejof a process.  Core files are typically used in conjunction with
645eb3bf91Sthorpejdebuggers such as
655eb3bf91Sthorpej.Xr gdb 1 .
666ce5077cSpooka.El
676ce5077cSpooka.Pp
68deaad9bdSpookaELF files have a dual nature. The toolchain, including tools such as the
696ce5077cSpooka.Xr as 1
706ce5077cSpookaand linker
71deaad9bdSpooka.Xr ld 1 ,
72deaad9bdSpookatreats them as a set of sections described by their section headers. The system
736ce5077cSpookaloader treats them as a set of segments described by the program headers.
746ce5077cSpooka.Pp
756ce5077cSpookaThe general format of an ELF file is the following: The file starts with an
766ce5077cSpookaELF header. This is followed by a table of program headers (optional for
77deaad9bdSpookarelocatable and shared files). After this come the sections/segments.
786ce5077cSpookaThe file ends with a table of section headers (optional for executable
796ce5077cSpookafiles).
806ce5077cSpooka.Pp
81deaad9bdSpookaA segment can be considered to consist of several sections. For example,
82deaad9bdSpookaall executable sections are typically packed into one loadable segment
83deaad9bdSpookawhich is read-only and executable (see
84deaad9bdSpooka.Fa p_flags
85deaad9bdSpookain the program header). This enables the system to map the entire file with
86deaad9bdSpookajust a few operations, one for each loadable segment, instead of doing
87deaad9bdSpookanumerous map operations for each section separately.
886ce5077cSpooka.Pp
896ce5077cSpookaEach file is described by the ELF header:
906ce5077cSpooka.Bd -literal -offset indent
916ce5077cSpookatypedef struct {
926ce5077cSpooka	unsigned char	e_ident[ELF_NIDENT];
936ce5077cSpooka	Elf32_Half	e_type;
946ce5077cSpooka	Elf32_Half	e_machine;
956ce5077cSpooka	Elf32_Word	e_version;
966ce5077cSpooka	Elf32_Addr	e_entry;
976ce5077cSpooka	Elf32_Off	e_phoff;
986ce5077cSpooka	Elf32_Off	e_shoff;
996ce5077cSpooka	Elf32_Word	e_flags;
1006ce5077cSpooka	Elf32_Half	e_ehsize;
1016ce5077cSpooka	Elf32_Half	e_phentsize;
1026ce5077cSpooka	Elf32_Half	e_phnum;
1036ce5077cSpooka	Elf32_Half	e_shentsize;
1046ce5077cSpooka	Elf32_Half	e_shnum;
1056ce5077cSpooka	Elf32_Half	e_shstrndx;
1066ce5077cSpooka} Elf32_Ehdr;
1076ce5077cSpooka.Ed
1086ce5077cSpooka.Pp
1096ce5077cSpooka.Bl -tag -width "e_phentsize"
1106ce5077cSpooka.It Fa e_ident[]
1116ce5077cSpookaThe array contains the following information in the indicated locations:
1126ce5077cSpooka.Bl -tag -width EI_ABIVERSION
1132cfd4db5Spooka.It Dv EI_MAG0
1146ce5077cSpookaThe elements ranging from
1152cfd4db5Spooka.Dv EI_MAG0
1166ce5077cSpookato
1172cfd4db5Spooka.Dv EI_MAG3
1186ce5077cSpookacontain the ELF magic number: \\0177ELF
1196ce5077cSpooka.It Dv EI_CLASS
1206ce5077cSpookaContains the address size of the binary, either 32 or 64bit.
1216ce5077cSpooka.It Dv EI_DATA
1226ce5077cSpookabyte order
1236ce5077cSpooka.It Dv EI_VERSION
1246ce5077cSpookaContains the ELF header version. This is currently always set to 1.
1256ce5077cSpooka.It Dv EI_OSABI
126deaad9bdSpookaContains the operating system ABI identification. Note that even though the
127deaad9bdSpookadefinition
128deaad9bdSpooka.Dv ELFOSABI_NETBSD
129deaad9bdSpookaexists,
130deaad9bdSpooka.Nx
131deaad9bdSpookauses
132deaad9bdSpooka.Dv ELFOSABI_SYSV
133deaad9bdSpookahere, since the
134deaad9bdSpooka.Nx
135deaad9bdSpookaABI does not deviate from the standard.
1366ce5077cSpooka.It Dv EI_ABIVERSION
1376ce5077cSpookaABI version.
1386ce5077cSpooka.El
1396ce5077cSpooka.It Fa e_type
1406ce5077cSpookaContains the file type identification. It can be either
1416ce5077cSpooka.Dv ET_REL ,
1426ce5077cSpooka.Dv ET_EXEC ,
1436ce5077cSpooka.Dv ET_DYN ,
1446ce5077cSpookaor
1456ce5077cSpooka.Dv ET_CORE
1466ce5077cSpookafor relocatable, executable, shared, or core, respectively.
1476ce5077cSpooka.It Fa e_machine
1486ce5077cSpookaContains the machine type, e.g. SPARC, Alpha, MIPS, ...
1496ce5077cSpooka.It Fa e_entry
1506ce5077cSpookaThe program entry point if the file is executable.
1516ce5077cSpooka.It Fa e_phoff
1526ce5077cSpookaThe position of the program header table in the file or 0 if it doesn't exist.
1536ce5077cSpooka.It Fa e_shoff
1546ce5077cSpookaThe position of the section header table in the file or 0 if it doesn't exist.
1556ce5077cSpooka.It Fa e_flags
156deaad9bdSpookaContains processor-specific flags. For example, the SPARC port uses this
157deaad9bdSpookaspace to specify what kind of memory store ordering is required.
1586ce5077cSpooka.It Fa e_ehsize
1596ce5077cSpookaThe size of the ELF header.
1606ce5077cSpooka.It Fa e_phentsize
161deaad9bdSpookaThe size of an entry in the program header table. All entries are the same
162deaad9bdSpookasize.
1636ce5077cSpooka.It Fa e_phnum
1646ce5077cSpookaThe number of entries in the program header table, or 0 if none exists.
1656ce5077cSpooka.It Fa e_shentsize
166deaad9bdSpookaThe size of an entry in the section header table. All entries are the same
167deaad9bdSpookasize.
1686ce5077cSpooka.It Fa e_shnum
1696ce5077cSpookaThe number of entries in the section header table, or 0 if none exists.
1706ce5077cSpooka.It Fa e_shstrndx
1716ce5077cSpookaContains the index number of the section which contains the section
1726ce5077cSpookaname strings.
1736ce5077cSpooka.El
1746ce5077cSpooka.Pp
1756ce5077cSpookaEach ELF section in turn is described by the section header:
1766ce5077cSpooka.Bd -literal -offset indent
1776ce5077cSpookatypedef struct {
1786ce5077cSpooka	Elf32_Word	sh_name;
1796ce5077cSpooka	Elf32_Word	sh_type;
1806ce5077cSpooka	Elf32_Word	sh_flags;
1816ce5077cSpooka	Elf32_Addr	sh_addr;
1826ce5077cSpooka	Elf32_Off	sh_offset;
1836ce5077cSpooka	Elf32_Word	sh_size;
1846ce5077cSpooka	Elf32_Word	sh_link;
1856ce5077cSpooka	Elf32_Word	sh_info;
1866ce5077cSpooka	Elf32_Word	sh_addralign;
1876ce5077cSpooka	Elf32_Word	sh_entsize;
1886ce5077cSpooka} Elf32_Shdr;
1896ce5077cSpooka.Ed
1906ce5077cSpooka.Pp
1916ce5077cSpooka.Bl -tag -width "sh_addralign"
1926ce5077cSpooka.It Fa sh_name
1936ce5077cSpookaContains an index to the position in the section header string section where
1946ce5077cSpookathe name of the current section can be found.
1956ce5077cSpooka.It Fa sh_type
1966ce5077cSpookaContains the section type indicator. The more important possible values are:
1976ce5077cSpooka.Bl -tag -width "SHT_PROGBITS"
1986ce5077cSpooka.It Dv SHT_NULL
1996ce5077cSpookaSection is inactive. The other fields contain undefined values.
2006ce5077cSpooka.It Dv SHT_PROGBITS
2016ce5077cSpookaSection contains program information. It can be for example code, data,
2026ce5077cSpookaor debugger information.
2036ce5077cSpooka.It Dv SHT_SYMTAB
2046ce5077cSpookaSection contains a symbol table. This section usually contains all the
2056ce5077cSpookasymbols and is intended for the regular link editor
2066ce5077cSpooka.Xr ld 1 .
2076ce5077cSpooka.It Dv SHT_STRTAB
2086ce5077cSpookaSection contains a string table.
2096ce5077cSpooka.It Dv SHT_RELA
210deaad9bdSpookaSection contains relocation information with an explicit addend.
2116ce5077cSpooka.It Dv SHT_HASH
2126ce5077cSpookaSection contains a symbol hash table.
2136ce5077cSpooka.It Dv SHT_DYNAMIC
2146ce5077cSpookaSection contains dynamic linking information.
2156ce5077cSpooka.It Dv SHT_NOTE
2166ce5077cSpookaSection contains some special information. The format can be e.g.
2176ce5077cSpookavendor-specific.
2186ce5077cSpooka.It Dv SHT_NOBITS
2196ce5077cSpookaSections contains information similar to
2206ce5077cSpooka.Dv SHT_PROGBITS ,
2216ce5077cSpookabut takes up no space in the file. This can be used for e.g. bss.
2226ce5077cSpooka.It Dv SHT_REL
223deaad9bdSpookaSection contains relocation information without an explicit addend.
2246ce5077cSpooka.It Dv SHT_SHLIB
2256ce5077cSpookaThis section type is reserved but has unspecified semantics.
2266ce5077cSpooka.It Dv SHT_DYNSYM
2276ce5077cSpookaSection contains a symbol table. This symbol table is intended for the
2286ce5077cSpookadynamic linker, and is kept as small as possible to conserve space, since
2296ce5077cSpookait must be loaded to memory at run time.
2306ce5077cSpooka.El
2316ce5077cSpooka.It Fa sh_flags
2326ce5077cSpookaContains the section flags, which can have the following values or any
2336ce5077cSpookacombination of them:
2346ce5077cSpooka.Bl -tag -width SHF_EXECINSTR
2356ce5077cSpooka.It Dv SHF_WRITE
2366ce5077cSpookaSection is writable after it has been loaded.
2376ce5077cSpooka.It Dv SHF_ALLOC
2386ce5077cSpookaSection will occupy memory at run time.
2396ce5077cSpooka.It Dv SHF_EXECINSTR
2406ce5077cSpookaSection contains executable machine instructions.
2416ce5077cSpooka.El
2426ce5077cSpooka.It Fa sh_addr
2436ce5077cSpookaAddress to where the section will be loaded, or 0 if this section does not
2446ce5077cSpookareside in memory at run time.
2456ce5077cSpooka.It Fa sh_offset
2466ce5077cSpookaThe byte offset from the beginning of the file to the beginning of this
2476ce5077cSpookasection. If the section is of type
2486ce5077cSpooka.Dv SHT_NOBITS ,
2496ce5077cSpookathis field specifies the conceptual placement in the file.
2506ce5077cSpooka.It Fa sh_size
2516ce5077cSpookaThe size of the section in the file for all types except
2526ce5077cSpooka.Dv SHT_NOBITS .
2536ce5077cSpookaFor that type the value may differ from zero, but the section will still
2546ce5077cSpookaalways take up no space from the file.
2556ce5077cSpooka.It Fa sh_link
2566ce5077cSpookaContains an index to the section header table. The interpretation depends
2576ce5077cSpookaon the section type as follows:
2586ce5077cSpooka.Pp
2596ce5077cSpooka.Bl -tag -compact -width SHT_DYNAMIC
2606ce5077cSpooka.It Dv SHT_REL
2616ce5077cSpooka.It Dv SHT_RELA
2626ce5077cSpookaSection index of the associated symbol table.
2636ce5077cSpooka.Pp
2646ce5077cSpooka.It Dv SHT_SYMTAB
2656ce5077cSpooka.It Dv SHT_DYNSYM
2666ce5077cSpookaSection index of the associated string table.
2676ce5077cSpooka.Pp
2686ce5077cSpooka.It Dv SHT_HASH
2696ce5077cSpookaSection index of the symbol table to which the hash table applies.
2706ce5077cSpooka.Pp
2716ce5077cSpooka.It Dv SHT_DYNAMIC
272*8ae6144bSmsaitohSection index of the string table by which entries in this section are used.
2736ce5077cSpooka.El
2746ce5077cSpooka.It Fa sh_info
2756ce5077cSpookaContains extra information. The interpretation depends on the type as
2766ce5077cSpookafollows:
2776ce5077cSpooka.Pp
2786ce5077cSpooka.Bl -tag -compact -width SHT_DYNSYM
2796ce5077cSpooka.It Dv SHT_REL
2806ce5077cSpooka.It Dv SHT_RELA
2816ce5077cSpookaSection index of the section to which the relocation information applies.
2826ce5077cSpooka.Pp
2836ce5077cSpooka.It Dv SHT_SYMTAB
2846ce5077cSpooka.It Dv SHT_DYNSYM
2856ce5077cSpookaContains a value one greater that the last local symbol table index.
2866ce5077cSpooka.El
2876ce5077cSpooka.It Fa sh_addralign
2886ce5077cSpookaMarks the section alignment requirement. If, for example, the section contains
2896ce5077cSpookaa doubleword, the entire section must be doubleword aligned to ensure proper
2906ce5077cSpookaalignment. Only 0 and integral powers of two are allowed. Values 0 and 1
2916ce5077cSpookadenote that the section has no alignment.
2926ce5077cSpooka.It Fa sh_entsize
2938a940b23SuebayasiContains the entry size of an element for sections which are constructed
2946ce5077cSpookaof a table of fixed-size entries. If the section does not hold a table of
2956ce5077cSpookafixed-size entries, this value is 0.
2966ce5077cSpooka.El
2976ce5077cSpooka.Pp
2986ce5077cSpookaEvery executable object must contain a program header. The program header
2996ce5077cSpookacontains information necessary in constructing a process image.
3006ce5077cSpooka.Bd -literal -offset indent
3016ce5077cSpookatypedef struct {
3026ce5077cSpooka	Elf32_Word	p_type;
3036ce5077cSpooka	Elf32_Off	p_offset;
3046ce5077cSpooka	Elf32_Addr	p_vaddr;
3056ce5077cSpooka	Elf32_Addr	p_paddr;
3066ce5077cSpooka	Elf32_Word	p_filesz;
3076ce5077cSpooka	Elf32_Word	p_memsz;
3086ce5077cSpooka	Elf32_Word	p_flags;
3096ce5077cSpooka	Elf32_Word	p_align;
3106ce5077cSpooka} Elf32_Phdr;
3116ce5077cSpooka.Ed
3126ce5077cSpooka.Pp
3136ce5077cSpooka.Bl -tag -width p_offset
3146ce5077cSpooka.It Fa p_type
3156ce5077cSpookaContains the segment type indicator. The possible values are:
3166ce5077cSpooka.Bl -tag -width PT_DYNAMIC
3176ce5077cSpooka.It Dv PT_NULL
3186ce5077cSpookaSegment is inactive. The other fields contain undefined values.
3196ce5077cSpooka.It Dv PT_LOAD
3206ce5077cSpookaSegment is loadable. It is loaded to the address described by
3216ce5077cSpooka.Fa p_vaddr .
3226ce5077cSpookaIf
3236ce5077cSpooka.Fa p_memsz
3246ce5077cSpookais greater than
3256ce5077cSpooka.Fa p_filesz ,
3266ce5077cSpookathe memory range from
3276ce5077cSpooka.Po Fa p_vaddr
3286ce5077cSpooka+
3296ce5077cSpooka.Fa p_filesz Pc
3306ce5077cSpookato
3316ce5077cSpooka.Po Fa p_vaddr
3326ce5077cSpooka+
3336ce5077cSpooka.Fa p_memsz Pc
3346ce5077cSpookais zero-filled when the segment is loaded.
3356ce5077cSpooka.Fa p_filesz
3366ce5077cSpookacan not be greater than
3376ce5077cSpooka.Fa p_memsz .
3386ce5077cSpookaSegments of this type are sorted in the header table by
3396ce5077cSpooka.Fa p_vaddr
3406ce5077cSpookain ascending order.
3416ce5077cSpooka.It Dv PT_DYNAMIC
3426ce5077cSpookaSegment contains dynamic linking information.
3436ce5077cSpooka.It Dv PT_INTERP
3446ce5077cSpookaSegment contains a null-terminated path name to the interpreter. This segment
3456ce5077cSpookamay be present only once in a file, and it must appear before any loadable
346deaad9bdSpookasegments. This field will most likely contain the ELF dynamic loader:
347e518d424Spooka.Pa /libexec/ld.elf_so
3486ce5077cSpooka.It Dv PT_NOTE
3496ce5077cSpookaSegment contains some special information. Format can be e.g. vendor-specific.
3506ce5077cSpooka.It Dv PT_SHLIB
3516ce5077cSpookaThis segment type is reserved but has unspecified semantics. Programs
352deaad9bdSpookawhich contain a segment of this type do not conform to the ABI, and must
353deaad9bdSpookaindicate this by setting the appropriate ABI in the ELF header
354deaad9bdSpooka.Dv EI_OSABI
355deaad9bdSpookafield.
3566ce5077cSpooka.It Dv PT_PHDR
357deaad9bdSpookaThe values in a program header of this type specify the characteristics
358deaad9bdSpookaof the program header table itself. For example, the
359deaad9bdSpooka.Fa p_vaddr
360deaad9bdSpookafield specifies the program header table location in memory once the
361deaad9bdSpookaprogram is loaded. This field may not occur more than once, may occur only
362deaad9bdSpookaif the program header table is part of the file memory image, and must
363deaad9bdSpookacome before any loadable segments.
3646ce5077cSpooka.El
3656ce5077cSpooka.It Fa p_offset
3666ce5077cSpookaContains the byte offset from the beginning of the file to the beginning
3676ce5077cSpookaof this segment.
3686ce5077cSpooka.It Fa p_vaddr
3696ce5077cSpookaContains the virtual memory address to which this segment is loaded.
3706ce5077cSpooka.It Fa p_paddr
371deaad9bdSpookaContains the physical address to which this segment is loaded. This value
372deaad9bdSpookais usually ignored, but may be used while bootstrapping or in embedded
373deaad9bdSpookasystems.
3746ce5077cSpooka.It Fa p_filesz
3756ce5077cSpookaContains the number of bytes this segment occupies in the file image.
3766ce5077cSpooka.It Fa p_memsz
3776ce5077cSpookaContains the number of bytes this segment occupies in the memory image.
3786ce5077cSpooka.It Fa p_flags
3796ce5077cSpookaContains the segment flags, which specify the permissions for the segment
3806ce5077cSpookaafter it has been loaded. The following values or any combination of them
3816ce5077cSpookais acceptable:
3826ce5077cSpooka.Bl -tag -width PF_R
3836ce5077cSpooka.It Dv PF_R
3846ce5077cSpookaSegment can be read.
385542ed9c1Swiz.It Dv PF_W
3866ce5077cSpookaSegment can be written.
3876ce5077cSpooka.It Dv PF_X
3886ce5077cSpookaSegment is executable.
3896ce5077cSpooka.El
3906ce5077cSpooka.It Fa p_align
3916ce5077cSpookaContains the segment alignment. Acceptable values are 0 and 1 for no alignment,
3926ce5077cSpookaand integral powers of two.
3936ce5077cSpooka.Fa p_vaddr
3946ce5077cSpookashould equal
3956ce5077cSpooka.Fa p_offset
3966ce5077cSpookamodulo
3976ce5077cSpooka.Fa p_align .
3986ce5077cSpooka.El
3996ce5077cSpooka.Sh SEE ALSO
4006ce5077cSpooka.Xr as 1 ,
4016ce5077cSpooka.Xr gdb 1 ,
4026ce5077cSpooka.Xr ld 1 ,
403deaad9bdSpooka.Xr ld.elf_so 1 ,
4046ce5077cSpooka.Xr execve 2 ,
4056ce5077cSpooka.Xr nlist 3 ,
4066ce5077cSpooka.Xr a.out 5 ,
40742704c41Swiz.Xr core 5 ,
4086ce5077cSpooka.Xr link 5 ,
40942704c41Swiz.Xr stab 5
4106ce5077cSpooka.Sh HISTORY
4115eb3bf91SthorpejThe ELF object file format first appeared in
4126ce5077cSpooka.At V .
413