Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs...
[pandora-kernel.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 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   _stext = .;
18   __init_begin = .;
19   INIT_TEXT_SECTION(PAGE_SIZE)
20
21   . = ALIGN(PAGE_SIZE);
22
23   /* Read-only sections, merged into text segment: */
24   .hash           : { *(.hash) }
25   .gnu.hash       : { *(.gnu.hash) }
26   .dynsym         : { *(.dynsym) }
27   .dynstr         : { *(.dynstr) }
28   .gnu.version    : { *(.gnu.version) }
29   .gnu.version_d  : { *(.gnu.version_d) }
30   .gnu.version_r  : { *(.gnu.version_r) }
31   .rel.init       : { *(.rel.init) }
32   .rela.init      : { *(.rela.init) }
33   .rel.text       : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) }
34   .rela.text      : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) }
35   .rel.fini       : { *(.rel.fini) }
36   .rela.fini      : { *(.rela.fini) }
37   .rel.rodata     : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) }
38   .rela.rodata    : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) }
39   .rel.data       : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) }
40   .rela.data      : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) }
41   .rel.tdata      : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) }
42   .rela.tdata     : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) }
43   .rel.tbss       : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) }
44   .rela.tbss      : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) }
45   .rel.ctors      : { *(.rel.ctors) }
46   .rela.ctors     : { *(.rela.ctors) }
47   .rel.dtors      : { *(.rel.dtors) }
48   .rela.dtors     : { *(.rela.dtors) }
49   .rel.got        : { *(.rel.got) }
50   .rela.got       : { *(.rela.got) }
51   .rel.bss        : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) }
52   .rela.bss       : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) }
53   .rel.plt : {
54         *(.rel.plt)
55         PROVIDE_HIDDEN(__rel_iplt_start = .);
56         *(.rel.iplt)
57         PROVIDE_HIDDEN(__rel_iplt_end = .);
58   }
59   .rela.plt : {
60         *(.rela.plt)
61         PROVIDE_HIDDEN(__rela_iplt_start = .);
62         *(.rela.iplt)
63         PROVIDE_HIDDEN(__rela_iplt_end = .);
64   }
65   .init           : {
66     KEEP (*(.init))
67   } =0x90909090
68   .plt            : { *(.plt) }
69   .text           : {
70     TEXT_TEXT
71     SCHED_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.data : { INIT_DATA }
95
96   /* Ensure the __preinit_array_start label is properly aligned.  We
97      could instead move the label definition inside the section, but
98      the linker would then create the section even if it turns out to
99      be empty, which isn't pretty.  */
100   . = ALIGN(32 / 8);
101   .preinit_array     : { *(.preinit_array) }
102   .init_array     : { *(.init_array) }
103   .fini_array     : { *(.fini_array) }
104   .data           : {
105     INIT_TASK_DATA(KERNEL_STACK_SIZE)
106     . = ALIGN(KERNEL_STACK_SIZE);
107     *(.data..init_irqstack)
108     DATA_DATA
109     *(.data.* .gnu.linkonce.d.*)
110     SORT(CONSTRUCTORS)
111   }
112   .data1          : { *(.data1) }
113   .tdata          : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
114   .tbss           : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
115   .eh_frame       : { KEEP (*(.eh_frame)) }
116   .gcc_except_table   : { *(.gcc_except_table) }
117   .dynamic        : { *(.dynamic) }
118   .ctors          : {
119     /* gcc uses crtbegin.o to find the start of
120        the constructors, so we make sure it is
121        first.  Because this is a wildcard, it
122        doesn't matter if the user does not
123        actually link against crtbegin.o; the
124        linker won't look for a file to match a
125        wildcard.  The wildcard also means that it
126        doesn't matter which directory crtbegin.o
127        is in.  */
128     KEEP (*crtbegin.o(.ctors))
129     /* We don't want to include the .ctor section from
130        from the crtend.o file until after the sorted ctors.
131        The .ctor section from the crtend file contains the
132        end of ctors marker and it must be last */
133     KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors))
134     KEEP (*(SORT(.ctors.*)))
135     KEEP (*(.ctors))
136   }
137   .dtors          : {
138     KEEP (*crtbegin.o(.dtors))
139     KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors))
140     KEEP (*(SORT(.dtors.*)))
141     KEEP (*(.dtors))
142   }
143   .jcr            : { KEEP (*(.jcr)) }
144   .got            : { *(.got.plt) *(.got) }
145   _edata = .;
146   PROVIDE (edata = .);
147   .bss            : {
148    __bss_start = .;
149    *(.dynbss)
150    *(.bss .bss.* .gnu.linkonce.b.*)
151    *(COMMON)
152    /* Align here to ensure that the .bss section occupies space up to
153       _end.  Align after .bss to ensure correct alignment even if the
154       .bss section disappears because there are no input sections.  */
155    . = ALIGN(32 / 8);
156   . = ALIGN(32 / 8);
157   }
158   _end = .;
159   PROVIDE (end = .);
160
161   STABS_DEBUG
162
163   DWARF_DEBUG
164
165   DISCARDS
166 }