Download presentation
Presentation is loading. Please wait.
Published byAmie Hall Modified over 8 years ago
1
Program Execution and ELF Files Extended System Programming Laboratory (ESPL) CS Department @ BGU Fall 2013/2014 Abed Asi
2
Runs programs – command line Not the only program that runs other programs make gcc and more … How this happens ? Who is responsible for that? Operating System System call exec family - execvp, execl, execv, … 2
3
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 function are used together ? 3
4
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 ? 4
5
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 ? 5
6
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 ? 6
7
No sanity checks for the shebang line Every program/utility could appear there 7 #!/bin/cat Hello world #!/bin/rm ls -l
8
8
9
ELF defines a format of executable binary files There are three main 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 9
10
Compilers, assemblers, and linkers treat the file as a set of logical sections The system loader treats the file as a set of segments 10 Sections are intended for further processing by a linker Segments are intended to be mapped into memory
11
Program and section header table offsets
12
12 section.text global _start ; _start: ;tell linker entry point mov edx,len ;message length mov ecx,msg ;message to write mov ebx,1 ;file descriptor (stdout) mov eax,4 ;system call number (sys_write) int 0x80 ;call kernel mov eax,1 ;system call number (sys_exit) int 0x80 ;call kernel section.data msg db 'Hello world!',0xa ;our dear string len equ $ - msg ;length of our dear string
13
13 Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 Class: ELF32 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:0x1 Entry point address:0x8048080 Start of program headers: 52 (bytes into file) Start of section headers: 256 (bytes into file) Flags: 0x0 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
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 14
15
15 [Nr] Name Type Addr Off Size [ 0] NULL 00000000 000000 000000 000000 [ 1].text PROGBITS 08048080 000080 00001d [ 2].data PROGBITS 080490a0 0000a0 00000e [ 3].comment PROGBITS 00000000 0000ae 00001f [ 4].shstrtab STRTAB 00000000 0000cd 000030 [ 5].symtab SYMTAB 00000000 000218 0000b0 [ 6].strtab STRTAB 00000000 0002c8 000032
16
An object file symbol table holds information needed to locate and relocate a program’s symbolic definition and references 16 Num: Value Size Type Bind Vis Ndx Name 0: 00000000 0 NOTYPE LOCAL DEFAULT UND 1: 00000000 0 FILE LOCAL DEFAULT ABS hello.asm 2: 00000000 0 SECTION LOCAL DEFAULT 1 3: 00000000 0 SECTION LOCAL DEFAULT 2 4: 00000000 0 NOTYPE LOCAL DEFAULT 2 msg 5: 0000000e 0 NOTYPE LOCAL DEFAULT ABS len 6: 0000000e 0 NOTYPE LOCAL DEFAULT ABS len 7: 08048080 0 NOTYPE GLOBAL DEFAULT 1 _start 8: 080490ae 0 NOTYPE GLOBAL DEFAULT ABS __bss_start 9: 080490ae 0 NOTYPE GLOBAL DEFAULT ABS _edata 10: 080490b0 0 NOTYPE GLOBAL DEFAULT ABS _end
17
17
18
18
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.