1b6feb2a9SderaadtPHDRS 2b6feb2a9Sderaadt{ 3b6feb2a9Sderaadt rodata PT_LOAD FILEHDR PHDRS FLAGS (4); 4b6feb2a9Sderaadt btext PT_LOAD FLAGS (0x08000005); 5*805b87eaSderaadt text PT_LOAD FLAGS (1); 6b6feb2a9Sderaadt data PT_LOAD; 7b6feb2a9Sderaadt random PT_OPENBSD_RANDOMIZE; 883762a71Sderaadt syscalls PT_OPENBSD_SYSCALLS; 9b6feb2a9Sderaadt relro PT_GNU_RELRO; 10b6feb2a9Sderaadt dynamic PT_DYNAMIC; 11b6feb2a9Sderaadt note PT_NOTE; 12b6feb2a9Sderaadt} 13b6feb2a9Sderaadt 14b6feb2a9SderaadtSECTIONS 15b6feb2a9Sderaadt{ 16b6feb2a9Sderaadt . = 0 + SIZEOF_HEADERS; 17b6feb2a9Sderaadt /* RODATA */ 18b6feb2a9Sderaadt .gnu.hash : { *(.gnu.hash) } :rodata 19b6feb2a9Sderaadt .dynsym : { *(.dynsym) } :rodata 20b6feb2a9Sderaadt .dynstr : { *(.dynstr) } :rodata 21b6feb2a9Sderaadt .rodata : { *(.rodata .rodata.*) } :rodata 22b6feb2a9Sderaadt .eh_frame : { *(.eh_frame) } :rodata 23b6feb2a9Sderaadt 24b6feb2a9Sderaadt /* TEXT */ 25b6feb2a9Sderaadt . = ALIGN(0x1000); 26b6feb2a9Sderaadt .boot.text : 27b6feb2a9Sderaadt { 28b6feb2a9Sderaadt . = ALIGN(0x1000); 29b6feb2a9Sderaadt boot_text_start = .; 30b6feb2a9Sderaadt *(.boot.text) 31b6feb2a9Sderaadt . = ALIGN(0x1000); 32b6feb2a9Sderaadt boot_text_end = .; 33b6feb2a9Sderaadt } :btext =0xcccccccc 34b6feb2a9Sderaadt .text : { *(.text .text.*) } :text =0xcccccccc 35b6feb2a9Sderaadt 36b6feb2a9Sderaadt /* RELRO DATA */ 37b6feb2a9Sderaadt . = DATA_SEGMENT_ALIGN (0x1000, 0x1000); 38b6feb2a9Sderaadt .openbsd.randomdata : 39b6feb2a9Sderaadt { 40b6feb2a9Sderaadt *(.openbsd.randomdata .openbsd.randomdata.*) 41b6feb2a9Sderaadt } :data :relro :random 4283762a71Sderaadt .openbsd.syscalls : 4383762a71Sderaadt { 4483762a71Sderaadt *(.openbsd.syscalls .openbsd.syscalls.*) 4583762a71Sderaadt } :syscalls 4683762a71Sderaadt 47b6feb2a9Sderaadt .data.rel.ro : { *(.data.rel.ro.local*) *(.data.rel.ro*) } :data :relro 48b6feb2a9Sderaadt .dynamic : { *(.dynamic) } :data :relro :dynamic 49b6feb2a9Sderaadt .got : { *(.got.plt) *(.got) } :data :relro 50b6feb2a9Sderaadt . = DATA_SEGMENT_RELRO_END (0, .); 51b6feb2a9Sderaadt 52b6feb2a9Sderaadt /* BOOTDATA */ 53b6feb2a9Sderaadt . = ALIGN(0x1000); 54b6feb2a9Sderaadt boot_data_start = .; 55b6feb2a9Sderaadt .rela.dyn : 56b6feb2a9Sderaadt { 57b6feb2a9Sderaadt *(.rela.text .rela.text.*) 58b6feb2a9Sderaadt *(.rela.rodata .rela.rodata.*) 59b6feb2a9Sderaadt *(.rela.data .rela.data.*) 60b6feb2a9Sderaadt *(.rela.got) 61b6feb2a9Sderaadt *(.rela.bss .rela.bss.*) 62b6feb2a9Sderaadt } :data 63b6feb2a9Sderaadt/* XXX .rela.plt is unused but cannot delete: ld.bfd zeros DT_RELASZ then! */ 64b6feb2a9Sderaadt .rela.plt : { *(.rela.plt) } :data 65b6feb2a9Sderaadt .note : { *(.note.openbsd.*) } :data :note 66b6feb2a9Sderaadt .hash : { *(.hash) } :data 67b6feb2a9Sderaadt .boot.data : { *(.boot.data .boot.data.*) } :data 68b6feb2a9Sderaadt boot_data_end = .; 69b6feb2a9Sderaadt 70b6feb2a9Sderaadt /* DATA */ 71b6feb2a9Sderaadt . = ALIGN(0x1000); 72b6feb2a9Sderaadt .data : { *(.data .data.*) } :data 73b6feb2a9Sderaadt .bss : { *(.dynbss) *(.bss .bss.*) *(COMMON) } :data 74b6feb2a9Sderaadt . = DATA_SEGMENT_END (.); 75b6feb2a9Sderaadt 76b6feb2a9Sderaadt /DISCARD/ : { *(.note.GNU-stack) } 77b6feb2a9Sderaadt} 78