270 likes | 563 Views
Hand-Held Devices and Embedded Systems Course. E. F. Executable and Linkable Format. 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
E N D
Hand-Held Devices and Embedded Systems Course E F Executable and Linkable Format 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:
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:
int x = 5; int main() { int r = x +funtion (); exit (0); } Relocatable file 1 int v = 10; int u = 32; int z; int function() { return v+u; } Relocatable file 2 Example
Example Relocatable Object files .text .data .bss
Loading and Executing and ELF Executable • Open the file • Map LOAD segments into memory • Call the dynamic linker specified in the INTERP segment, passing information about the executable • Handles all the dynamic/shared library needs of the executable • Retrieves information from the DYNAMIC segment • Loads all required libraries into memory • 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, cross-compilation 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