Program Execution and ELF Files Extended System Programming
- 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 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
- Ncic restricted files list
- Ncic hosts restricted files and non-restricted files
- File mode python
- Execution gap in system programming
- Planning programming budgeting and execution ppbe process
- Runtime programming
- Allows the replication of only immutable
- Program execution steps
- A process is a program in execution
- Control instructions in 8085
- Elf executable and linkable format
- Elf file structure
- Ncce.io/scratch-elf
- Online vlf receiver
- Great elf game
- The great elf game
- Elf owl diet
- Elf emmit
- What is elf
- Elf
- Elf owl