xref: /freebsd/stand/efi/loader/arch/arm64/arm64.ldscript (revision a90b9d0159070121c221b966469c3e36d912bf82)
1/*
2OUTPUT_FORMAT("elf64-aarch64-freebsd", "elf64-aarch64-freebsd", "elf64-aarch64-freebsd")
3*/
4OUTPUT_ARCH(aarch64)
5ENTRY(_start)
6SECTIONS
7{
8  /* Read-only sections, merged into text segment: */
9  . = 0;
10  ImageBase = .;
11  .text		: {
12    *(.peheader)
13    *(.text .stub .text.* .gnu.linkonce.t.*)
14    /* .gnu.warning sections are handled specially by elf32.em. */
15    *(.gnu.warning)
16    *(.plt)
17  } =0xD4200000
18  . = ALIGN(4096);
19  _etext = .;
20  __data_start = .;
21  .data		: {
22    *(.rodata .rodata.* .gnu.linkonce.r.*)
23    *(.rodata1)
24    *(.sdata2 .sdata2.* .gnu.linkonce.s2.*)
25    *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)
26    *(.opd)
27    *(.data .data.* .gnu.linkonce.d.*)
28    *(.data1)
29    *(.plabel)
30
31    . = ALIGN(16);
32    __bss_start = .;
33    *(.sbss .sbss.* .gnu.linkonce.sb.*)
34    *(.scommon)
35    *(.dynbss)
36    *(.bss *.bss.*)
37    *(COMMON)
38    . = ALIGN(16);
39    __bss_end = .;
40  }
41  . = ALIGN(16);
42  __gp = .;
43  .sdata	: {
44    *(.got.plt .got)
45    *(.sdata .sdata.* .gnu.linkonce.s.*)
46    *(dynsbss)
47    *(.scommon)
48  }
49  . = ALIGN(16);
50  .dynamic	: { *(.dynamic) }
51  . = ALIGN(16);
52  .rela.dyn	: {
53    *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
54    *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
55    *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
56    *(.rela.got)
57    *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*)
58    *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*)
59    *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*)
60    *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
61    *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
62    *(.rela.plt)
63    *(.relset_*)
64    *(.rela.dyn .rela.dyn.*)
65  }
66  . = ALIGN(16);
67  .reloc	: { *(.reloc) }
68  . = ALIGN(16);
69  .dynsym	: { *(.dynsym) }
70  _edata = .;
71  __data_size = ABSOLUTE(. - __data_start);
72
73  /* Unused sections */
74  .interp	: { *(.interp) }
75  .dynstr	: { *(.dynstr) }
76  .hash		: { *(.hash) }
77}
78