GNU Linux-libre 4.9.326-gnu1
[releases.git] / arch / um / kernel / dyn.lds.S
1 #include <asm-generic/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     *(.fixup)
80     *(.stub .text.* .gnu.linkonce.t.*)
81     /* .gnu.warning sections are handled specially by elf32.em.  */
82     *(.gnu.warning)
83
84     . = ALIGN(PAGE_SIZE);
85   } =0x90909090
86   . = ALIGN(PAGE_SIZE);
87   .syscall_stub : {
88         __syscall_stub_start = .;
89         *(.__syscall_stub*)
90         __syscall_stub_end = .;
91   }
92   .fini           : {
93     KEEP (*(.fini))
94   } =0x90909090
95
96   .kstrtab : { *(.kstrtab) }
97
98   #include <asm/common.lds.S>
99
100   __init_begin = .;
101   init.data : { INIT_DATA }
102   __init_end = .;
103
104   /* Ensure the __preinit_array_start label is properly aligned.  We
105      could instead move the label definition inside the section, but
106      the linker would then create the section even if it turns out to
107      be empty, which isn't pretty.  */
108   . = ALIGN(32 / 8);
109   .preinit_array     : { *(.preinit_array) }
110   .init_array     : { *(.init_array) }
111   .fini_array     : { *(.fini_array) }
112   .data           : {
113     INIT_TASK_DATA(KERNEL_STACK_SIZE)
114     . = ALIGN(KERNEL_STACK_SIZE);
115     *(.data..init_irqstack)
116     DATA_DATA
117     *(.data.* .gnu.linkonce.d.*)
118     SORT(CONSTRUCTORS)
119   }
120   .data1          : { *(.data1) }
121   .tdata          : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
122   .tbss           : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
123   .eh_frame       : { KEEP (*(.eh_frame)) }
124   .gcc_except_table   : { *(.gcc_except_table) }
125   .dynamic        : { *(.dynamic) }
126   .ctors          : {
127     /* gcc uses crtbegin.o to find the start of
128        the constructors, so we make sure it is
129        first.  Because this is a wildcard, it
130        doesn't matter if the user does not
131        actually link against crtbegin.o; the
132        linker won't look for a file to match a
133        wildcard.  The wildcard also means that it
134        doesn't matter which directory crtbegin.o
135        is in.  */
136     KEEP (*crtbegin.o(.ctors))
137     /* We don't want to include the .ctor section from
138        from the crtend.o file until after the sorted ctors.
139        The .ctor section from the crtend file contains the
140        end of ctors marker and it must be last */
141     KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors))
142     KEEP (*(SORT(.ctors.*)))
143     KEEP (*(.ctors))
144   }
145   .dtors          : {
146     KEEP (*crtbegin.o(.dtors))
147     KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors))
148     KEEP (*(SORT(.dtors.*)))
149     KEEP (*(.dtors))
150   }
151   .jcr            : { KEEP (*(.jcr)) }
152   .got            : { *(.got.plt) *(.got) }
153   _edata = .;
154   PROVIDE (edata = .);
155   .bss            : {
156    __bss_start = .;
157    *(.dynbss)
158    *(.bss .bss.* .gnu.linkonce.b.*)
159    *(COMMON)
160    /* Align here to ensure that the .bss section occupies space up to
161       _end.  Align after .bss to ensure correct alignment even if the
162       .bss section disappears because there are no input sections.  */
163    . = ALIGN(32 / 8);
164   . = ALIGN(32 / 8);
165   }
166    __bss_stop = .;
167   _end = .;
168   PROVIDE (end = .);
169
170   STABS_DEBUG
171
172   DWARF_DEBUG
173
174   DISCARDS
175 }