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