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