]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/conf/ldscript.amd64
clk: Move rockchip driver into the common directory
[FreeBSD/FreeBSD.git] / sys / conf / ldscript.amd64
1 OUTPUT_FORMAT("elf64-x86-64-freebsd", "elf64-x86-64-freebsd", "elf64-x86-64-freebsd")
2 OUTPUT_ARCH(i386:x86-64)
3 ENTRY(btext)
4 SEARCH_DIR("/usr/lib");
5 SECTIONS
6 {
7   /* Read-only sections, merged into text segment: */
8   . = kernbase + kernload + SIZEOF_HEADERS;
9   /*
10    * Use the AT keyword in order to set the right LMA that contains
11    * the physical address where the section should be loaded. This is
12    * needed for the Xen loader which honours the LMA.
13    */
14   .interp         : AT (kernload + SIZEOF_HEADERS) { *(.interp) }
15   .hash           : { *(.hash) }
16   .gnu.hash       : { *(.gnu.hash) }
17   .dynsym         : { *(.dynsym) }
18   .dynstr         : { *(.dynstr) }
19   .gnu.version    : { *(.gnu.version) }
20   .gnu.version_d  : { *(.gnu.version_d) }
21   .gnu.version_r  : { *(.gnu.version_r) }
22   .rel.init       : { *(.rel.init) }
23   .rela.init      : { *(.rela.init) }
24   .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }
25   .rela.text      : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) }
26   .rel.fini       : { *(.rel.fini) }
27   .rela.fini      : { *(.rela.fini) }
28   .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
29   .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
30   .rel.data.rel.ro   : { *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) }
31   .rela.data.rel.ro   : { *(.rela.data.rel.ro* .rela.gnu.linkonce.d.rel.ro.*) }
32   .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
33   .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
34   .rel.tdata      : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
35   .rela.tdata     : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) }
36   .rel.tbss       : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }
37   .rela.tbss      : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) }
38   .rel.ctors      : { *(.rel.ctors) }
39   .rela.ctors     : { *(.rela.ctors) }
40   .rel.dtors      : { *(.rel.dtors) }
41   .rela.dtors     : { *(.rela.dtors) }
42   .rel.got        : { *(.rel.got) }
43   .rela.got       : { *(.rela.got) }
44   .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }
45   .rela.bss       : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) }
46   .rel.plt        : { *(.rel.plt) }
47   .rela.plt       : { *(.rela.plt) }
48   .init           :
49   {
50     KEEP (*(.init))
51   } =0xCCCCCCCC
52   .plt            : { *(.plt) }
53   .text           :
54   {
55     *(.text .stub .text.* .gnu.linkonce.t.*)
56     KEEP (*(.text.*personality*))
57     /* .gnu.warning sections are handled specially by elf32.em.  */
58     *(.gnu.warning)
59   } =0xCCCCCCCC
60   .fini           :
61   {
62     KEEP (*(.fini))
63   } =0xCCCCCCCC
64   PROVIDE (__etext = .);
65   PROVIDE (_etext = .);
66   PROVIDE (etext = .);
67   .rodata         : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
68   .rodata1        : { *(.rodata1) }
69   .note.gnu.build-id : {
70     PROVIDE (__build_id_start = .);
71     *(.note.gnu.build-id)
72     PROVIDE (__build_id_end = .);
73   }
74   .eh_frame_hdr : { *(.eh_frame_hdr) }
75   .eh_frame       : ONLY_IF_RO { KEEP (*(.eh_frame)) }
76   .gcc_except_table   : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) }
77   /* Adjust the address for the data segment.  We want to adjust up to
78      the same address within the page on the next page up.  */
79   . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
80   PROVIDE (brwsection = .);
81   /* Exception handling  */
82   .eh_frame       : ONLY_IF_RW { KEEP (*(.eh_frame)) }
83   .gcc_except_table   : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) }
84   /* Thread Local Storage sections  */
85   .tdata          : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
86   .tbss           : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
87   .preinit_array     :
88   {
89     PROVIDE_HIDDEN (__preinit_array_start = .);
90     KEEP (*(.preinit_array))
91     PROVIDE_HIDDEN (__preinit_array_end = .);
92   }
93   .init_array     :
94   {
95      PROVIDE_HIDDEN (__init_array_start = .);
96      KEEP (*(SORT(.init_array.*)))
97      KEEP (*(.init_array))
98      PROVIDE_HIDDEN (__init_array_end = .);
99   }
100   .fini_array     :
101   {
102     PROVIDE_HIDDEN (__fini_array_start = .);
103     KEEP (*(.fini_array))
104     KEEP (*(SORT(.fini_array.*)))
105     PROVIDE_HIDDEN (__fini_array_end = .);
106   }
107   _start_ctors = .;
108   PROVIDE (start_ctors = .);
109   .ctors          :
110   {
111     /* gcc uses crtbegin.o to find the start of
112        the constructors, so we make sure it is
113        first.  Because this is a wildcard, it
114        doesn't matter if the user does not
115        actually link against crtbegin.o; the
116        linker won't look for a file to match a
117        wildcard.  The wildcard also means that it
118        doesn't matter which directory crtbegin.o
119        is in.  */
120     KEEP (*crtbegin.o(.ctors))
121     KEEP (*crtbegin?.o(.ctors))
122     /* We don't want to include the .ctor section from
123        the crtend.o file until after the sorted ctors.
124        The .ctor section from the crtend file contains the
125        end of ctors marker and it must be last */
126     KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors))
127     KEEP (*(SORT(.ctors.*)))
128     KEEP (*(.ctors))
129   }
130   _stop_ctors = .;
131   PROVIDE (stop_ctors = .);
132   .dtors          :
133   {
134     KEEP (*crtbegin.o(.dtors))
135     KEEP (*crtbegin?.o(.dtors))
136     KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors))
137     KEEP (*(SORT(.dtors.*)))
138     KEEP (*(.dtors))
139   }
140   .jcr            : { KEEP (*(.jcr)) }
141   .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) }
142   .dynamic        : { *(.dynamic) }
143   .got            : { *(.got) }
144   . = DATA_SEGMENT_RELRO_END (24, .);
145   .got.plt        : { *(.got.plt) }
146   . = ALIGN(128);
147   .data.read_frequently :
148   {
149     *(SORT_BY_ALIGNMENT(.data.read_frequently))
150   }
151   .data.read_mostly :
152   {
153     *(.data.read_mostly)
154   }
155   . = ALIGN(128);
156   .data.exclusive_cache_line :
157   {
158     *(.data.exclusive_cache_line)
159   }
160   . = ALIGN(128);
161   .data           :
162   {
163     *(.data .data.* .gnu.linkonce.d.*)
164     KEEP (*(.gnu.linkonce.d.*personality*))
165   }
166   .data1          : { *(.data1) }
167   _edata = .; PROVIDE (edata = .);
168   __bss_start = .;
169   .bss            :
170   {
171    *(.dynbss)
172    *(.bss .bss.* .gnu.linkonce.b.*)
173    *(COMMON)
174    /* Ensure that the .bss section ends at a superpage boundary.
175       This way it can be mapped using non-executable large pages. */
176    . = ALIGN(0x200000);
177   }
178   _end = .; PROVIDE (end = .);
179   . = DATA_SEGMENT_END (.);
180   /* Stabs debugging sections.  */
181   .stab          0 : { *(.stab) }
182   .stabstr       0 : { *(.stabstr) }
183   .stab.excl     0 : { *(.stab.excl) }
184   .stab.exclstr  0 : { *(.stab.exclstr) }
185   .stab.index    0 : { *(.stab.index) }
186   .stab.indexstr 0 : { *(.stab.indexstr) }
187   .comment       0 : { *(.comment) }
188   /* DWARF debug sections.
189      Symbols in the DWARF debugging sections are relative to the beginning
190      of the section so we begin them at 0.  */
191   /* DWARF 1 */
192   .debug          0 : { *(.debug) }
193   .line           0 : { *(.line) }
194   /* GNU DWARF 1 extensions */
195   .debug_srcinfo  0 : { *(.debug_srcinfo) }
196   .debug_sfnames  0 : { *(.debug_sfnames) }
197   /* DWARF 1.1 and DWARF 2 */
198   .debug_aranges  0 : { *(.debug_aranges) }
199   .debug_pubnames 0 : { *(.debug_pubnames) }
200   /* DWARF 2 */
201   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
202   .debug_abbrev   0 : { *(.debug_abbrev) }
203   .debug_line     0 : { *(.debug_line) }
204   .debug_frame    0 : { *(.debug_frame) }
205   .debug_str      0 : { *(.debug_str) }
206   .debug_loc      0 : { *(.debug_loc) }
207   .debug_macinfo  0 : { *(.debug_macinfo) }
208   /* SGI/MIPS DWARF 2 extensions */
209   .debug_weaknames 0 : { *(.debug_weaknames) }
210   .debug_funcnames 0 : { *(.debug_funcnames) }
211   .debug_typenames 0 : { *(.debug_typenames) }
212   .debug_varnames  0 : { *(.debug_varnames) }
213   /* DWARF 3 */
214   .debug_pubtypes 0 : { *(.debug_pubtypes) }
215   .debug_ranges   0 : { *(.debug_ranges) }
216   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
217   /DISCARD/ : { *(.note.GNU-stack) }
218 }