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