Program Execution and ELF Files Extended System Programming

  • Slides: 20
Download presentation
Program Execution and ELF Files Extended System Programming Laboratory (ESPL) CS Department @ BGU

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

Revisiting Unix Processes 2

Revisiting Unix Processes 2

Unix Shell - Revisited � Runs � Not programs – command line the only

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

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

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

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

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

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 9

ELF – Executable and Linkable Format � ELF defines a format of executable binary

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

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

ELF Structure Program and section header table offsets

Your Best Example section. text global _start ; _start: mov edx, len mov ecx,

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

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 �

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 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

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

Executable Files 18

Navigate through the Maze 19

Navigate through the Maze 19

Quiz A 20

Quiz A 20