Accueil

CPU_SET
INFINITY
MB_CUR_MAX
MB_LEN_MAX
__setfpucw
_exit
_syscall
a64l
abort
abs
accept
access
acct
acos
acosh
addpart
addseverity
adduser
adjtime
adjtimex
aio_cancel
aio_error
aio_fsync
aio_read
aio_return
aio_suspend
aio_write
alarm
alloc_hugepages
alloca
apropos
arch
arch_prctl
argz_add
armscii-8
arp
ascii
asin
asinh
asprintf
assert
assert_perror
at
atan
atan2
atanh
atd
atexit
atof
atoi
atq
atrm
atrun
backend-spec
backtrace
basename
bash
bashbug
batch
bcmp
bcopy
bdflush
bind
bindresvport
blockdev
boot
bootlogd
bootparam
bosskill
brk
bsd_signal
bsearch
bstring
btowc
btree
builtin
builtins
byteorder
bzero
c
cabs
cacheflush
cacos
cacosh
cal
canonicalize_file_name
capabilities
capget
carg
casin
casinh
catan
catanh
catgets
catopen
cbrt
ccos
ccosh
ceil
cerf
cexp
cexp2
cfree
chage
charmap
charsets
chatise
chdir
chgrp
chmod
chown
chpasswd
chroot
chrt
chsh
cimag
clearenv
clock
clock_getcpuclockid
clock_getres
clock_nanosleep
clog
clog10
clog2
clone
close
closedir
cmp
cmsg
col
complex
confstr
conj
connect
console
console_codes
console_ioctl
consoletype
copysign
core
cos
cosh
cp
cp1251
cpow
cproj
cpuid
cpuset
creal
create_module
createrepo
credentials
cron
crond
crontab
crypt
crypttab
csin
csinh
csqrt
ctan
ctanh
ctermid
ctime
ctluser
ctrlaltdel
daemon
db2dvi
db2html
db2pdf
db2ps
db2rtf
dbopen
dd
ddp
delete_module
delpart
depmod
des_crypt
df
diff
diff3
difftime
dir
dir_colors
dircolors
dirfd
div
dl_iterate_phdr
dlopen
dmesg
docbook2dvi
docbook2html
docbook2man
docbook2man-spec
docbook2pdf
docbook2ps
docbook2rtf
docbook2tex
docbook2texi
docbook2texi-spec
docbook2txt
doexec
domainname
dprintf
drand48
drand48_r
dsp56k
du
dup
dysize
ecvt
ecvt_r
egrep
eject
elf
encrypt
end
endian
environ
envz_add
epoll
epoll_create
epoll_ctl
epoll_wait
erf
erfc
err
errno
error
ether_aton
ethers
euidaccess
eventfd
evim
exec
execve
exit
exit_group
exp
exp10
exp2
expm1
exportfs
exports
fabs
faccessat
faillog
fallocate
fchmodat
fchownat
fclose
fcloseall
fcntl
fd
fdformat
fdim
fdisk
feature_test_macros
fenv
ferror
fexecve
fflush
ffs
fgetgrent
fgetpwent
fgetwc
fgetws
fgrep
fifo
filesystems
finite
flock
flockfile
floor
fma
fmax
fmemopen
fmin
fmod
fmtmsg
fnmatch
fopen
fopencookie
fork
fpathconf
fpclassify
fpurge
fputwc
fputws
fread
free
frexp
frontend-spec
fseek
fseeko
fstab
fstab-decode
fstatat
fsync
ftime
ftok
ftpusers
fts
ftw
full
fuser
futex
futimes
futimesat
fwide
gamma
gcvt
get_kernel_syms
get_mempolicy
get_thread_area
getaddrinfo
getcontext
getcpu
getcwd
getdate
getdents
getdirentries
getdomainname
getdtablesize
getenv
getfsent
getgid
getgrent
getgrent_r
getgrnam
getgrouplist
getgroups
gethostbyname
gethostid
gethostname
getifaddrs
getipnodebyname
getitimer
getkey
getline
getloadavg
getlogin
getmntent
getnameinfo
getnetent
getnetent_r
getopt
getpagesize
getpass
getpeername
getpid
getpriority
getprotoent
getprotoent_r
getpt
getpw
getpwent
getpwent_r
getpwnam
getresuid
getrlimit
getrpcent
getrpcent_r
getrpcport
getrusage
gets
getservent
getservent_r
getsid
getsockname
getsockopt
getsubopt
gettid
gettimeofday
getttyent
getuid
getumask
getusershell
getutent
getutmp
getw
getwchar
getxattr
glob
gnu_get_libc_version
gpasswd
grantpt
grep
group
groupadd
groupdel
groupmod
grpck
grpconv
grpunconv
gshadow
gsignal
gssd
gunzip
guru
gzexe
gzip
halt
hash
hd
hier
host
hostname
hosts
hsearch
hypot
i386
icmp
iconv
iconv_close
iconv_open
idle
idmapd
ifconfig
ilogb
index
inet
inet_ntop
inet_pton
infnan
init
init_module
initgroups
initlog
initrd
initscript
inittab
inotify
inotify_add_watch
inotify_init
inotify_rm_watch
insmod
insque
install
install-catalog
intro
io_cancel
io_destroy
io_getevents
io_setup
io_submit
ioctl
ioctl_list
ioperm
iopl
ioprio_set
ip
ipc
ipcalc
ipcrm
ipcs
ipv6
isalpha
isatty
isgreater
iso_8859-1
iso_8859-10
iso_8859-11
iso_8859-13
iso_8859-14
iso_8859-15
iso_8859-16
iso_8859-2
iso_8859-3
iso_8859-4
iso_8859-5
iso_8859-6
iso_8859-7
iso_8859-8
iso_8859-9
issue
iswalnum
iswalpha
iswblank
iswcntrl
iswctype
iswdigit
iswgraph
iswlower
iswprint
iswpunct
iswspace
iswupper
iswxdigit
j0
jade
jw
key_setsecret
kill
killall
killall5
killpg
koi8-r
koi8-u
last
lastb
lastlog
ld
ldconfig
ldd
ldexp
lgamma
libc
link
linkat
linux32
linux64
listen
listxattr
llseek
ln
locale
localeconv
lockd
lockf
log
log10
log1p
log2
logb
login
longjmp
lookup_dcookie
lp
lrint
lround
ls
lsearch
lseek
lseek64
lsmod
lspci
lsusb
madvise
mailaddr
makecontext
makedev
makewhatis
malloc
malloc_hook
man
man-pages
math_error
matherr
mbind
mblen
mbrlen
mbrtowc
mbsinit
mbsnrtowcs
mbsrtowcs
mbstowcs
mbtowc
mcookie
mdoc
mem
memccpy
memchr
memcmp
memcpy
memfrob
memmem
memmove
mempcpy
memset
mesg
mincore
mkdir
mkdirat
mkdtemp
mkfifo
mkfifoat
mkfs
mknod
mknodat
mkstemp
mkswap
mktemp
mlock
mmap
mmap2
modf
modify_ldt
modifyrepo
modinfo
modprobe
more
motd
mount
mountd
mountpoint
mouse
move_pages
mpool
mprotect
mq_close
mq_getattr
mq_getsetattr
mq_notify
mq_open
mq_overview
mq_receive
mq_send
mq_unlink
mremap
msgctl
msgget
msgop
msr
msync
mtrace
mv
nan
nanosleep
netdevice
netlink
netreport
netstat
networks
newgrp
newusers
nextafter
nfs
nfsd
nfsservctl
nfsstat
nice
nicknames
nisdomainname
nl_langinfo
nmap
nologin
nscd
nsgmls
nsswitch
ntpd
ntpdc
null
numa
offsetof
on_exit
onsgmls
open
openat
opendir
openjade
openpty
operator
osgmlnorm
ospam
ospcat
ospent
osx
outb
package-cleanup
packet
passwd
path_resolution
pause
pciconfig_read
pcilib
perror
personality
pgrep
pidof
pipe
pivot_root
pkill
plipconfig
pmap
poll
popen
posix_fadvise
posix_fallocate
posix_memalign
posix_openpt
posixoptions
pow
pow10
poweroff
ppp-watch
pppoe
pppoe-connect
pppoe-relay
pppoe-server
pppoe-setup
pppoe-sniff
pppoe-start
pppoe-status
pppoe-stop
pppoe-wrapper
prctl
pread
printf
proc
profil
program_invocation_name
protocols
psignal
pstree
pthread_atfork
pthread_attr_destroy
pthread_attr_getdetachstate
pthread_attr_getinheritsched
pthread_attr_getschedparam
pthread_attr_getschedpolicy
pthread_attr_getscope
pthread_attr_init
pthread_attr_setaffinity_np
pthread_attr_setdetachstate
pthread_attr_setguardsize
pthread_attr_setinheritsched
pthread_attr_setschedparam
pthread_attr_setschedpolicy
pthread_attr_setscope
pthread_attr_setstack
pthread_attr_setstackaddr
pthread_attr_setstacksize
pthread_cancel
pthread_cleanup_pop
pthread_cleanup_pop_restore_np
pthread_cleanup_push
pthread_cleanup_push_defer_np
pthread_cond_broadcast
pthread_cond_destroy
pthread_cond_init
pthread_cond_signal
pthread_cond_timedwait
pthread_cond_wait
pthread_condattr_destroy
pthread_condattr_init
pthread_create
pthread_detach
pthread_equal
pthread_exit
pthread_getattr_np
pthread_getcpuclockid
pthread_getschedparam
pthread_getspecific
pthread_join
pthread_key_create
pthread_key_delete
pthread_kill
pthread_kill_other_threads_np
pthread_mutex_destroy
pthread_mutex_init
pthread_mutex_lock
pthread_mutex_trylock
pthread_mutex_unlock
pthread_mutexattr_destroy
pthread_mutexattr_getkind_np
pthread_mutexattr_gettype
pthread_mutexattr_init
pthread_mutexattr_setkind_np
pthread_mutexattr_settype
pthread_once
pthread_self
pthread_setaffinity_np
pthread_setcancelstate
pthread_setcanceltype
pthread_setconcurrency
pthread_setschedparam
pthread_setschedprio
pthread_setspecific
pthread_sigmask
pthread_testcancel
pthread_tryjoin_np
pthread_yield
pthreads
ptrace
pts
ptsname
pty
putenv
putgrent
putpwent
puts
putwchar
pwck
pwconv
pwdx
pwunconv
qecvt
qsort
query_module
queue
quotactl
raise
ram
rand
random
random_r
raw
rbash
rcmd
re_comp
read
readahead
readdir
readlink
readlinkat
readv
realpath
reboot
recno
recv
regex
remainder
remap_file_pages
remove
removexattr
remquo
rename
renameat
renice
repo-rss
repoquery
reposync
resolv
resolver
rev
rewinddir
rexec
rgrep
rint
rm
rmdir
rmmod
round
route
rpc
rpm
rpmatch
rquotad
rtc
rtime
rtld-audit
rtnetlink
runlevel
scalb
scalbln
scandir
scanf
sched_get_priority_max
sched_getcpu
sched_rr_get_interval
sched_setaffinity
sched_setparam
sched_setscheduler
sched_yield
sd
sdiff
securetty
sed
seekdir
select
select_tut
sem_close
sem_destroy
sem_getvalue
sem_init
sem_open
sem_overview
sem_post
sem_unlink
sem_wait
semctl
semget
semop
send
sendfile
service
services
set_mempolicy
set_thread_area
set_tid_address
setaliasent
setarch
setbuf
setenv
seteuid
setfsgid
setfsuid
setgid
setjmp
setlocale
setlogmask
setnetgrent
setpci
setpgid
setresuid
setreuid
setsid
setuid
setup
setxattr
sfdisk
sg
sgetmask
sgmldiff
sgmlnorm
shadow
shells
shm_open
shm_overview
shmctl
shmget
shmop
showmount
shutdown
sigaction
sigaltstack
siginterrupt
signal
signalfd
signbit
significand
sigpause
sigpending
sigprocmask
sigqueue
sigreturn
sigset
sigsetops
sigsuspend
sigvec
sigwait
sigwaitinfo
sin
sincos
sinh
sk98lin
skill
slabinfo
slabtop
slattach
sleep
snice
sockatmark
socket
socketcall
socketpair
spam
spent
splice
spu_create
spu_run
spufs
sqrt
st
standards
stat
statd
statfs
statvfs
stdarg
stdin
stdio
stdio_ext
stime
stpcpy
stpncpy
strcasecmp
strcat
strchr
strcmp
strcoll
strcpy
strdup
strerror
strfmon
strfry
strftime
string
strlen
strnlen
strpbrk
strptime
strsep
strsignal
strspn
strstr
strtod
strtoimax
strtok
strtol
strtoul
strverscmp
strxfrm
suffixes
sulogin
svcgssd
svipc
swab
swapoff
swapon
switchdesk
sx
symlink
symlinkat
sync
sync_file_range
sys-unconfig
syscall
syscalls
sysconf
sysctl
sysfs
sysinfo
syslog
system
sysv_signal
tailf
tan
tanh
tcgetpgrp
tcgetsid
tcp
tee
telinit
telldir
tempnam
termcap
termio
termios
tgamma
time
timegm
timer_create
timer_delete
timer_getoverrun
timer_settime
timeradd
timerfd_create
times
tkill
tkpppoe
tload
tmpfile
tmpnam
toascii
touch
toupper
towctrans
towlower
towupper
trunc
truncate
tsearch
tty
ttyS
tty_ioctl
ttyname
ttyslot
ttytype
tzfile
tzselect
tzset
ualarm
udp
udplite
ulimit
umask
umount
uname
undocumented
ungetwc
unicode
unimplemented
units
unix
unlink
unlinkat
unlocked_stdio
unlockpt
unshare
update-pciids
updwtmp
uptime
uri
uselib
useradd
userdel
usermod
usernetctl
usleep
ustat
utf-8
utime
utimensat
utmp
vcs
vdir
vfork
vhangup
vigr
vim
vimdiff
vimtutor
vipw
vm86
vmsplice
vmstat
volname
w
wait
wait4
wall
watch
wavelan
wcpcpy
wcpncpy
wcrtomb
wcscasecmp
wcscat
wcschr
wcscmp
wcscpy
wcscspn
wcsdup
wcslen
wcsncasecmp
wcsncat
wcsncmp
wcsncpy
wcsnlen
wcsnrtombs
wcspbrk
wcsrchr
wcsrtombs
wcsspn
wcsstr
wcstoimax
wcstok
wcstombs
wcswidth
wctob
wctomb
wctrans
wctype
wcwidth
whatis
whereis
wmemchr
wmemcmp
wmemcpy
wmemmove
wmemset
wordexp
wprintf
write
x25
x86_64
xcrypt
xdr
xxd
y0
ypcat
ypchfn
ypchsh
ypdomainname
ypmatch
yppasswd
yppoll
ypset
yptest
ypwhich
yum
yum-builddep
yum-complete-transaction
yum-shell
yum-updatesd
yum-utils
yum-verify
yumdownloader
zcat
zcmp
zdiff
zdump
zforce
zgrep
zic
zmore
znew

