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