GNU Linux-libre 4.14.251-gnu1
[releases.git] / arch / um / kernel / dyn.lds.S
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #include <asm-generic/vmlinux.lds.h>
3 #include <asm/page.h>
4
5 OUTPUT_FORMAT(ELF_FORMAT)
6 OUTPUT_ARCH(ELF_ARCH)
7 ENTRY(_start)
8 jiffies = jiffies_64;
9
10 VERSION {
11   {
12     local: *;
13   };
14 }
15
16 SECTIONS
17 {
18   PROVIDE (__executable_start = START);
19   . = START + SIZEOF_HEADERS;
20   .interp         : { *(.interp) }
21   __binary_start = .;
22   . = ALIGN(4096);              /* Init code and data */
23   _text = .;
24   INIT_TEXT_SECTION(PAGE_SIZE)
25
26   . = ALIGN(PAGE_SIZE);
27
28   /* Read-only sections, merged into text segment: */
29   .hash           : { *(.hash) }
30   .gnu.hash       : { *(.gnu.hash) }
31   .dynsym         : { *(.dynsym) }
32   .dynstr         : { *(.dynstr) }
33   .gnu.version    : { *(.gnu.version) }
34   .gnu.version_d  : { *(.gnu.version_d) }
35   .gnu.version_r  : { *(.gnu.version_r) }
36   .rel.init       : { *(.rel.init) }
37   .rela.init      : { *(.rela.init) }
38   .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }
39   .rela.text      : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) }
40   .rel.fini       : { *(.rel.fini) }
41   .rela.fini      : { *(.rela.fini) }
42   .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
43   .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
44   .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
45   .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
46   .rel.tdata      : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
47   .rela.tdata     : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) }
48   .rel.tbss       : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }
49   .rela.tbss      : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) }
50   .rel.ctors      : { *(.rel.ctors) }
51   .rela.ctors     : { *(.rela.ctors) }
52   .rel.dtors      : { *(.rel.dtors) }
53   .rela.dtors     : { *(.rela.dtors) }
54   .rel.got        : { *(.rel.got) }
55   .rela.got       : { *(.rela.got) }
56   .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }
57   .rela.bss       : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) }
58   .rel.plt : {
59         *(.rel.plt)
60         PROVIDE_HIDDEN(__rel_iplt_start = .);
61         *(.rel.iplt)
62         PROVIDE_HIDDEN(__rel_iplt_end = .);
63   }
64   .rela.plt : {
65         *(.rela.plt)
66         PROVIDE_HIDDEN(__rela_iplt_start = .);
67         *(.rela.iplt)
68         PROVIDE_HIDDEN(__rela_iplt_end = .);
69   }
70   .init           : {
71     KEEP (*(.init))
72   } =0x90909090
73   .plt            : { *(.plt) }
74   .text           : {
75     _stext = .;
76     TEXT_TEXT
77     SCHED_TEXT
78     CPUIDLE_TEXT
79     LOCK_TEXT
80     *(.fixup)
81     *(.stub .text.* .gnu.linkonce.t.*)
82     /* .gnu.warning sections are handled specially by elf32.em.  */
83     *(.gnu.warning)
84
85     . = ALIGN(PAGE_SIZE);
86   } =0x90909090
87   . = ALIGN(PAGE_SIZE);
88   .syscall_stub : {
89         __syscall_stub_start = .;
90         *(.__syscall_stub*)
91         __syscall_stub_end = .;
92   }
93   .fini           : {
94     KEEP (*(.fini))
95   } =0x90909090
96
97   .kstrtab : { *(.kstrtab) }
98
99   #include <asm/common.lds.S>
100
101   __init_begin = .;
102   init.data : { INIT_DATA }
103   __init_end = .;
104
105   /* Ensure the __preinit_array_start label is properly aligned.  We
106      could instead move the label definition inside the section, but
107      the linker would then create the section even if it turns out to
108      be empty, which isn't pretty.  */
109   . = ALIGN(32 / 8);
110   .preinit_array     : { *(.preinit_array) }
111   .init_array     : { *(.init_array) }
112   .fini_array     : { *(.fini_array) }
113   .data           : {
114     INIT_TASK_DATA(KERNEL_STACK_SIZE)
115     . = ALIGN(KERNEL_STACK_SIZE);
116     *(.data..init_irqstack)
117     DATA_DATA
118     *(.data.* .gnu.linkonce.d.*)
119     SORT(CONSTRUCTORS)
120   }
121   .data1          : { *(.data1) }
122   .tdata          : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
123   .tbss           : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
124   .eh_frame       : { KEEP (*(.eh_frame)) }
125   .gcc_except_table   : { *(.gcc_except_table) }
126   .dynamic        : { *(.dynamic) }
127   .ctors          : {
128     /* gcc uses crtbegin.o to find the start of
129        the constructors, so we make sure it is
130        first.  Because this is a wildcard, it
131        doesn't matter if the user does not
132        actually link against crtbegin.o; the
133        linker won't look for a file to match a
134        wildcard.  The wildcard also means that it
135        doesn't matter which directory crtbegin.o
136        is in.  */
137     KEEP (*crtbegin.o(.ctors))
138     /* We don't want to include the .ctor section from
139        from the crtend.o file until after the sorted ctors.
140        The .ctor section from the crtend file contains the
141        end of ctors marker and it must be last */
142     KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors))
143     KEEP (*(SORT(.ctors.*)))
144     KEEP (*(.ctors))
145   }
146   .dtors          : {
147     KEEP (*crtbegin.o(.dtors))
148     KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors))
149     KEEP (*(SORT(.dtors.*)))
150     KEEP (*(.dtors))
151   }
152   .jcr            : { KEEP (*(.jcr)) }
153   .got            : { *(.got.plt) *(.got) }
154   _edata = .;
155   PROVIDE (edata = .);
156   .bss            : {
157    __bss_start = .;
158    *(.dynbss)
159    *(.bss .bss.* .gnu.linkonce.b.*)
160    *(COMMON)
161    /* Align here to ensure that the .bss section occupies space up to
162       _end.  Align after .bss to ensure correct alignment even if the
163       .bss section disappears because there are no input sections.  */
164    . = ALIGN(32 / 8);
165   . = ALIGN(32 / 8);
166   }
167    __bss_stop = .;
168   _end = .;
169   PROVIDE (end = .);
170
171   STABS_DEBUG
172
173   DWARF_DEBUG
174
175   DISCARDS
176 }