Pages de MAN

ELF(5)			  Manuel du programmeur Linux			ELF(5)



NOM
       elf  -  Format  des  fichiers exécutables ELF (« Executable and Linking
       Format »)

SYNOPSIS
       #include 

DESCRIPTION
       Le fichier d'en-tête  définit le format  des  fichiers  binaires
       exécutables  ELF.  Ces fichiers peuvent être soit des fichiers exécuta-
       bles normaux, des fichiers objets repositionnables, des	fichiers  core
       ou des bibliothèques partagées.

       Un  fichier exécutable utilisant le format de fichier ELF est constitué
       d'un en-tête ELF, suivi d'une table d'en-tête de programme ou d'une ta-
       ble  des	 en-têtes de sections, ou des deux. L'en-tête ELF est toujours
       situé à un déplacement de zéro par rapport au  début  du	 fichier.  Les
       déplacements  dans  le fichier des tables d'en-tête de programme et des
       en-têtes de sections sont définis dans l'en-tête ELF. Ces  deux	tables
       décrivent le reste des particularités du fichier.

       Ce  fichier  d'en-tête  décrit,	sous  la  forme	 de  structures C, les
       en-têtes mentionnés précédemment et  inclut  également  des  structures
       pour  les  sections dynamiques, les sections de repositionnement et les
       tables de symboles.

       Les types suivants sont utilisés pour  les  architectures  N-bit	 (avec
       N=32,64 ;  ElfN	signifie Elf32 ou Elf64 ; uintN_t signifie uint32_t ou
       uint64_t) :

	   ElfN_Addr	   adresse (non signée) du programme, uintN_t
	   ElfN_Off	   déplacement (non signé) dans le fichier, uintN_t
	   ElfN_Section	   indice (non signé) de section, uint16_t
	   ElfN_Versym	   informations (non signées) sur les versions
			   des symboles, uint16_t
	   Elf_Byte	   caractère (char) non signé
	   ElfN_Half	   uint16_t
	   ElfN_Sword	   int32_t
	   ElfN_Word	   uint32_t
	   ElfN_Sxword	   int64_t
	   ElfN_Xword	   uint64_t

       (Note : la terminologie *BSD est quelque peu différente. Elf64_Half est
       deux  fois  plus	 grand que Elf32_Half et Elf64Quarter est utilisé pour
       uint16_t. Afin d'éviter toute confusion, ces types seront remplacés par
       des types plus explicites dans la suite de ce document).

       Toutes  les  structures	de  données  définies par le format de fichier
       suivent la taille « naturelle » et les  principes  d'alignement	de  la
       classe  correspondante. Si nécessaire, les structures de données conti-
       ennent un remplissage explicite pour assurer l'alignement sur  4 octets
       des  objets  de	4 octets,  et pour forcer les tailles des structures à
       être des multiples de 4, etc.

       L'en-tête ELF est  décrit  par  le  type	 Elf32_Ehdr  ou	 par  le  type
       Elf64_Ehdr :

	   #define EI_NIDENT 16

	   typedef struct {
	       unsigned char e_ident[EI_NIDENT];
	       uint16_t	     e_type;
	       uint16_t	     e_machine;
	       uint32_t	     e_version;
	       ElfN_Addr     e_entry;
	       ElfN_Off	     e_phoff;
	       ElfN_Off	     e_shoff;
	       uint32_t	     e_flags;
	       uint16_t	     e_ehsize;
	       uint16_t	     e_phentsize;
	       uint16_t	     e_phnum;
	       uint16_t	     e_shentsize;
	       uint16_t	     e_shnum;
	       uint16_t	     e_shstrndx;
	   } ElfN_Ehdr;

       Les champs ont les significations suivantes :

       e_ident	   Ce tableau d'octets indique comment interpréter le fichier,
		   indépendemment du processeur ou  du	reste  du  contenu  du
		   fichier. Dans ce tableau, chacun des éléments s'appelle une
		   macro qui commence par le préfixe EI_ et peut contenir  des
		   valeurs commençant par le préfixe ELF. Les macros suivantes
		   sont définies :

		   EI_MAG0     Premier octet du nombre magique. Il  doit  être
			       rempli par ELFMAG0 (0: 0x7f).

		   EI_MAG1     Deuxième	 octet du nombre magique. Il doit être
			       rempli par ELFMAG1 (1: « E »).

		   EI_MAG2     Troisième octet du nombre magique. Il doit être
			       rempli par ELFMAG2 (2: « L »).

		   EI_MAG3     Quatrième octet du nombre magique. Il doit être
			       rempli par ELFMAG3 (3: « F »).

		   EI_CLASS    Le cinquième octet indique l'architecture  pour
			       ce binaire :

			       ELFCLASSNONE  Cette classe n'est pas valable.
			       ELFCLASS32    Ceci   définit  une  architecture
					     32 bits. Elle  permet  d'utiliser
					     des  machines  avec  des  espaces
					     d'adressage   virtuels   et   des
					     fichiers	d'une	taille	allant
					     jusqu'à 4 giga-octets.
			       ELFCLASS64    Ceci  définit  une	  architecture
					     64 bits.

		   EI_DATA     Le sixième octet indique le codage utilisé pour
			       les données de ce fichier spécifiques  au  pro-
			       cesseur.	 Actuellement,	les  codages  suivants
			       sont permis :

			       ELFDATANONE   Format de données inconnu.
			       ELFDATA2LSB   Complément	   à	deux,	 petit
					     boutiste.
			       ELFDATA2MSB   Complément à deux, gros boutiste.

		   EI_VERSION  Numéro de version de la spécification du format
			       ELF :
			       EV_NONE	     Version non valable.
			       EV_CURRENT    Version actuelle.

		   EI_OSABI    Cet  octet  identifie le système d'exploitation
			       et l'interface binaire des  applications	 (ABI)
			       auxquels	 cet  objet  est destiné. Certains des
			       champs d'autres structures ELF contiennent  des
			       valeurs	et  des drapeaux dont la signification
			       dépend de la plate-forme ; l'interprétation  de
			       ces  champs  dépend  de la valeur de cet octet.
			       Par exemple :

			       ELFOSABI_NONE	   Identique à ELFOSABI_SYSV
			       ELFOSABI_SYSV	   ABI UNIX System V.
			       ELFOSABI_HPUX	   ABI HP-UX.
			       ELFOSABI_NETBSD	   ABI NetBSD.
			       ELFOSABI_LINUX	   ABI Linux.
			       ELFOSABI_SOLARIS	   ABI Solaris.
			       ELFOSABI_IRIX	   ABI IRIX.
			       ELFOSABI_FREEBSD	   ABI FreeBSD.
			       ELFOSABI_TRU64	   ABI UNIX TRU64.
			       ELFOSABI_ARM	   ABI de l'architecture  ARM.
			       ELFOSABI_STANDALONE ABI autonome (embarqué).

		   EI_ABIVERSION
			       Cet  octet  identifie la version de l'interface
			       binaire des applications (ABI) à	 laquelle  cet
			       objet   est   destiné.	Ce   champ  permet  de
			       différencier des versions  incompatibles	 d'une
			       même ABI. L'interprétation de ce numéro de ver-
			       sion dépend de  l'ABI  indiquée	par  le	 champ
			       EI_OSABI.  Les  applications  respectant	 cette
			       spécification utilisent la valeur 0.

		   EI_PAD      Début de remplissage. Ces octets sont  réservés
			       et  positionnés	à zéro. Les programmes qui les
			       lisent ne  doivent  pas	en  tenir  compte.  La
			       valeur de EI_PAD sera modifiée dans le futur si
			       l'on décide de donner une signification	à  des
			       octets actuellement inutilisés.

		   EI_BRAND    Début de l'identification de l'architecture.

		   EI_NIDENT   Taille du tableau e_ident.

       e_type	   Ce  membre  de  la  structure  identifie le type de fichier
		   objet :

		   ET_NONE     Type inconnu.
		   ET_REL      Fichier repositionnable.
		   ET_EXEC     Fichier exécutable.
		   ET_DYN      Objet partagé.
		   ET_CORE     Fichier core.

       e_machine   Ce membre indique l'architecture nécessaire	à  un  fichier
		   particulier. Par exemple :

		   EM_NONE     Machine inconnue.
		   EM_M32      AT&T WE 32100.
		   EM_SPARC    Sun Microsystems SPARC.
		   EM_386      Intel 80386.
		   EM_68K      Motorola 68000.
		   EM_88K      Motorola 88000.
		   EM_860      Intel 80860.
		   EM_MIPS     MIPS RS3000 (uniquement gros-boutiste).
		   EM_PARISC   HP/PA.
		   EM_SPARC32PLUS
			       SPARC avec jeu d'instructions étendu.
		   EM_PPC      PowerPC.
		   EM_PPC64    PowerPC 64 bits.
		   EM_S390     IBM S/390
		   EM_ARM      Machines de technologie RISC avancées
		   EM_SH       Renesas SuperH
		   EM_SPARCV9  SPARC v9 64 bits.
		   EM_IA_64    Intel Itanium
		   EM_X86_64   AMD x86-64
		   EM_VAX      DEC Vax.

       e_version   Ce membre indique la version du fichier :

		   EV_NONE     Version non valable.
		   EV_CURRENT  Version actuelle.

       e_entry	   Ce membre indique l'adresse virtuelle à laquelle le système
		   transfère initialement le contrôle, démarrant ainsi le pro-
		   cessus. Si ce fichier ne comporte pas de point d'entrée, ce
		   champ contient zéro.

       e_phoff	   Ce membre contient le déplacement en	 octets	 de  la	 table
		   contenant l'en-tête de programme. Si ce fichier ne comporte
		   pas de table d'en-tête  de  programme,  ce  champ  contient
		   zéro.

       e_shoff	   Ce membre contient le déplacement en octets de la table des
		   en-têtes de sections. Si ce fichier ne comporte pas de  ta-
		   ble des en-têtes des sections, ce champ contient zéro.

       e_flags	   Ce  membre contient des drapeaux spécifiques au processeur.
		   Le nom de ces drapeaux est de la forme  EF_machine_drapeau.
		   À l'heure actuelle, aucun drapeau n'a été défini.

       e_ehsize	   Ce membre contient la taille de l'en-tête ELF en octets.

       e_phentsize Ce  membre  contient la taille en octets d'une entrée de la
		   table d'en-tête de programme ; toutes les entrées  sont  de
		   même taille.

       e_phnum	   Ce	membre	contient  le  nombre  d'entrées	 de  la	 table
		   d'en-tête de programme. Ainsi, la taille en	octets	de  la
		   table  pourra  être	obtenue en multipliant e_phentsize par
		   e_phnum. Si un fichier ne comporte pas  d'en-tête  de  pro-
		   gramme, e_phnum contiendra la valeur zéro.

       e_shentsize Ce membre contient la taille en octets d'un en-tête de sec-
		   tion. Un en-tête de section est une entrée de la table  des
		   en-têtes  de	 sections ;  toutes  les  entrées sont de même
		   taille.

       e_shnum	   Ce membre contient le nombre	 d'entrées  de	la  table  des
		   en-têtes  de sections. Ainsi, la taille en octets de la ta-
		   ble des en-têtes de sections pourra être obtenue en	multi-
		   pliant  e_shentsize	par e_shnum. Si un fichier ne comporte
		   pas de table des en-têtes de	 sections,  le	champ  e_shnum
		   contiendra zéro.

       e_shstrndx  Ce  membre  contient l'indice dans la table des en-têtes de
		   sections de l'entrée associée à la  table  des  chaînes  de
		   noms	 des  sections. Si le fichier ne comporte pas de table
		   des chaînes de noms des sections, ce	 champ	contiendra  la
		   valeur SHN_UNDEF.

		   SHN_UNDEF	 Cette valeur indique une référence de section
				 non définie, manquante,  non  pertinente  ou,
				 d'une	façon  ou d'une autre, sans significa-
				 tion. Par exemple, un symbole « defined »  se
				 rapportant  à	la section de numéro SHN_UNDEF
				 est un symbole indéfini.

		   SHN_LORESERVE Cette valeur indique la borne	inférieure  de
				 la plage des indices réservés.

		   SHN_LOPROC	 Les   valeurs	 supérieures   ou   égales   à
				 SHN_HIPROC sont réservées à  des  sémantiques
				 spécifiques au processeur.

		   SHN_HIPROC	 Les   valeurs	 inférieures   ou   égales   à
				 SHN_LOPROC sont réservées à  des  sémantiques
				 spécifiques au processeur.

		   SHN_ABS	 Cette	valeur indique que les références cor-
				 respondantes sont des valeurs	absolues.  Par
				 exemple,  les	symboles définis par rapport à
				 une section SHN_ABS ont des valeurs  absolues
				 et  ne	 sont pas affectées par le reposition-
				 nement.

		   SHN_COMMON	 Les symboles définis par rapport à cette sec-
				 tion  sont  des  symboles  communs, comme par
				 exemple des COMMON Fortran ou	des  variables
				 externes C non allouées.

		   SHN_HIRESERVE Cette	valeur	indique la borne supérieure de
				 la plage des indices réservés entre SHN_LORE-
				 SERVE	et SHN_HIRESERVE, inclus ; ces valeurs
				 ne sont pas des références de	la  table  des
				 en-têtes  des sections. Autrement dit, la ta-
				 ble des en-têtes de sections ne contient  pas
				 d'entrée pour les indices réservés.

       La  table  d'en-tête de programme d'un exécutable ou d'un fichier objet
       partagé est un tableau de structures, chacune  d'entre-elles  décrivant
       un  segment  ou	d'autres  informations	dont  le système a besoin pour
       préparer l'exécution du programme. Un segment de fichier objet contient
       une  ou plusieurs sections. L'en-tête de programme n'a de sens que pour
       les fichiers objets partagés ou les fichiers  exécutables.  Un  fichier
       indique	la taille de son propre en-tête de programme à l'aide des mem-
       bres e_phentsize et e_phnum de  l'en-tête  ELF.	Selon  l'architecture,
       l'en-tête  de programme ELF est représenté par un type Elf32_Phdr ou un
       type Elf64_Phdr :

	   typedef struct {
	       uint32_t	  p_type;
	       Elf32_Off  p_offset;
	       Elf32_Addr p_vaddr;
	       Elf32_Addr p_paddr;
	       uint32_t	  p_filesz;
	       uint32_t	  p_memsz;
	       uint32_t	  p_flags;
	       uint32_t	  p_align;
	   } Elf32_Phdr;

	   typedef struct {
	       uint32_t	  p_type;
	       uint32_t	  p_flags;
	       Elf64_Off  p_offset;
	       Elf64_Addr p_vaddr;
	       Elf64_Addr p_paddr;
	       uint64_t	  p_filesz;
	       uint64_t	  p_memsz;
	       uint64_t	  p_align;
	   } Elf64_Phdr;

       La principale différence entre  l'en-tête  d'un	programme  32 bits  et
       l'en-tête  d'un	programme  64 bits  repose  sur	 emplacement  du champ
       p_flags au sein de la structure complète.

       p_type	   Ce membre de la structure Phdr indique le type  de  segment
		   décrit  par	cet  élément de tableau ou comment interpréter
		   ses informations.

		   PT_NULL     Cet élément du tableau  est  inutilisé  et  les
			       valeurs des autres membres ne sont pas définis.
			       Cela permet à l'en-tête de  programme  de  con-
			       tenir  des  entrées  qui	 ne sont pas prises en
			       compte.

		   PT_LOAD     Cet  élément  du	 tableau  indique  un  segment
			       chargeable, décrit par p_filesz et p_memsz. Les
			       octets du fichier sont  projetés	 au  début  du
			       segment	mémoire.  Si la taille mémoire du seg-
			       ment p_memsz est plus grande que la  taille  du
			       fichier	 p_filesz,   les  octets  « supplémen-
			       taires » sont définis comme contenant la valeur
			       0  et  placés à la suite de la zone initialisée
			       du segment. La taille du fichier ne  peut  être
			       supérieure  à  la taille de la mémoire. Dans la
			       table d'en-tête de programme,  les  entrées  de
			       segments	 chargeables  sont indiquées par ordre
			       croissant, classées selon le membre p_vaddr.

		   PT_DYNAMIC  L'élément de tableau contient des  informations
			       de liaison dynamique.

		   PT_INTERP   L'élément  de tableau contient l'emplacement et
			       la taille du nom de chemin, terminé par un car-
			       actère	« nulll »,   utilisé   pour   invoquer
			       l'interpréteur. Ce type de segment n'a de  sens
			       que  pour  des fichiers exécutables (bien qu'il
			       puisse être présent dans des objets  partagés).
			       Il  ne peut être présent qu'une seule fois dans
			       un fichier. S'il est présent, il doit  précéder
			       chaque entrée de segment chargeable.

		   PT_NOTE     L'élément  de tableau contient l'emplacement et
			       la taille d'informations auxiliaires.

		   PT_SHLIB    Ce type de segment est réservé, mais sa	séman-
			       tique  n'est  pas  définie. Les programmes con-
			       tenant un tel élément de tableau	 ne  sont  pas
			       conformes à l'interface binaire (ABI).

		   PT_PHDR     L'élément  de  tableau,	s'il est présent, con-
			       tiendra l'emplacement et la taille de la	 table
			       d'en-tête  de  programme	 elle-même,  à la fois
			       dans le fichier et dans l'image mémoire du pro-
			       gramme. Ce type de segment ne peut être présent
			       qu'une seule fois dans  un  fichier.  Qui  plus
			       est,  il	 ne peut être présent que si l'en-tête
			       de programme fait partie de l'image mémoire  du
			       programme.  S'il	 est présent, il doit précéder
			       chaque entrée de segment chargeable.

		   PT_LOPROC   Les valeurs supérieures ou égales  à  PT_HIPROC
			       sont réservées à des sémantiques spécifiques au
			       processeur.

		   PT_HIPROC   Les valeurs inférieures ou égales  à  PT_LOPROC
			       sont  réservées	à la sémantique propre au pro-
			       cesseur. L'extension GNU PT_GNU_STACK  qui  est
			       utilisée	 par  le noyau de Linux pour contrôler
			       l'état de la pile via  l'indicateur  positionné
			       dans le membre p_flags member.

       p_offset	   Ce  membre contient le déplacement du premier octet du seg-
		   ment par rapport au début du fichier.

       p_vaddr	   Ce membre contient l'adresse virtuelle à laquelle se trouve
		   en mémoire le premier octet du segment.

       p_paddr	   Su les systèmes pour lesquels l'adresse physique est perti-
		   nente, ce membre est réservé	 pour  l'adresse  physique  du
		   segment. Sous BSD, ce champ n'est pas utilisé et doit avoir
		   la valeur zéro.

       p_filesz	   Ce membre contient la taille en octets dans l'image fichier
		   de ce segment. Il peut être égal à zéro.

       p_memsz	   Ce  membre  contient la taille en octets de l'image mémoire
		   de ce segment. Il peut être égal à zéro.

       p_flags	   Ce membre contient un masque de bits d'options relatives  à
		   ce segment :

		   PF_X	  Segment exécutable.
		   PF_W	  Segment accessible en écriture.
		   PF_R	  Segment accessible en lecture.

		   Un  segment	de texte est souvent affecté des drapeaux PF_X
		   et PF_R. Un segment de données est souvent affecté des dra-
		   peaux PF_X, PF_W et PF_R.

       p_align	   Ce  membre  contient	 la valeur selon laquelle les segments
		   sont alignés en mémoire et dans le fichier. Pour  des  seg-
		   ments  de  processus	 chargeables,  les  valeurs p_vaddr et
		   p_offset doivent être congrues,  modulo  la	taille	de  la
		   page.  Des  valeurs	de  zéro  ou  de un indiquent qu'aucun
		   alignement n'est nécessaire. Sinon, p_align	doit  être  un
		   nombre  positif,  puissance entière de deux et p_vaddr doit
		   être égal à p_offset modulo p_align.

       La table des en-têtes de sections  d'un	fichier	 permet	 de  retrouver
       toutes  les  sections  du  fichier.  C'est  un  tableau	de  structures
       Elf32_Shdr ou Elf64_Shdr. Le champ e_shoff de l'en-tête ELF  donne  son
       déplacement  en	octets depuis le début du fichier. e_shnum contient le
       nombre d'entrées que  contient  la  table  des  en-têtes	 de  sections.
       e_shentsize contient la taille en octets de chaque entrée.

       Un  indice  de  la  table  des en-têtes de sections est un indice de ce
       tableau. Certains de ces indices sont réservés.	Un  fichier  objet  ne
       contiendra pas les sections correspondant à ces indices spéciaux :

       SHN_UNDEF     Cette   valeur  indique  une  référence  de  section  non
		     définie, manquante, non pertinente ou, d'une  manière  ou
		     d'une autre, sans signification.

       SHN_LORESERVE Cette  valeur indique la borne inférieure de la plage des
		     indices réservés.

       SHN_LOPROC    Les valeurs  supérieures  ou  égales  à  SHN_HIPROC  sont
		     réservées à des sémantiques spécifiques au processeur.

       SHN_HIPROC    Les  valeurs  inférieures	ou  égales  à  SHN_LOPROC sont
		     réservées à des sémantiques spécifiques au processeur.

       SHN_ABS	     Cette valeur définit la valeur absolue  de	 la  référence
		     correspondante.  Par  exemple, un symbole défini par rap-
		     port à la section numéro SHN_ABS a une valeur absolue  et
		     n'est pas affecté par un repositionnement.

       SHN_COMMON    Les symboles définis par rapport à cette section sont des
		     symboles communs, comme par exemple des COMMON Fortran ou
		     des variables externes C non allouées.

       SHN_HIRESERVE Cette  valeur indique la borne supérieure de la plage des
		     indices réservés. Le système réserve les indices  compris
		     entre  SHN_LORESERVE  et  SHN_HIRESERVE, inclus. La table
		     des en-têtes de sections ne contient  pas	d'entrée  pour
		     les indices réservés.

       L'en-tête de section a la structure suivante :

	   typedef struct {
	       uint32_t	  sh_name;
	       uint32_t	  sh_type;
	       uint32_t	  sh_flags;
	       Elf32_Addr sh_addr;
	       Elf32_Off  sh_offset;
	       uint32_t	  sh_size;
	       uint32_t	  sh_link;
	       uint32_t	  sh_info;
	       uint32_t	  sh_addralign;
	       uint32_t	  sh_entsize;
	   } Elf32_Shdr;

	   typedef struct {
	       uint32_t	  sh_name;
	       uint32_t	  sh_type;
	       uint64_t	  sh_flags;
	       Elf64_Addr sh_addr;
	       Elf64_Off  sh_offset;
	       uint64_t	  sh_size;
	       uint32_t	  sh_link;
	       uint32_t	  sh_info;
	       uint64_t	  sh_addralign;
	       uint64_t	  sh_entsize;
	   } Elf64_Shdr;

       Il  n'y	a  pas de réelle différence entre les en-têtes des sections 32
       bits et 64 bits.

       sh_name	 Ce membre indique le nom de la	 section.  Sa  valeur  est  un
		 indice de la table des chaînes des en-têtes de sections, con-
		 tenant l'emplacement d'une chaîne terminée par	 un  caractère
		 nul.

       sh_type	 Ce  membre définit le contenu et la sémantique de la section.

		 SHT_NULL	Cette valeur indique que cet en-tête  de  sec-
				tion  est  inactif.  Il	 n'est	donc associé à
				aucune section. Les valeurs des autres	champs
				de  l'en-tête de section ne sont pas définies.

		 SHT_PROGBITS	Cette  section	 contient   des	  informations
				définies  par  le programme, dont le format et
				le sens ne sont déterminés que par celui-ci.

		 SHT_SYMTAB	Cette section contient une table de  symboles.
				Typiquement,  SHT_SYMTAB contient des symboles
				pour l'édition de liens, bien  qu'elle	puisse
				aussi être utilisée pour la liaison dynamique.
				Comme  il  s'agit  d'une  table	 de   symboles
				complète,  elle peut contenir de nombreux sym-
				boles inutiles	à  la  liaison	dynamique.  Un
				fichier	 objet peut aussi contenir une section
				SHT_DYNSYM.

		 SHT_STRTAB	Cette section contient une table  de  chaînes.
				Un  fichier objet peut contenir plusieurs sec-
				tions de ce type.

		 SHT_RELA	Cette section contient des entrées de  reposi-
				tionnement  ayant des additifs explicites, par
				exemple les entrées du	type  Elf32_Rela  pour
				les  fichiers  objets  32 bits.	 Un objet peut
				avoir plusieurs sections de ce type.

		 SHT_HASH	Cette section contient une  table  de  hachage
				pour  les symboles. Un objet participant à une
				liaison dynamique doit	en  contenir  une.  Un
				fichier	 objet	ne  peut contenir qu'une seule
				table de hachage.

		 SHT_DYNAMIC	Cette section  contient	 les  informations  de
				liaison	 dynamique.  Un	 fichier objet ne peut
				contenir qu'une seule section dynamique.

		 SHT_NOTE	Cette section contient des  informations  ser-
				vant à marquer le fichier d'une façon ou d'une
				autre.

		 SHT_NOBITS	Une section de ce type ressemble  à  SHT_PROG-
				BITS   mais  n'occupe  pas  d'espace  dans  le
				fichier. Bien que cette section	 ne  contienne
				aucun  octet, le membre sh_offset contient son
				déplacement théorique dans le fichier.

		 SHT_REL	Cette section contient des entrées de  reposi-
				tionnement sans additif explicite, par exemple
				du type Elf32_Rel pour les fichiers objets  de
				la  classe  de 32 bits. Un objet peut contenir
				plusieurs sections de repositionnement.

		 SHT_SHLIB	Cette section est réservée  et	sa  sémantique
				n'est pas définie.

		 SHT_DYNSYM	Cette  section contient un jeu minimum de sym-
				boles de liaison dynamique. Un	fichier	 objet
				peut aussi contenir une section SHT_SYMTAB.

		 SHT_LOPROC	Cette  valeur et les valeurs suivantes jusqu'à
				SHT_HIPROC incluse sont réservées à des séman-
				tiques spécifiques au processeur.

		 SHT_HIPROC	Cette valeur et les valeurs précédentes depuis
				SHT_LOPROC incluse sont réservées à des séman-
				tiques spécifiques au processeur.

		 SHT_LOUSER	Cette valeur indique la borne inférieure de la
				plage  des  indices  réservés  aux  programmes
				applicatifs.

		 SHT_HIUSER	Cette valeur indique la borne supérieure de la
				plage  des  indices  réservés  aux  programmes
				applicatifs.  Les  types  des  sections	 entre
				SHT_LOUSER et SHT_HIUSER peuvent être utilisés
				par  l'application,  sans  que cela n'entre en
				conflit avec les types de section  actuels  ou
				futurs définis par le système.

       sh_flags	 Les  sections contiennent des indicateurs sous forme d'un bit
		 décrivant divers attributs. Si, dans sh_flags, le bit	corre-
		 spondant  à  un  indicateur  est  positionné,	l'attribut est
		 « activé » pour cette section. Sinon, l'attribut est « désac-
		 tivé »	 ou  ne s'applique pas. Les attributs non définis sont
		 mis à zéro.

		 SHF_WRITE	Cette  section	contient  des  données	 qu'il
				devrait	   être	  possible   d'écrire	durant
				l'exécution du processus.

		 SHF_ALLOC	Cette section est présente en  mémoire	durant
				l'exécution  du	 processus. Certaines sections
				de contrôle ne sont pas présentes dans l'image
				mémoire	 d'un  fichier objet. Cet attribut est
				désactivé pour ces sections.

		 SHF_EXECINSTR	Cette  section	 contient   des	  instructions
				machine exécutables.

		 SHF_MASKPROC	Tous  les  bits	 contenus  dans ce masque sont
				réservés à des sémantiques spécifiques au pro-
				cesseur.

       sh_addr	 Si  cette  section apparaît dans l'image mémoire d'un proces-
		 sus, ce membre contient l'adresse à laquelle le premier octet
		 de  la	 section  doit	se  trouver. Sinon, ce membre contient
		 zéro.

       sh_offset La valeur de ce membre	 indique  le  déplacement  du  premier
		 octet de la section par rapport au début du fichier. Une sec-
		 tion de type  SHT_NOBITS,  n'occupe  pas  de  place  dans  le
		 fichier  et  son  champ  sh_offset  indique  son  emplacement
		 théorique dans le fichier.

       sh_size	 Ce membre contient la taille en octets de la section. À moins
		 que  cette  section  ne  soit de type SHT_NOBITS, elle occupe
		 sh_size  octets  dans	le  fichier.  Une  section   de	  type
		 SHT_NOBITS peut avoir une taille non nulle, mais elle n'occu-
		 pera cependant aucune place dans le fichier.

       sh_link	 Ce membre contient un lien vers un indice  de	la  table  des
		 en-têtes  de  sections,  son interprétation dépend du type de
		 section.

       sh_info	 Ce membre  contient  des  informations	 complémentaires,  son
		 l'interprétation dépend du type de section.

       sh_addralign
		 Certaines   sections	ont   des   contraintes	  d'alignement
		 d'adresse. Si une section contient un mot double, le  système
		 doit  s'assurer  que  la section tout entière est alignée sur
		 les mots doubles. Autrement dit, la valeur  de	 sh_addr  doit
		 être congrue à zéro, modulo la valeur de sh_addralign. Seules
		 zéro ou  des  puissances  entières  positives	de  deux  sont
		 autorisés. Une valeur de zéro ou de un indique qu'aucune con-
		 trainte d'alignement ne s'applique à la section.

       sh_entsize
		 Certaines sections contiennent une table contenant un	nombre
		 d'entrées  fixe,  comme  par  exemple les tables de symboles.
		 Pour de telles sections, ce champ donne la taille  en	octets
		 de chaque entrée. Ce membre contient zéro si cette section ne
		 contient pas une table de ce type.

       Diverses sections contiennent des informations de contrôle  et  sur  le
       programme :

       .bss	 Cette	section contient des données non initialisées qui font
		 partie de l'image mémoire du programme.  Par  définition,  le
		 système initialise ces données avec des zéros lorsque le pro-
		 gramme démarre. Cette section est  du	type  SHT_NOBITS.  Les
		 types de ses attributs sont SHF_ALLOC et SHF_WRITE.

       .comment	 Cette	section	 contient  des	informations de suivi des ver-
		 sions. Cette section est du type SHT_PROGBITS. Aucun attribut
		 n'est utilisé.

       .ctors	 Cette	section	 contient  des	pointeurs initialisés vers des
		 constructeurs C++. Cette section est  du  type	 SHT_PROGBITS.
		 Les types de ses attributs sont SHF_ALLOC et SHF_WRITE.

       .data	 Cette	section contient des données faisant partie de l'image
		 mémoire du programme. Elle  est  du  type  SHT_PROGBITS.  Les
		 types de ses attributs sont SHF_ALLOC et SHF_WRITE.

       .data1	 Cette	section contient des données faisant partie de l'image
		 mémoire du programme. Elle  est  du  type  SHT_PROGBITS.  Les
		 types de ses attributs sont SHF_ALLOC et SHF_WRITE.

       .debug	 Cette	section	 contient  des données de débogage symbolique.
		 Son contenu n'est pas précisé. Elle est du type SHT_PROGBITS.
		 Aucun type d'attribut n'est utilisé.

       .dtors	 Cette	section	 contient  des	pointeurs initialisés vers des
		 destructeurs C++. Elle est du type SHT_PROGBITS. Les types de
		 ses attributs sont SHF_ALLOC et SHF_WRITE.

       .dynamic	 Cette section contient des informations de liaison dynamique.
		 Les attributs de cette section comprennent le bit  SHF_ALLOC.
		 Le  positionnement  du	 bit  SHF_WRITE est spécifique au pro-
		 cesseur.  Cette  section  est	du  type   SHT_DYNAMIC.	  Voir
		 ci-dessus pour les attributs.

       .dynstr	 Cette	section	 contient les chaînes nécessaires à la liaison
		 dynamique, le plus souvent les chaînes représentant les  noms
		 associés  aux entrées de la table des symboles. Cette section
		 est du	 type  SHT_STRTAB.  Le	type  d'attribut  utilisé  est
		 SHF_ALLOC.

       .dynsym	 Cette	section	 contient  la  table  des  symboles de liaison
		 dynamique. Cette section est  du  type	 SHT_DYNSYM.  Le  type
		 d'attribut utilisé est SHF_ALLOC.

       .fini	 Cette	section contient des instructions exécutables qui font
		 partie du code de fin du processus.  Lorsqu'un	 programme  se
		 termine  normalement, le système organise l'exécution du code
		 de  cette  section.  Elle  est	 du  type  SHT_PROGBITS.   Les
		 attributs utilisés sont SHF_ALLOC et SHF_EXECINSTR.

       .gnu.version
		 Cette	section	 contient  la  table  des symboles de version,
		 tableau d'éléments  ElfN_Half.	 Cette	section	 est  du  type
		 SHT_GNU_versym. Le type d'attribut utilisé est SHF_ALLOC.

       .gnu.version_d
		 Cette	section	 contient  les	définitions de version de sym-
		 boles, une table de structures	  ElfN_Verdef.	Cette  section
		 est  du  type	SHT_GNU_verdef. Le type d"attribut utilisé est
		 SHF_ALLOC.

       .gnu.version_r
		 Cette section contient la version  de	symbole	 des  éléments
		 nécessaires, une table de structures ElfN_Verneed. Cette sec-
		 tion est type SHT_GNU_versym. Le type d'attribut utilisé  est
		 SHF_ALLOC.

       .got	 Cette	section	 contient  la  table globale des déplacements.
		 Elle est du type SHT_PROGBITS. Les attributs sont spécifiques
		 au processeur.

       .hash	 Cette section contient la table de hachage des symboles. Elle
		 est du type SHT_HASH. L'attribut utilisé est SHF_ALLOC.

       .init	 Cette section contient des instructions exécutables qui  font
		 partie	 du code d'initialisation du processus. Lorsqu'un pro-
		 gramme démarre, le système organise l'exécution  du  code  de
		 cette	section avant d'appeler le point d'entrée principal du
		 programme.  Cette  section  est  du  type  SHT_PROGBITS.  Les
		 attributs utilisés sont SHF_ALLOC et SHF_EXECINSTR.

       .interp	 Cette section contient le chemin vers un interpréteur de pro-
		 grammes. Si le fichier comporte un  segment  chargeable  con-
		 tenant	 cette	section,  les attributs de la section contien-
		 dront le bit SHF_ALLOC. Sinon, ce bit sera  désactivé.	 Cette
		 section est du type SHT_PROGBITS.

       .line	 Cette	section	 contient  des informations sur les numéros de
		 lignes, qui seront utilisées pour le débogage symbolique. Ces
		 informations  établissent  la	correspondance	entre  le code
		 source du programme et le code machine. Le contenu  de	 cette
		 section  n'est	 pas  spécifié.	 Cette	section	 est  du  type
		 SHT_PROGBITS. Aucun attribut n'est utilisé.

       .note	 Cette section contient des informations dans le format « Note
		 Section » défini ci-dessous. Elle est de type SHT_NOTE. Aucun
		 attribut n'est utilisé. Les exécutables natifs OpenBSD conti-
		 ennent en général une section .note.openbsd.ident leur perme-
		 ttant de s'identifier, afin que le noyau court-circuite, lors
		 du chargement du fichier, toutes les vérifications de compat-
		 ibilité de l'émulation binaire ELF.

       .note.GNU-stack
		 Cette section est utilisée dans les fichiers objets de	 Linux
		 pour  déclarer les attributs de la pile. Cette section est du
		 type SHT_PROGBITS. Le seul attribut utilisé  est  SHF_EXECIN-
		 STR.  Ceci  indique  à	 l'éditeur de liens GNU que le fichier
		 objet requière une pile exécutable.

       .plt	 Cette section contient une table de liaison  des  procédures.
		 Elle est du type SHT_PROGBITS. Ses attributs sont spécifiques
		 au processeur.

       .relNOM	 Cette section contient des informations de  repositionnement,
		 comme	décrit	ci-dessous.  Si ce fichier comporte un segment
		 chargeable comprenant du repositionnement, les	 attributs  de
		 la  section contiendront le bit SHF_ALLOC. Sinon, ce bit sera
		 désactivé. Par convention, le « NOM » est fourni par la  sec-
		 tion  à  laquelle  le repositionnement s'applique. Ainsi, une
		 section de repositionnement pour du  .text  s'appellera  nor-
		 malement .rel.text. Cette section est du type SHT_REL.

       .relaNOM	 Cette	section contient des informations de repositionnement,
		 comme décrit ci-dessous. Si ce fichier	 comporte  un  segment
		 chargeable  comprenant	 du repositionnement, les attributs de
		 la section contiendront le bit SHF_ALLOC. Sinon, ce bit  sera
		 désactivé.  Par convention, le « NOM » est fourni par la sec-
		 tion à laquelle le repositionnement  s'applique.  Ainsi,  une
		 section  de  repositionnement	pour du .text s'appellera nor-
		 malement .rela.text. Cette section est du type SHT_RELA.

       .rodata	 Cette section contient des données en lecture seule, qui fer-
		 ont classiquement partie d'un segment non accessible en écri-
		 ture dans l'image du processus. Cette	section	 est  du  type
		 SHT_PROGBITS. L'attribut utilisé est SHF_ALLOC.

       .rodata1	 Cette section contient des données en lecture seule, qui fer-
		 ont classiquement partie d'un segment non accessible en écri-
		 ture  dans  l'image  du  processus. Cette section est du type
		 SHT_PROGBITS. L'attribut utilisé est SHF_ALLOC.

       .shstrtab Cette section contient les noms des  sections.	 Elle  est  du
		 type SHT_STRTAB. Aucun type d'attribut.

       .strtab	 Cette	section	 contient  des	chaînes,  le  plus souvent ces
		 chaînes représentent les noms associés aux entrées de la  ta-
		 ble  des  symboles. Si ce fichier comporte un segment charge-
		 able  comprenant  la  table  des  chaînes  de	symboles,  les
		 attributs de la section contiendront le bit SHF_ALLOC. Sinon,
		 ce bit sera désactivé. Cette section est du type  SHT_STRTAB.

       .symtab	 Cette	section contient une table des symboles. Si ce fichier
		 comporte un segment chargeable contenant la  table  des  sym-
		 boles,	 les  attributs	 de  la	 section  contiendront	le bit
		 SHF_ALLOC. Sinon, ce bit sera désactivé. Cette section est du
		 type SHT_SYMTAB.

       .text	 Cette	section	 contient  le  « texte »,  autrement  dit  les
		 instructions exécutables, d'un programme. Cette  section  est
		 du  type  SHT_PROGBITS. Les attributs utilisés sont SHF_ALLOC
		 et SHF_EXECINSTR.

       Les sections de tables de chaînes contiennent  des  séquences  de  car-
       actères	terminées par un zéro binaire (« null »), communément appelées
       chaînes. Le fichier objet utilise ces chaînes pour représenter les noms
       des  symboles et des sections. Le premier octet, qui est l'indice zéro,
       est défini comme contenant un null. De même, le dernier octet de la ta-
       ble  de	chaînes	 est défini comme contenant un null, ce qui assure que
       toutes les chaînes se termineront bien par un null.

       La table des symboles d'un fichier objet contient les informations per-
       mettant	de localiser et de repositionner les définitions et références
       symboliques d'un programme. Un indice dans une table de symbole est  un
       indice de ce tableau.

	   typedef struct {
	       uint32_t	     st_name;
	       Elf32_Addr    st_value;
	       uint32_t	     st_size;
	       unsigned char st_info;
	       unsigned char st_other;
	       uint16_t	     st_shndx;
	   } Elf32_Sym;

	   typedef struct {
	       uint32_t	     st_name;
	       unsigned char st_info;
	       unsigned char st_other;
	       uint16_t	     st_shndx;
	       Elf64_Addr    st_value;
	       uint64_t	     st_size;
	   } Elf64_Sym;

       Les versions 32 bits et 64 bits comportent les mêmes membres, seul leur
       ordre diffère.

       st_name	 Ce membre contient un indice de la table des chaînes de  sym-
		 boles d'un fichier objet. Cette table contient la représenta-
		 tion sous la forme de chaînes de caractères des noms des sym-
		 boles.	 Si la valeur de ce champ est non nulle, il représente
		 l'indice de la table des chaînes qui donne son	 nom  au  sym-
		 bole. Sinon, le symbole n'a pas de nom.

       st_value	 Ce membre donne la valeur associée au symbole.

       st_size	 De  nombreux  symboles	 sont associés à des tailles. Ce champ
		 contient zéro si le symbole n'a pas de taille ou si sa taille
		 est inconnue.

       st_info	 Ce  membre  indique  le  type	de symbole et ses attributs de
		 liaison :

		 STT_NOTYPE  Le type de ce symbole n'est pas défini.

		 STT_OBJECT  Ce symbole est associé à un objet de données.

		 STT_FUNC    Ce symbole est associé à une fonction ou un autre
			     code exécutable.

		 STT_SECTION Ce symbole est associé à une section. Les entrées
			     de ce type de  la	table  des  symboles  existent
			     principalement  pour  le  repositionnement et ont
			     normalement des liaisons STB_LOCAL.

		 STT_FILE    Par convention, le nom de ce symbole donne le nom
			     du	 fichier  source  associé au fichier objet. Un
			     symbole de ce type a des liaisons STB_LOCAL,  son
			     indice  de	 section  est  SHN_ABS,	 et,  s'il est
			     présent, il précède les autres symboles STB_LOCAL
			     du fichier.

		 STT_LOPROC  Cette  valeur  et	les  valeurs suivantes jusqu'à
			     STT_HIPROC (valeur comprise) sont réservées à des
			     sémantiques spécifiques au processeur.

		 STT_HIPROC  Cette  valeur  et	les valeurs précédentes depuis
			     STT_LOPROC incluse sont réservées	à  des	séman-
			     tiques spécifiques au processeur.

		 STB_LOCAL   Les  symboles  locaux  ne	sont  pas  visibles en
			     dehors du fichier objet  contenant	 leur  défini-
			     tion.  Des	 symboles  locaux  de même nom peuvent
			     exister dans plusieurs fichiers  sans  interférer
			     entre eux.

		 STB_GLOBAL  Les  symboles  globaux  sont visibles de tous les
			     fichiers objets devant être réunis. La définition
			     par  un fichier d'un symbole global satisfera une
			     référence non définie d'un	 autre	fichier	 à  ce
			     même symbole.

		 STB_WEAK    Les  symboles  faibles ressemblent à des symboles
			     globaux, mais leur définition a une priorité plus
			     faible.

		 STB_LOPROC  Cette  valeur  et	les  valeurs suivantes jusqu'à
			     STB_HIPROC (valeur comprise) sont réservées à des
			     sémantiques spécifiques au processeur.

		 STB_HIPROC  Cette  valeur  et	les valeurs précédentes depuis
			     STB_LOPROC incluse sont réservées	à  des	séman-
			     tiques spécifiques au processeur.

			     Il	 existe	 des  macros permettant de coder et de
			     décoder les champs de type et de liaison :

			     ELF32_ST_BIND(info)    ou	   ELF64_ST_BIND(info)
			     extrait une liaison d'une valeur st_info.

			     ELF32_ST_TYPE(info) ou ELF64_ST_TYPE(info)
			     extraire un type d'une valeur st_info.

			     ELF32_ST_INFO(liaison,	     type)	    ou
			     ELF64_ST_INFO(liaison, type)
			     convertir une liaison et un type  en  une	valeur
			     st_info.

       st_other	 Ce membre définit la visibilité du symbole.

		 STV_DEFAULT	 Règles par défaut de visibilité du symbole.
		 STV_INTERNAL	 Classe caché spécifique au processeur.
		 STV_HIDDEN	 Le symbole n"est pas disponible dans d'autres
				 modules.
		 STV_PROTECTED	 Non préemptible, non exporté.

		 Il existe des macros permettant d'extraire le type  de	 visi-
		 bilité :

		 ELF32_ST_VISIBILITY(autre)  ou ELF64_ST_VISIBILITY(autre)

       st_shndx	 Chaque	 entrée	 de  la	 table des symboles est « définie » en
		 relation avec une section. Ce membre contient l'indice corre-
		 spondant de la table des en-têtes de sections.

       Le repositionnement est le processus consistant à relier des références
       symboliques  à  des  définitions	 symboliques.  Les  fichiers   reposi-
       tionnables doivent contenir des informations décrivant comment modifier
       le contenu de  leurs  sections,	ce  qui	 permet	 aux  fichiers	objets
       partagés	 et  exécutables de détenir les bonnes informations concernant
       l'image mémoire d'un programme. Les entrées  de	repositionnement  sont
       ces données.

       Structures  de  repositionnement	 pour lesquelles un additif est néces-
       saire :

	   typedef struct {
	       Elf32_Addr r_offset;
	       uint32_t	  r_info;
	   } Elf32_Rel;

	   typedef struct {
	       Elf64_Addr r_offset;
	       uint64_t	  r_info;
	   } Elf64_Rel;

       Structures de repositionnement pour lesquelles un  additif  est	néces-
       saire :

	   typedef struct {
	       Elf32_Addr r_offset;
	       uint32_t	  r_info;
	       int32_t	  r_addend;
	   } Elf32_Rela;

	   typedef struct {
	       Elf64_Addr r_offset;
	       uint64_t	  r_info;
	       int64_t	  r_addend;
	   } Elf64_Rela;

       r_offset	   Ce  membre  donne  l'emplacement  où	 appliquer l'action de
		   repositionnement.  Pour  un	fichier	 repositionnable,   sa
		   valeur  est	le déplacement en octets depuis le début de la
		   section jusqu'à l'unité de stockage affectée par le reposi-
		   tionnement. Pour un fichier exécutable ou un objet partagé,
		   sa valeur est l'adresse virtuelle de	 l'unité  de  stockage
		   affectée par le repositionnement.

       r_info	   Ce membre donne à la fois l'indice de la table des symboles
		   par rapport auquel on doit effectuer le repositionnement et
		   le type de repositionnement à appliquer. Les types de repo-
		   sitionnement dépendent du processeur. Lorsque le texte men-
		   tionne  le type de repositionnement ou l'indice de la table
		   des symboles d'une entrée de repositionnement, il s'agit du
		   résultat   de   l'application   de	ELF_[32|64]_R_TYPE  ou
		   ELF[32|64]_R_SYM, respectivement, au champ r_info de	 cette
		   entrée.

       r_addend	   Ce  membre indique un additif constant pour le calcul de la
		   valeur à stocker dans le champ repositionnable.

       La section .dynamic comporte une série de  structures  qui  contiennent
       les  informations  relatives  à l'édition de liens dynamique. Le membre
       d_tag contrôle l'interprétation de d_un.

	   typedef struct {
	       Elf32_Sword    d_tag;
	       union {
		   Elf32_Word d_val;
		   Elf32_Addr d_ptr;
	       } d_un;
	   } Elf32_Dyn;
	   extern Elf32_Dyn _DYNAMIC[];

	   typedef struct {
	       Elf64_Sxword    d_tag;
	       union {
		   Elf64_Xword d_val;
		   Elf64_Addr  d_ptr;
	       } d_un;
	   } Elf64_Dyn;
	   extern Elf64_Dyn _DYNAMIC[];

       d_tag	 Ce membre peut prendre l'une des trois valeurs suivantes :

		 DT_NULL     Indique la fin de la section dynamique

		 DT_NEEDED   Décalage dans la table des chaînes	 vers  le  nom
			     d'une bibliothèque nécessaire

		 DT_PLTRELSZ Taille en octets des relocations PLT

		 DT_PLTGOT   Adresse de plt et/ou de GOT

		 DT_HASH     Adresse de la table de hachage des symboles

		 DT_STRTAB   Adresse de la table des chaînes

		 DT_SYMTAB   Adresse de la table des symboles

		 DT_RELA     Adresse de la table des relocations Rela

		 DT_RELASZ   Taille, en octets, de la table Rela

		 DT_RELAENT  Taille, en octets, d'une entrée de la table Rela

		 DT_STRSZ    Taille, en octets, de la table des chaînes

		 DT_SYMENT   Taille,  en  octets, d'une entrée de la table des
			     symboles

		 DT_INIT     Adresse de la fonction d'initialisation

		 DT_FINI     Adresse de la fonction de terminaison

		 DT_SONAME   Déplacement dans la table des chaînes vers le nom
			     de l'objet partagé

		 DT_RPATH    Déplacement  dans	la  table  des chaînes pour le
			     chemin de recherche de la bibliothèque (déprécié)

		 DT_SYMBOLIC Demander  à  l'éditeur de liens de rechercher les
			     symboles	dans   cet   objet    partagé	 avant
			     l'exécutable

		 DT_REL	     Adresse de la table des relocations Rel

		 DT_RELSZ    Taille en octets de la table Rel

		 DT_RELENT   Taille en octets d'une entrée de la table Rel

		 DT_PLTREL   Type  de relocation auquel se réfère PLT (Rela ou
			     Rel)

		 DT_DEBUG    Utilisation non définie pour le débogage

		 DT_TEXTREL  Son  absence  indique  qu'aucune  relocation   ne
			     devrait  s'appliquer  à un segment non accessible
			     en écriture

		 DT_JMPREL   Adresse des  entrées  de  relocation,  uniquement
			     pour la PLT

		 DT_BIND_NOW Informer  l'éditeur de liens dynamique de traiter
			     toutes les relocations  avant  de	transférer  le
			     contrôle à l'exécutable

		 DT_RUNPATH  Décalage dans la table des chaînes pour le chemin
			     de recherche de la bibliothèque

		 DT_LOPROC   Début des sémantiques spécifiques au processeur

		 DT_HIPROC   Fin de la sémantique propre au processeur

       d_val	 Ce  membre  représente	 des  valeurs	entières   ayant   des
		 interprétations diverses.

       d_ptr	 Ce  membre  représente	 les adresses virtuelles du programme.
		 Lors de l'interprétation de ces  adresses,  l'adresse	réelle
		 doit  être  calculée  en se basant sur la valeur originale du
		 fichier et sur l'adresse de base de la mémoire. Les  fichiers
		 ne  contiennent  pas d'entrées de repositionnement pour fixer
		 ces adresses.

       _DYNAMIC	 Tableau  contenant  toutes  les  structures  de  la   section
		 .dynamic.  Ceci  est  automatiquement rempli par l'éditeur de
		 liens.

