xref: /openbsd-src/libexec/ld.so/sh/ld.script (revision 805b87ea74e0d6b0f6f35a146ae727de198ab801)
1c0a58aa7SmiodPHDRS
2c0a58aa7Smiod{
3c0a58aa7Smiod	rodata	PT_LOAD FILEHDR PHDRS FLAGS (4);
4c0a58aa7Smiod	btext	PT_LOAD FLAGS (0x08000005);
5*805b87eaSderaadt	text	PT_LOAD FLAGS (5);  /* architecturally required data islands */
6c0a58aa7Smiod	data	PT_LOAD;
7c0a58aa7Smiod	random	PT_OPENBSD_RANDOMIZE;
883762a71Sderaadt	syscalls PT_OPENBSD_SYSCALLS;
9c0a58aa7Smiod	relro	PT_GNU_RELRO;
10c0a58aa7Smiod	dynamic	PT_DYNAMIC;
11c0a58aa7Smiod	note	PT_NOTE;
12c0a58aa7Smiod}
13c0a58aa7Smiod
14c0a58aa7SmiodSECTIONS
15c0a58aa7Smiod{
16c0a58aa7Smiod  /* RODATA */
17c0a58aa7Smiod  . = 0 + SIZEOF_HEADERS;
18c0a58aa7Smiod  .gnu.hash       : { *(.gnu.hash) } :rodata
19c0a58aa7Smiod  .dynsym         : { *(.dynsym) } :rodata
20c0a58aa7Smiod  .dynstr         : { *(.dynstr) } :rodata
21c0a58aa7Smiod  .rodata         : { *(.rodata .rodata.*) } :rodata
22c0a58aa7Smiod  .eh_frame       : { *(.eh_frame) } :rodata
23c0a58aa7Smiod
24c0a58aa7Smiod  /* TEXT */
25c0a58aa7Smiod  . = ALIGN (0x1000);
26c0a58aa7Smiod  .boot.text      :
27c0a58aa7Smiod  {
28c0a58aa7Smiod    boot_text_start = .;
29c0a58aa7Smiod    *(.boot.text)
30c0a58aa7Smiod    boot_text_end = .;
31c0a58aa7Smiod  } :btext
32*805b87eaSderaadt  . = ALIGN (0x1000);
33*805b87eaSderaadt  .text           : { *(.text .text.*) } :text =0xc3c3c3c3
34c0a58aa7Smiod
35c0a58aa7Smiod  /* RELRO DATA */
36c0a58aa7Smiod  . = DATA_SEGMENT_ALIGN (0x10000, 0x1000);
37c0a58aa7Smiod  .openbsd.randomdata     : { *(.openbsd.randomdata .openbsd.randomdata.*) }
38c0a58aa7Smiod    :data :relro :random
3983762a71Sderaadt  .openbsd.syscalls : { *(.openbsd.syscalls .openbsd.syscalls.*) } :syscalls
40c0a58aa7Smiod  .data.rel.ro : { *(.data.rel.ro.local*) *(.data.rel.ro*) } :data :relro
41c0a58aa7Smiod  .dynamic        : { *(.dynamic) } :data :relro :dynamic
42c0a58aa7Smiod  .got            : { *(.got.plt) *(.got) } :data :relro
43c0a58aa7Smiod  . = DATA_SEGMENT_RELRO_END (0, .);
44c0a58aa7Smiod
45c0a58aa7Smiod  /* BOOTDATA */
46c0a58aa7Smiod  . = ALIGN (0x1000);
47c0a58aa7Smiod  boot_data_start = .;
48c0a58aa7Smiod  .rela.dyn       :
49c0a58aa7Smiod    {
50c0a58aa7Smiod      *(.rela.text .rela.text.*)
51c0a58aa7Smiod      *(.rela.rodata .rela.rodata.*)
52c0a58aa7Smiod      *(.rela.data .rela.data.*)
53c0a58aa7Smiod      *(.rela.got)
54c0a58aa7Smiod      *(.rela.bss .rela.bss.*)
55c0a58aa7Smiod    } :data
56c0a58aa7Smiod  .rela.plt       : { *(.rela.plt) } :data
57c0a58aa7Smiod  .hash           : { *(.hash) } :data
58c0a58aa7Smiod  .note           : { *(.note.openbsd.* ) } :data :note
59c0a58aa7Smiod  .boot.data      : { *(.boot.data .boot.data.*) } :data
60c0a58aa7Smiod  boot_data_end = .;
61c0a58aa7Smiod
62c0a58aa7Smiod  /* DATA */
63c0a58aa7Smiod  . = ALIGN (0x1000);
64c0a58aa7Smiod  .data           : { *(.data .data.*) } :data
65c0a58aa7Smiod  .bss            : { *(.dynbss) *(.bss .bss.*) *(COMMON) } :data
66c0a58aa7Smiod  . = DATA_SEGMENT_END (.);
67c0a58aa7Smiod}
68