]> git.kernelconcepts.de Git - karo-tx-linux.git/blob - arch/powerpc/kernel/vmlinux.lds
ppc64: simplify the build a little
[karo-tx-linux.git] / arch / powerpc / kernel / vmlinux.lds
1 /* Align . to a 8 byte boundary equals to maximum function alignment. */
2 /* sched.text is aling to function alignment to secure we have same
3  * address even at second ld pass when generating System.map */
4 /* spinlock.text is aling to function alignment to secure we have same
5  * address even at second ld pass when generating System.map */
6   /* DWARF debug sections.
7                 Symbols in the DWARF debugging sections are relative to
8                 the beginning of the section so we begin them at 0.  */
9   /* Stabs debugging sections.  */
10 OUTPUT_ARCH(powerpc:common)
11 jiffies = jiffies_64 + 4;
12 SECTIONS
13 {
14   /* Read-only sections, merged into text segment: */
15   . = + SIZEOF_HEADERS;
16   .interp : { *(.interp) }
17   .hash : { *(.hash) }
18   .dynsym : { *(.dynsym) }
19   .dynstr : { *(.dynstr) }
20   .rel.text : { *(.rel.text) }
21   .rela.text : { *(.rela.text) }
22   .rel.data : { *(.rel.data) }
23   .rela.data : { *(.rela.data) }
24   .rel.rodata : { *(.rel.rodata) }
25   .rela.rodata : { *(.rela.rodata) }
26   .rel.got : { *(.rel.got) }
27   .rela.got : { *(.rela.got) }
28   .rel.ctors : { *(.rel.ctors) }
29   .rela.ctors : { *(.rela.ctors) }
30   .rel.dtors : { *(.rel.dtors) }
31   .rela.dtors : { *(.rela.dtors) }
32   .rel.bss : { *(.rel.bss) }
33   .rela.bss : { *(.rela.bss) }
34   .rel.plt : { *(.rel.plt) }
35   .rela.plt : { *(.rela.plt) }
36 /*  .init          : { *(.init) } =0*/
37   .plt : { *(.plt) }
38   .text :
39   {
40     *(.text)
41     . = ALIGN(8); __sched_text_start = .; *(.sched.text) __sched_text_end = .;
42     . = ALIGN(8); __lock_text_start = .; *(.spinlock.text) __lock_text_end = .;
43     *(.fixup)
44     *(.got1)
45     __got2_start = .;
46     *(.got2)
47     __got2_end = .;
48   }
49   _etext = .;
50   PROVIDE (etext = .);
51   .rodata : AT(ADDR(.rodata) - 0) { *(.rodata) *(.rodata.*) *(__vermagic) } .rodata1 : AT(ADDR(.rodata1) - 0) { *(.rodata1) } .pci_fixup : AT(ADDR(.pci_fixup) - 0) { __start_pci_fixups_early = .; *(.pci_fixup_early) __end_pci_fixups_early = .; __start_pci_fixups_header = .; *(.pci_fixup_header) __end_pci_fixups_header = .; __start_pci_fixups_final = .; *(.pci_fixup_final) __end_pci_fixups_final = .; __start_pci_fixups_enable = .; *(.pci_fixup_enable) __end_pci_fixups_enable = .; } __ksymtab : AT(ADDR(__ksymtab) - 0) { __start___ksymtab = .; *(__ksymtab) __stop___ksymtab = .; } __ksymtab_gpl : AT(ADDR(__ksymtab_gpl) - 0) { __start___ksymtab_gpl = .; *(__ksymtab_gpl) __stop___ksymtab_gpl = .; } __kcrctab : AT(ADDR(__kcrctab) - 0) { __start___kcrctab = .; *(__kcrctab) __stop___kcrctab = .; } __kcrctab_gpl : AT(ADDR(__kcrctab_gpl) - 0) { __start___kcrctab_gpl = .; *(__kcrctab_gpl) __stop___kcrctab_gpl = .; } __ksymtab_strings : AT(ADDR(__ksymtab_strings) - 0) { *(__ksymtab_strings) } __param : AT(ADDR(__param) - 0) { __start___param = .; *(__param) __stop___param = .; }
52   .fini : { *(.fini) } =0
53   .ctors : { *(.ctors) }
54   .dtors : { *(.dtors) }
55   .fixup : { *(.fixup) }
56  __ex_table : {
57   __start___ex_table = .;
58   *(__ex_table)
59   __stop___ex_table = .;
60  }
61  __bug_table : {
62   __start___bug_table = .;
63   *(__bug_table)
64   __stop___bug_table = .;
65  }
66   /* Read-write section, merged into data segment: */
67   . = ALIGN(4096);
68   .data :
69   {
70     *(.data)
71     *(.data1)
72     *(.sdata)
73     *(.sdata2)
74     *(.got.plt) *(.got)
75     *(.dynamic)
76     CONSTRUCTORS
77   }
78
79   . = ALIGN(4096);
80   __nosave_begin = .;
81   .data_nosave : { *(.data.nosave) }
82   . = ALIGN(4096);
83   __nosave_end = .;
84
85   . = ALIGN(32);
86   .data.cacheline_aligned : { *(.data.cacheline_aligned) }
87
88   _edata = .;
89   PROVIDE (edata = .);
90
91   . = ALIGN(8192);
92   .data.init_task : { *(.data.init_task) }
93
94   . = ALIGN(4096);
95   __init_begin = .;
96   .init.text : {
97  _sinittext = .;
98  *(.init.text)
99  _einittext = .;
100   }
101   /* .exit.text is discarded at runtime, not link time,
102      to deal with references from __bug_table */
103   .exit.text : { *(.exit.text) }
104   .init.data : {
105     *(.init.data);
106     __vtop_table_begin = .;
107     *(.vtop_fixup);
108     __vtop_table_end = .;
109     __ptov_table_begin = .;
110     *(.ptov_fixup);
111     __ptov_table_end = .;
112   }
113   . = ALIGN(16);
114   __setup_start = .;
115   .init.setup : { *(.init.setup) }
116   __setup_end = .;
117   __initcall_start = .;
118   .initcall.init : {
119  *(.initcall1.init)
120  *(.initcall2.init)
121  *(.initcall3.init)
122  *(.initcall4.init)
123  *(.initcall5.init)
124  *(.initcall6.init)
125  *(.initcall7.init)
126   }
127   __initcall_end = .;
128
129   __con_initcall_start = .;
130   .con_initcall.init : { *(.con_initcall.init) }
131   __con_initcall_end = .;
132
133   .security_initcall.init : AT(ADDR(.security_initcall.init) - 0) { __security_initcall_start = .; *(.security_initcall.init) __security_initcall_end = .; }
134
135   __start___ftr_fixup = .;
136   __ftr_fixup : { *(__ftr_fixup) }
137   __stop___ftr_fixup = .;
138
139   . = ALIGN(32);
140   __per_cpu_start = .;
141   .data.percpu : { *(.data.percpu) }
142   __per_cpu_end = .;
143
144   . = ALIGN(4096);
145   __initramfs_start = .;
146   .init.ramfs : { *(.init.ramfs) }
147   __initramfs_end = .;
148
149   . = ALIGN(4096);
150   __init_end = .;
151
152   . = ALIGN(4096);
153   _sextratext = .;
154   _eextratext = .;
155
156   __bss_start = .;
157   .bss :
158   {
159    *(.sbss) *(.scommon)
160    *(.dynbss)
161    *(.bss)
162    *(COMMON)
163   }
164   __bss_stop = .;
165
166   _end = . ;
167   PROVIDE (end = .);
168
169   /* Sections to be discarded. */
170   /DISCARD/ : {
171     *(.exitcall.exit)
172     *(.exit.data)
173   }
174 }