Program Execution and ELF Files Extended System Programming















![ELF Sections – Hello Example [Nr] Name Type Addr Off Size [ 0] NULL ELF Sections – Hello Example [Nr] Name Type Addr Off Size [ 0] NULL](https://slidetodoc.com/presentation_image_h/a0ee626e5a1ab33b82a538c6ef8dc67f/image-16.jpg)




- Slides: 20

Program Execution and ELF Files Extended System Programming Laboratory (ESPL) CS Department @ BGU Fall 2014/2015

Revisiting Unix Processes 2

Unix Shell - Revisited � Runs � Not programs – command line the only program that runs other programs make gcc and more … � How this happens ? Who is responsible for that? System call exec family - execvp, execl, execv, … 3

Unix Shell - Revisited � These functions receive the path of the program executable file receive a list of the program arguments loads the program into memory, and run it … � Last lecture, fork( ) and exec( ) why these functions are used together ? 4

Executable Files � Unix has several different types of executable files � You are already familiar with some of them: Binary files Bash script more ? � Are these files executed similarly by the OS ? 5

Executable Files – (cont’d) � Binary file Compiled – intermediate binary Loading data and code to memory Moving control to the entry point Running the machine-code � Scripts No compilation We don’t have the binary code nor the memory content A specified program parses and runs the commands Commands are interpreted line-by-line � How do we specify which interpreter runs the script ? 6

Executable Files – (cont’d) � The first line - #!/bin/sh � exec( ) uses this to determine the type of the executable � shebang is encountered it is a script file � The first line contains the path of the relevant program too What can we do with it ? 7

Executable Files – (cont’d) � No sanity checks for the shebang line � Every program/utility could appear there #!/bin/rm ls -l 8

ELF – Executable and Linkable Format 9

ELF – Executable and Linkable Format � ELF defines a format of executable binary files � There are three main binary types Relocatable ▪ Created by compilers or assemblers. Need to be processed by the linker before running Executable ▪ Have all relocation done and all symbol resolved except perhaps shared library symbols that must be resolved at run time Shared Object ▪ Shared library containing both symbol information for the linker and directly runnable code for run time 10

ELF – Dual Nature � Compilers, assemblers, and linkers treat the file as a set of logical sections � The system loader treats the file as a set of segments � Sections are intended for further processing by a linker � Segments are intended to be mapped into memory 11

ELF Structure Program and section header table offsets

Your Best Example section. text global _start ; _start: mov edx, len mov ecx, msg mov ebx, 1 mov eax, 4 int 0 x 80 ; tell linker entry point ; message length ; message to write ; file descriptor (stdout) ; system call number (sys_write) ; call kernel mov eax, 1 int 0 x 80 ; system call number (sys_exit) ; call kernel section. data msg db 'Hello world!', 0 xa ; our dear string len equ $ - msg ; length of our dear string 13

ELF Header - Hello Example Magic: 7 f 45 4 c 46 01 01 01 00 00 00 Class: ELF 32 Data: 2's complement, little endian Version: 1 (current) OS/ABI: UNIX - System V ABI Version: 0 Type: EXEC (Executable file) Machine: Intel 80386 Version: 0 x 1 Entry point address: 0 x 8048080 Start of program headers: 52 (bytes into file) Start of section headers: 256 (bytes into file) Flags: 0 x 0 Size of this header: 52 (bytes) Size of program headers: 32 (bytes) Number of program headers: 2 Size of section headers: 40 (bytes) Number of section headers: 7 Section header string table index: 4 14

Relocatable Files �A relocatable or shared object file is a collection of sections � Each section contains a single type of information, such as program code, read-only data, read/write data, symbols � Every symbol’s address is defined relative to a section For example, the entry point is relative to the code section 15
![ELF Sections Hello Example Nr Name Type Addr Off Size 0 NULL ELF Sections – Hello Example [Nr] Name Type Addr Off Size [ 0] NULL](https://slidetodoc.com/presentation_image_h/a0ee626e5a1ab33b82a538c6ef8dc67f/image-16.jpg)
ELF Sections – Hello Example [Nr] Name Type Addr Off Size [ 0] NULL 000000 000000 [ 1]. text PROGBITS 08048080 00001 d [ 2]. data PROGBITS 080490 a 0 00000 e [ 3]. comment PROGBITS 0000 ae 00001 f [ 4]. shstrtab STRTAB 0000 cd 000030 [ 5]. symtab SYMTAB 0000 000218 0000 b 0 [ 6]. strtab STRTAB 0000 0002 c 8 000032 16

Special Section - Symbol Table � An object file symbol table holds information needed to locate and relocate a program’s symbolic definition and references Num: Value Size Type Bind Vis Ndx Name 0: 0000 0 NOTYPE LOCAL DEFAULT UND 1: 0000 0 FILE LOCAL DEFAULT ABS hello. asm 2: 0000 0 SECTION LOCAL DEFAULT 1 3: 0000 0 SECTION LOCAL DEFAULT 2 4: 0000 0 NOTYPE LOCAL DEFAULT 2 msg 5: 0000000 e 0 NOTYPE LOCAL DEFAULT ABS len 6: 0000000 e 0 NOTYPE LOCAL DEFAULT ABS len 7: 08048080 0 NOTYPE GLOBAL DEFAULT 1 _start 8: 080490 ae 0 NOTYPE GLOBAL DEFAULT ABS __bss_start 9: 080490 ae 0 NOTYPE GLOBAL DEFAULT ABS _edata 10: 080490 b 0 0 NOTYPE GLOBAL DEFAULT ABS _end 17

Executable Files 18

Navigate through the Maze 19

Quiz A 20