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