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