github.com/enmand/kubernetes@v1.2.0-alpha.0/third_party/pause/pause.asm (about) 1 ; This is heavily based on https://github.com/tianon/dockerfiles/tree/master/true 2 ; which is in turn especially thanks to: 3 ; http://blog.markloiseau.com/2012/05/tiny-64-bit-elf-executables/ 4 5 BITS 64 6 org 0x00400000 ; Program load offset 7 8 ; 64-bit ELF header 9 ehdr: 10 ; 1), 0 (ABI ver.) 11 db 0x7F, "ELF", 2, 1, 1, 0 ; e_ident 12 times 8 db 0 ; reserved (zeroes) 13 14 dw 2 ; e_type: Executable file 15 dw 0x3e ; e_machine: AMD64 16 dd 1 ; e_version: current version 17 dq _start ; e_entry: program entry address (0x78) 18 dq phdr - $$ ; e_phoff program header offset (0x40) 19 dq 0 ; e_shoff no section headers 20 dd 0 ; e_flags no flags 21 dw ehdrsize ; e_ehsize: ELF header size (0x40) 22 dw phdrsize ; e_phentsize: program header size (0x38) 23 dw 1 ; e_phnum: one program header 24 dw 0 ; e_shentsize 25 dw 0 ; e_shnum 26 dw 0 ; e_shstrndx 27 28 ehdrsize equ $ - ehdr 29 30 ; 64-bit ELF program header 31 phdr: 32 dd 1 ; p_type: loadable segment 33 dd 5 ; p_flags read and execute 34 dq 0 ; p_offset 35 dq $$ ; p_vaddr: start of the current section 36 dq $$ ; p_paddr: " " 37 dq filesize ; p_filesz 38 dq filesize ; p_memsz 39 dq 0x200000 ; p_align: 2^11=200000 = section alignment 40 41 ; program header size 42 phdrsize equ $ - phdr 43 44 _start: 45 ; pause() 46 47 mov al, 34 ; pause syscall number 48 syscall 49 50 ; sys_exit(return_code) 51 52 mov al, 60 ; sys_exit syscall number 53 cdq ; Sign-extend eax into edi to return 0 (success) 54 syscall 55 56 ; File size calculation 57 filesize equ $ - $$