NOTES
       ELF est apparu d'abord dans le System V.	 Le format ELF est un standard
       adopté.

VOIR AUSSI
       as(1), gdb(1), ld(1), objdump(1), execve(2), core(5)

       Hewlett-Packard, Format de fichiers Elf-64 (Elf-64 Object File Format).

       Santa Cruz Operation, Interface binaire des application System V	 (Sys-
       tem V Application Binary Interface).

       Unix  System Laboratories, "Object Files", Format des fichiers exécuta-
       bles ELF (Executable and Linking Format)

COLOPHON
       Cette page fait partie de  la  publication  3.23	 du  projet  man-pages
       Linux.  Une description du projet et des instructions pour signaler des
       anomalies  peuvent  être	 trouvées  à  l'adresse	  .

TRADUCTION
       Depuis  2010,  cette  traduction est maintenue à l'aide de l'outil po4a
        par l'équipe de traduction franco-
       phone	     au		sein	     du		projet	      perkamon
       .

       Jean-Philippe   Guérard	 (2005),   Alain    Portal      (2006).   Jean-Luc Coulon et l'équipe francophone de
       traduction de Debian (2006-2009).

       Veuillez signaler toute erreur de  traduction  en  écrivant  à  .

       Vous  pouvez  toujours avoir accès à la version anglaise de ce document
       en utilisant la commande « LC_ALL=C man 
». Linux 28 décembre 2007 ELF(5)

 


www.eurower.info