#define ELFCLASS64 2 #define ELFDATA2LSB 1 #define ELFOSABI_FREEBSD 9 #define ET_EXEC 2 #define EM_NEXGEN32E 62 #define PT_LOAD 1 #define PT_NOTE 4 #define PT_GNU_STACK 0x6474e551 #define PF_X 1 #define PF_W 2 #define PF_R 4 .align 8 ehdr: .ascii "\177ELF" .byte ELFCLASS64 .byte ELFDATA2LSB .byte 1 .byte ELFOSABI_FREEBSD .quad 0 .word ET_EXEC # e_type .word EM_NEXGEN32E # e_machine .long 1 # e_version .quad _start # e_entry .quad phdrs - ehdr # e_phoff .quad 0 # e_shoff .long 0 # e_flags .word 64 # e_ehsize .word 56 # e_phentsize .word 2 # e_phnum .word 0 # e_shentsize .word 0 # e_shnum .word 0 # e_shstrndx .globl ehdr .align 8 phdrs: .long PT_LOAD # p_type .long PF_R|PF_X # p_flags .quad 0 # p_offset .quad ehdr # p_vaddr .quad ehdr # p_paddr .quad filesz # p_filesz .quad filesz # p_memsz .quad 64 # p_align .long PT_NOTE # p_type .long PF_R # p_flags .quad note - ehdr # p_offset .quad note # p_vaddr .quad note # p_paddr .quad notesize # p_filesz .quad notesize # p_memsz .quad 8 # p_align note: .long 2f-1f .long 4f-3f .long 1 1: .asciz "OpenBSD" 2: .align 4 3: .long 0 4: .long 2f-1f .long 4f-3f .long 1 1: .asciz "NetBSD" 2: .align 4 3: .long 901000000 4: notesize = . - note _start: mov %rsp,%rsi jmp Start .globl _start