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