PPT

advertisement
Hand-Held Devices and Embedded
Systems Course
Student: Tomás Sánchez López
Student ID: 20042116
Outline
• What is ELF
• Basics
• Executables
• Linking View
• Execution View
• Example
• Loading and Executing and ELF executable
• Various
• Conclusions
What is ELF?
• Stands for Executable and Linking Format
•Standarized executable file format used in
most Unix sytems
• Subsitute of traditional a.out due to
efficiency issues (i.e dynamic linking)
• Developed originally in Unix Systems
Laboratory (USL) and adopted by The Tool
Interface Standard (TIS) committe.
Basics
• Three main types of ELF object files
• Relocatable files: code and data to be linked
with other object files
• Executable files
• Shared object files: Libraries
• Object file: binary representation of programs
intended to execute directly on a processor
Executables
• Static vs Dynamic Executables
• Static: Self contained. Too large files due to
static inclussion of library code
• Dynamic: Using external code or data at run
time. More convinient
• Two views of executables according to their
participation:
• Linking view: Executable participation in
program linking
• Execution view: Executable participation in
program execution
Executables
• Link View: Used at static linking time for
relocatable file combination
• Execution View: Used at run time to load and
execute programs
Executables
• Elf Header describes the file’s organization and
resides always at the beginning
• Program Header Table, if present, tells the system
how to create a process image
• Section Header Table, if present, contains
information describing the files’s sections
Relocatable files have section headers tables.
Executable files have program headers tables.
Shared object files have both.
Linking View
• Divides the object files into a collection of sections
• Sections have :
• Name and type
• Requested memory ocation at run time
• Permissions
• Each section contains a single type of information
and can contain flags (writable data, memory space
during execution or executable machine
instructions)
Linking View
• Important Sections:
.interp
Path name of program interpreter (Dynamic linker)
.text
Code (executable instructions) of a program
.data
Initialized data
.bss
Uninitilized data
.init
Executable instruction for process initilization
.fini
Executalbe intructions for process termination
.ptl
Holds the procedure linkage table
.re.<x>
Relocation information for section <x>
.dynamic
Dynamic linking information
Execution View
• Simpler view that divides the object file into
segments
• Segments have:
• Simple type
• Requested memory location
• Permissions
• Size (in file and in memory)
• All loadable sections are packed into segments so
that file mapping is easier
Execution View
• Segment Types:
LOAD
Portion of file to be loaded into memory
INTERP
Pointer to dynamic linker for this executable (.interp
section)
DYNAMIC
Pointer to dynamic linking information (.dynamic
section)
Example
Relocatable file 1
int x = 5;
int main() {
int r = x +funtion ();
exit (0);
}
Relocatable file 2
int v = 10;
int u = 32;
int z;
int function() {
return v+u;
}
Example
Relocatable Object files
Headers
System Code
System code
System Data
main ()
.text
a ()
main ()
System Code
int x = 5
System Data
int x = 5
funtion ()
int v = 10
int v = 10
int u = 32
int u = 32
Uninitialized data
int y
others
.data
.bss
Loading and Executing
and ELF Executable
1. Open the file
2. Map LOAD segments into memory
3. Call the dynamic linker specified in the INTERP
segment, passing information about the
executable
1.
Handles all the dynamic/shared library needs of the
executable
2.
Retrieves information from the DYNAMIC segment
3.
Loads all required libraries into memory
4.
Modifies executable so it can access needed resources
in the libraries
Load and Executing and
ELF Executable
• Basically:
Relocatable File 1
Relocatable File N
Static Linking
Executable Object File
Shared Libraries
Dynamic Linker
Executing …
Various
Shared Libraries
• Need to be compiled memory position
independent (PIC)
• Uses a Global Offset table (GOT) with
pointers to variables created at compile and
linking time
• Uses the Procedure Linkage Table (PLT) for
procedure library calling
• Implies some performance disadvantages
Various
Others
• Relocations tell dynamic linker to rewrite
parts of the excutable to refer to external
resources
• Exists a dynamic debugging structure
offering information about process memory
layout and binaries loaded
Conclusions
• Logical evolution of old executable formats
• Convinient double view depending for linking
and executing time
• Great support for dynamic linking, crosscompilation and others
• Convinient separation between file types
depending on its function
• Standard and defined functionality for
nowadays executable file needs in diferent
platforms
References
• For an exhaustive review of ELF specification
please refer to:
Executable and Linkable Format (ELF)
Tool Interface Standards (TIS), Portable Formats
Specification, Version 1.1
Download