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