1 / 17

Unix Shell - Revisited

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

kaiser
Download Presentation

Unix Shell - Revisited

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Unix Shell - Revisited • 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. 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 function are used together ?

  3. 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 ?

  4. 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 • Aspecified program parses and runs the commands • Commands are interpreted line-by-line • How do we specify which interpreter runs the script ?

  5. 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 ?

  6. Executable Files – (cont’d) • No sanity checks for the shebang line • Every program/utility could appear there #!/bin/catHello world #!/bin/rmls -l

  7. ELF – Executable and Linkable Format

  8. ELF – Executable and Linkable Format • 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. 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

  10. ELF Structure Program and section header table offsets

  11. Your Best Example section .text global _start ; _start: ;tell linker entry point movedx,len ;message length movecx,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 msgdb 'Hello world!',0xa ;our dear string lenequ $ - msg ;length of our dear string

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

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

  14. ELF Sections – Hello Example [Nr] Name Type Addr Off Size [ 0] NULL 00000000 000000 000000 000000 [ 1] .text PROGBITS 08048080000080 00001d[ 2] .data PROGBITS 080490a00000a0 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

  15. 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 NdxName 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

  16. Executable Files

  17. Navigate through the Maze

More Related