GNU Linux-libre 5.4.274-gnu1
[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     : { *(.init_array) }
113   .fini_array     : { *(.fini_array) }
114   .data           : {
115     INIT_TASK_DATA(KERNEL_STACK_SIZE)
116     . = ALIGN(KERNEL_STACK_SIZE);
117     *(.data..init_irqstack)
118     DATA_DATA
119     *(.data.* .gnu.linkonce.d.*)
120     SORT(CONSTRUCTORS)
121   }
122   .data1          : { *(.data1) }
123   .tdata          : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
124   .tbss           : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
125   .eh_frame       : { KEEP (*(.eh_frame)) }
126   .gcc_except_table   : { *(.gcc_except_table) }
127   .dynamic        : { *(.dynamic) }
128   .ctors          : {
129     /* gcc uses crtbegin.o to find the start of
130        the constructors, so we make sure it is
131        first.  Because this is a wildcard, it
132        doesn't matter if the user does not
133        actually link against crtbegin.o; the
134        linker won't look for a file to match a
135        wildcard.  The wildcard also means that it
136        doesn't matter which directory crtbegin.o
137        is in.  */
138     KEEP (*crtbegin.o(.ctors))
139     /* We don't want to include the .ctor section from
140        from the crtend.o file until after the sorted ctors.
141        The .ctor section from the crtend file contains the
142        end of ctors marker and it must be last */
143     KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors))
144     KEEP (*(SORT(.ctors.*)))
145     KEEP (*(.ctors))
146   }
147   .dtors          : {
148     KEEP (*crtbegin.o(.dtors))
149     KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors))
150     KEEP (*(SORT(.dtors.*)))
151     KEEP (*(.dtors))
152   }
153   .jcr            : { KEEP (*(.jcr)) }
154   .got            : { *(.got.plt) *(.got) }
155   _edata = .;
156   PROVIDE (edata = .);
157   .bss            : {
158    __bss_start = .;
159    *(.dynbss)
160    *(.bss .bss.* .gnu.linkonce.b.*)
161    *(COMMON)
162    /* Align here to ensure that the .bss section occupies space up to
163       _end.  Align after .bss to ensure correct alignment even if the
164       .bss section disappears because there are no input sections.  */
165    . = ALIGN(32 / 8);
166   . = ALIGN(32 / 8);
167   }
168    __bss_stop = .;
169   _end = .;
170   PROVIDE (end = .);
171
172   STABS_DEBUG
173
174   DWARF_DEBUG
175
176   DISCARDS
177 }