Professional Documents
Culture Documents
V3a Elf
V3a Elf
Format
Zaglavlje
e_ident[ ]
e_ident
za 32-bitni sistem
litle-endian
Verzija zaglavlja: 1
Ostatak zaglavlja
Ostatak zaglavlja
Ostatak zaglavlja
e_version
Ostatak zaglavlja
nema
.text
.rel
.data
.bss
.note
Indeks naziva sekcije u
tabeli stringova sekcije
.shstrtab
zaglavlja.
.symtab
.strtab
Primjer tabele zaglavlja sekcija
nema
.text
.rel
.data
.bss
.note
.shstrtab
Definiše tip i značenje
.symtab
sadržaja sekcije.
.strtab
Primjer tabele zaglavlja sekcija
nema
.text
.rel
.data
.bss
.note
Flegovi:
.shstrtab
.symtab
.strtab
Primjer tabele zaglavlja sekcija
nema
.text
.rel
.data
.bss
.note
Virtuelna adresa prvog
bajta ukoliko sekcija
.shstrtab
treba da bude u
memoriji u toku .symtab
izvršavanja.
.strtab
Primjer tabele zaglavlja sekcija
nema
.text
.rel
.data
.bss
.note
Ofset prvog bajta
sekcije u odnosu na
.shstrtab
početak fajla, računato u
bajtovima. Ako sekcija .symtab
nema sadržaj u fajlu,
onda SHT_NOBITS. .strtab
Primjer tabele zaglavlja sekcija
nema
.text
.rel
.data
.bss
.note
Veličina sekcije u
bajtovima. Čak i sekcije
.shstrtab
koje ne zauzimaju
prostor u fajlu mogu da .symtab
imaju veličinu.
.strtab
Primjer tabele zaglavlja sekcija
nema
.text
.rel
.data
.bss
.note
Ovo i naredno polje
imaju posebno
.shstrtab
značenje.
.symtab
.strtab
Značenje polja sh_link i sh_info
Primjer tabele zaglavlja sekcija
nema
.text
.rel
.data
.bss
.note
Značenje opisano na
prethodnom slajdu.
.shstrtab
.symtab
.strtab
Primjer tabele zaglavlja sekcija
nema
.text
.rel
.data
.bss
.note
Poravnanje sekcije. 0 ili
1 znače da nije
.shstrtab
zahtevano posebno
poravnanje. Osim 0 i 1, .symtab
dozvoljeni su samo
stepeni broja 2. .strtab
Primjer tabele zaglavlja sekcija
nema
.text
.rel
.data
.bss
.note
Ako sekcija sadrži ulaze
fiksne veličine, ovo polje
.shstrtab
predstavlja veličinu
jednog ulaza u .symtab
bajtovima.
.strtab
Standardno prisutne sekcije
Struktura ulaza u tabeli simbola
Primjer tabele zaglavlja sekcija (ponovljeno)
nema
.text
.rel
.data
.bss
.note
Ofset prvog bajta
sekcije u odnosu na
.shstrtab
početak fajla, računato u
bajtovima. Ako sekcija .symtab
nema sadržaj u fajlu,
onda SHT_NOBITS. .strtab
Primjer tabele simbola
Indeks u tabeli stringova (u ovom slučaju,
odgovarajuća tabela stringova počinje na adresi
308; pogledati slajd 27, ulaz 8).
Primjer tabele simbola
Vrijednost simbola. Može biti apsolutna ili relokatibilna.
-za relokatibilan fajl, to je ofset u odnosu na početak
sekcije (relokatibilan fajl)
-za izvršni fajl ili deljenu biblioteku, to je virtuelna adresa.
Primjer tabele simbola
Veličina simbola, ako je poznata,
Primjer tabele simbola
Viša 4 bita: vezivanje (tabela levo u sredini).
Niža 4 bita: tip (tabela dole levo).
Primjer tabele simbola
Za sada, fiksno 0.
Primjer tabele simbola
Indeks sekcije u tabeli zaglavlja sekcija za koji je
posmatrani simbol vezan.
Struktura zapisa u tabelama relokacija
• Polje r_addend:
– Sadrži neposrednu konstantu koju je pri relokaciji potrebno
dodati na sadržaj lokacije koja se prepravlja (relocira).
– Veoma često, ovo polje se ne koristi, već se konstanta upiše
direktno kao početni sadržaj lokacije koja će se kasnije
prepravljati – relocirati.
Primjer tabele zaglavlja sekcija (ponovljeno)
nema
.text
.rel
.data
.bss
.note
Ofset prvog bajta
sekcije u odnosu na
.shstrtab
početak fajla, računato u
bajtovima. Ako sekcija .symtab
nema sadržaj u fajlu,
onda SHT_NOBITS. .strtab
Primjer sekcije relokacija
Tabela simbola:
Struktura relokacije:
Ostatak zaglavlja – izvršni program
Ostatak zaglavlja
Ostatak zaglavlja
e_version
Ostatak zaglavlja
Flegovi za segment.
Primjer tabele zaglavlja programa