xref: /freebsd/sys/conf/ldscript.arm64 (revision 3e76d05231b0aa77d922bdbc9abf62d9747a91ab)
1e5acd89cSAndrew TurnerOUTPUT_ARCH(aarch64)
2e5acd89cSAndrew TurnerENTRY(_start)
3e5acd89cSAndrew Turner
4e5acd89cSAndrew TurnerSEARCH_DIR(/usr/lib);
5e5acd89cSAndrew TurnerSECTIONS
6e5acd89cSAndrew Turner{
7e5acd89cSAndrew Turner  /* Read-only sections, merged into text segment: */
831333ebbSIan Lepore  . = text_start; /* This is set using --defsym= on the command line. */
947e07394SAndrew Turner  .vmm_vectors : { *(.vmm_vectors) }
10e5acd89cSAndrew Turner  .text      :
11e5acd89cSAndrew Turner  {
12e5acd89cSAndrew Turner    *(.text)
13e5acd89cSAndrew Turner    *(.stub)
14e5acd89cSAndrew Turner    /* .gnu.warning sections are handled specially by elf32.em.  */
15e5acd89cSAndrew Turner    *(.gnu.warning)
16e5acd89cSAndrew Turner    *(.gnu.linkonce.t*)
17e5acd89cSAndrew Turner  } =0x9090
18e5acd89cSAndrew Turner  _etext = .;
19e5acd89cSAndrew Turner  PROVIDE (etext = .);
2047e07394SAndrew Turner
21e5acd89cSAndrew Turner  .fini      : { *(.fini)    } =0x9090
226f0c70d4SAndrew Turner  .rodata    : { *(.rodata*) *(.gnu.linkonce.r*) }
23e5acd89cSAndrew Turner  .rodata1   : { *(.rodata1) }
24e5acd89cSAndrew Turner   .interp     : { *(.interp) 	}
25e5acd89cSAndrew Turner  .hash          : { *(.hash)		}
26e5acd89cSAndrew Turner  .dynsym        : { *(.dynsym)		}
27e5acd89cSAndrew Turner  .dynstr        : { *(.dynstr)		}
28e5acd89cSAndrew Turner  .gnu.version   : { *(.gnu.version)	}
29e5acd89cSAndrew Turner  .gnu.version_d   : { *(.gnu.version_d)	}
30e5acd89cSAndrew Turner  .gnu.version_r   : { *(.gnu.version_r)	}
3174cd06b4SEd Maste  .note.gnu.build-id : {
3274cd06b4SEd Maste    PROVIDE (__build_id_start = .);
3374cd06b4SEd Maste    *(.note.gnu.build-id)
3474cd06b4SEd Maste    PROVIDE (__build_id_end = .);
3574cd06b4SEd Maste  }
36e5acd89cSAndrew Turner  .rel.text      :
37e5acd89cSAndrew Turner    { *(.rel.text) *(.rel.gnu.linkonce.t*) }
38e5acd89cSAndrew Turner  .rela.text     :
39e5acd89cSAndrew Turner    { *(.rela.text) *(.rela.gnu.linkonce.t*) }
40e5acd89cSAndrew Turner  .rel.data      :
41e5acd89cSAndrew Turner    { *(.rel.data) *(.rel.gnu.linkonce.d*) }
42e5acd89cSAndrew Turner  .rela.data     :
43e5acd89cSAndrew Turner    { *(.rela.data) *(.rela.gnu.linkonce.d*) }
44e5acd89cSAndrew Turner  .rel.rodata    :
45e5acd89cSAndrew Turner    { *(.rel.rodata) *(.rel.gnu.linkonce.r*) }
46e5acd89cSAndrew Turner  .rela.rodata   :
47e5acd89cSAndrew Turner    { *(.rela.rodata) *(.rela.gnu.linkonce.r*) }
48e5acd89cSAndrew Turner  .rel.got       : { *(.rel.got)		}
49e5acd89cSAndrew Turner  .rela.got      : { *(.rela.got)		}
50e5acd89cSAndrew Turner  .rel.ctors     : { *(.rel.ctors)	}
51e5acd89cSAndrew Turner  .rela.ctors    : { *(.rela.ctors)	}
52e5acd89cSAndrew Turner  .rel.dtors     : { *(.rel.dtors)	}
53e5acd89cSAndrew Turner  .rela.dtors    : { *(.rela.dtors)	}
54e5acd89cSAndrew Turner  .rel.init      : { *(.rel.init)	}
55e5acd89cSAndrew Turner  .rela.init     : { *(.rela.init)	}
56e5acd89cSAndrew Turner  .rel.fini      : { *(.rel.fini)	}
57e5acd89cSAndrew Turner  .rela.fini     : { *(.rela.fini)	}
58e5acd89cSAndrew Turner  .rel.bss       : { *(.rel.bss)		}
59e5acd89cSAndrew Turner  .rela.bss      : { *(.rela.bss)		}
60e5acd89cSAndrew Turner  .rel.plt       : { *(.rel.plt)		}
61e5acd89cSAndrew Turner  .rela.plt      : { *(.rela.plt)		}
62e5acd89cSAndrew Turner  .init          : { *(.init)	} =0x9090
63e5acd89cSAndrew Turner  .plt      : { *(.plt)	}
64e5acd89cSAndrew Turner
65e5acd89cSAndrew Turner  . = ALIGN(4);
66e5acd89cSAndrew Turner  _extab_start = .;
67e5acd89cSAndrew Turner  PROVIDE(extab_start = .);
68e5acd89cSAndrew Turner  .ARM.extab : { *(.ARM.extab) }
69e5acd89cSAndrew Turner  _extab.end = .;
70e5acd89cSAndrew Turner  PROVIDE(extab_end = .);
71e5acd89cSAndrew Turner
72e5acd89cSAndrew Turner  _exidx_start = .;
73e5acd89cSAndrew Turner  PROVIDE(exidx_start = .);
74e5acd89cSAndrew Turner  .ARM.exidx : { *(.ARM.exidx) }
75e5acd89cSAndrew Turner  _exidx_end = .;
76e5acd89cSAndrew Turner  PROVIDE(exidx_end = .);
77e5acd89cSAndrew Turner
78e5acd89cSAndrew Turner  /* Adjust the address for the data segment.  We want to adjust up to
79e5acd89cSAndrew Turner     the same address within the page on the next page up.  */
80e5acd89cSAndrew Turner  . = ALIGN(0x1000) + (. & (0x1000 - 1)) ;
81e5acd89cSAndrew Turner  .data    :
82e5acd89cSAndrew Turner  {
83e5acd89cSAndrew Turner    *(.data)
84e5acd89cSAndrew Turner    *(.gnu.linkonce.d*)
85e5acd89cSAndrew Turner  }
86766a7c73SMateusz Guzik  . = ALIGN(128);
87766a7c73SMateusz Guzik  .data.read_frequently :
88766a7c73SMateusz Guzik  {
89766a7c73SMateusz Guzik    *(SORT_BY_ALIGNMENT(.data.read_frequently))
90766a7c73SMateusz Guzik  }
91766a7c73SMateusz Guzik  .data.read_mostly :
92766a7c73SMateusz Guzik  {
93766a7c73SMateusz Guzik    *(.data.read_mostly)
94766a7c73SMateusz Guzik  }
95766a7c73SMateusz Guzik  . = ALIGN(128);
96766a7c73SMateusz Guzik  .data.exclusive_cache_line :
97766a7c73SMateusz Guzik  {
98766a7c73SMateusz Guzik    *(.data.exclusive_cache_line)
99766a7c73SMateusz Guzik  }
100766a7c73SMateusz Guzik  . = ALIGN(128);
101e5acd89cSAndrew Turner  .data1   : { *(.data1) }
102e5acd89cSAndrew Turner  . = ALIGN(32 / 8);
103*3e76d052SZhenlei Huang  .init_array    :
104*3e76d052SZhenlei Huang  {
105*3e76d052SZhenlei Huang    PROVIDE_HIDDEN (__init_array_start = .);
106*3e76d052SZhenlei Huang    KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*)))
107*3e76d052SZhenlei Huang    KEEP (*(.init_array))
108*3e76d052SZhenlei Huang    PROVIDE_HIDDEN (__init_array_end = .);
109*3e76d052SZhenlei Huang  }
110*3e76d052SZhenlei Huang  .fini_array    :
111*3e76d052SZhenlei Huang  {
112*3e76d052SZhenlei Huang    PROVIDE_HIDDEN (__fini_array_start = .);
113*3e76d052SZhenlei Huang    KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*)))
114*3e76d052SZhenlei Huang    KEEP (*(.fini_array))
115*3e76d052SZhenlei Huang    PROVIDE_HIDDEN (__fini_array_end = .);
116*3e76d052SZhenlei Huang  }
117e5acd89cSAndrew Turner  _start_ctors = .;
118e5acd89cSAndrew Turner  PROVIDE (start_ctors = .);
119e5acd89cSAndrew Turner  .ctors         :
120e5acd89cSAndrew Turner  {
121e5acd89cSAndrew Turner    *(.ctors)
122e5acd89cSAndrew Turner  }
123e5acd89cSAndrew Turner  _stop_ctors = .;
124e5acd89cSAndrew Turner  PROVIDE (stop_ctors = .);
125e5acd89cSAndrew Turner  .dtors         :
126e5acd89cSAndrew Turner  {
127e5acd89cSAndrew Turner    *(.dtors)
128e5acd89cSAndrew Turner  }
129e5acd89cSAndrew Turner  .got           : { *(.got.plt) *(.got) }
130e5acd89cSAndrew Turner  .dynamic       : { *(.dynamic) }
131e5acd89cSAndrew Turner  /* We want the small data sections together, so single-instruction offsets
132e5acd89cSAndrew Turner     can access them all, and initialized data all before uninitialized, so
133e5acd89cSAndrew Turner     we can shorten the on-disk segment size.  */
134e5acd89cSAndrew Turner  . = ALIGN(8);
135e5acd89cSAndrew Turner  .sdata     : { *(.sdata) }
136e5acd89cSAndrew Turner  _edata  =  .;
137e5acd89cSAndrew Turner  PROVIDE (edata = .);
138f1bc3750SAndrew Turner  . = ALIGN(16);
139e5acd89cSAndrew Turner  __bss_start = .;
140e5acd89cSAndrew Turner  .sbss      : { *(.sbss) *(.scommon) }
141e5acd89cSAndrew Turner  .bss       :
142e5acd89cSAndrew Turner  {
143e5acd89cSAndrew Turner   *(.dynbss)
144e5acd89cSAndrew Turner   *(.bss)
145e5acd89cSAndrew Turner   *(COMMON)
146f1bc3750SAndrew Turner   . = ALIGN(16);
147166ceb6fSAndrew Turner   __bss_end = .;
148166ceb6fSAndrew Turner   /* A section for the initial page table, it doesn't need to be in the
149166ceb6fSAndrew Turner      kernel file, however unlike normal .bss entries should not be zeroed
150166ceb6fSAndrew Turner      out as we use it before the .bss section is cleared. */
151166ceb6fSAndrew Turner   *(.init_pagetable)
152166ceb6fSAndrew Turner  }
153e5acd89cSAndrew Turner  _end = . ;
154e5acd89cSAndrew Turner  PROVIDE (end = .);
15537d6d682SWarner Losh
15637d6d682SWarner Losh  /* Debug */
15737d6d682SWarner Losh  INCLUDE debuginfo.ldscript
15823dff4fdSWarner Losh
15923dff4fdSWarner Losh  .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
16023dff4fdSWarner Losh  /DISCARD/ : { *(.note.GNU-stack) }
161e5acd89cSAndrew Turner}
162