1*09ce6c06Skettenis/* $OpenBSD: ldscript.arm64,v 1.4 2022/07/29 21:34:59 kettenis Exp $ */
2dcdac422Skettenis
3f24071e5SpatrickENTRY(_start)
4f24071e5SpatrickSECTIONS
5f24071e5Spatrick{
6f24071e5Spatrick  /* Read-only sections, merged into text segment: */
7f24071e5Spatrick  . = 0;
8f24071e5Spatrick  ImageBase = .;
9f24071e5Spatrick  .text		: {
10f24071e5Spatrick    *(.peheader)
11f24071e5Spatrick    *(.text .stub .text.* .gnu.linkonce.t.*)
12f24071e5Spatrick    /* .gnu.warning sections are handled specially by elf32.em. */
13f24071e5Spatrick    *(.gnu.warning)
14f24071e5Spatrick    *(.plt)
15f24071e5Spatrick  } =0xD4200000
16*09ce6c06Skettenis  . = ALIGN(4096);
17*09ce6c06Skettenis  _etext = .;
18*09ce6c06Skettenis  __data_start = .;
19f24071e5Spatrick  .data		: {
20f24071e5Spatrick    *(.rodata .rodata.* .gnu.linkonce.r.*)
21f24071e5Spatrick    *(.rodata1)
22f24071e5Spatrick    *(.sdata2 .sdata2.* .gnu.linkonce.s2.*)
23f24071e5Spatrick    *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)
24f24071e5Spatrick    *(.opd)
25f24071e5Spatrick    *(.data .data.* .gnu.linkonce.d.*)
26f24071e5Spatrick    *(.data1)
27f24071e5Spatrick    *(.plabel)
28f24071e5Spatrick
29f24071e5Spatrick    . = ALIGN(16);
30f24071e5Spatrick    __bss_start = .;
31f24071e5Spatrick    *(.sbss .sbss.* .gnu.linkonce.sb.*)
32f24071e5Spatrick    *(.scommon)
33f24071e5Spatrick    *(.dynbss)
34f24071e5Spatrick    *(.bss *.bss.*)
35f24071e5Spatrick    *(COMMON)
36f24071e5Spatrick    . = ALIGN(16);
37f24071e5Spatrick    __bss_end = .;
38f24071e5Spatrick  }
39f24071e5Spatrick  . = ALIGN(16);
40f24071e5Spatrick  set_Xcommand_set	: {
41f24071e5Spatrick    __start_set_Xcommand_set = .;
42f24071e5Spatrick    *(set_Xcommand_set)
43f24071e5Spatrick    __stop_set_Xcommand_set = .;
44f24071e5Spatrick  }
45f24071e5Spatrick  set_Xficl_compile_set	: {
46f24071e5Spatrick    __start_set_Xficl_compile_set = .;
47f24071e5Spatrick    *(set_Xficl_compile_set)
48f24071e5Spatrick    __stop_set_Xficl_compile_set = .;
49f24071e5Spatrick  }
50f24071e5Spatrick  . = ALIGN(16);
51f24071e5Spatrick  __gp = .;
52f24071e5Spatrick  .sdata	: {
53f24071e5Spatrick    *(.got.plt .got)
54f24071e5Spatrick    *(.sdata .sdata.* .gnu.linkonce.s.*)
55f24071e5Spatrick    *(dynsbss)
56f24071e5Spatrick    *(.scommon)
57f24071e5Spatrick  }
58f24071e5Spatrick  . = ALIGN(16);
59f24071e5Spatrick  .dynamic	: { *(.dynamic) }
60f24071e5Spatrick  . = ALIGN(16);
61f24071e5Spatrick  .rela.dyn	: {
62f24071e5Spatrick    *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
63f24071e5Spatrick    *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
64f24071e5Spatrick    *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
65f24071e5Spatrick    *(.rela.got)
66f24071e5Spatrick    *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*)
67f24071e5Spatrick    *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*)
68f24071e5Spatrick    *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
69f24071e5Spatrick    *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
70f24071e5Spatrick    *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
71f24071e5Spatrick    *(.rela.plt)
72f24071e5Spatrick    *(.relset_*)
73f24071e5Spatrick    *(.rela.dyn .rela.dyn.*)
74f24071e5Spatrick  }
75f24071e5Spatrick  . = ALIGN(16);
76f24071e5Spatrick  .reloc	: { *(.reloc) }
77f24071e5Spatrick  . = ALIGN(16);
78f24071e5Spatrick  .dynsym	: { *(.dynsym) }
79c8f7b19eSpatrick  .dynstr	: { *(.dynstr) }
80f24071e5Spatrick  _edata = .;
81*09ce6c06Skettenis  __data_size = . - __data_start;
82f24071e5Spatrick
83f24071e5Spatrick  /* Unused sections */
84f24071e5Spatrick  .hash		: { *(.hash) }
85f24071e5Spatrick}
86