xref: /openbsd-src/libexec/ld.so/i386/ld.script (revision 805b87ea74e0d6b0f6f35a146ae727de198ab801)
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