PowerPC: Add relocation support for -fpic
[platform/kernel/u-boot.git] / arch / powerpc / cpu / mpc824x / u-boot.lds
1 /*
2  * (C) Copyright 2001-2010
3  * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
4  *
5  * See file CREDITS for list of people who contributed to this
6  * project.
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License as
10  * published by the Free Software Foundation; either version 2 of
11  * the License, or (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
21  * MA 02111-1307 USA
22  */
23
24 OUTPUT_ARCH(powerpc)
25 /* Do we need any of these for elf?
26    __DYNAMIC = 0;    */
27 SECTIONS
28 {
29   /* Read-only sections, merged into text segment: */
30   .text      :
31   {
32     arch/powerpc/cpu/mpc824x/start.o    (.text*)
33     *(.text*)
34     . = ALIGN(16);
35     *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
36   }
37
38   /* Read-write section, merged into data segment: */
39   . = (. + 0x0FFF) & 0xFFFFF000;
40   _erotext = .;
41   PROVIDE (erotext = .);
42   .reloc   :
43   {
44     _GOT2_TABLE_ = .;
45     KEEP(*(.got2))
46     KEEP(*(.got))
47     PROVIDE(_GLOBAL_OFFSET_TABLE_ = . + 4);
48     _FIXUP_TABLE_ = .;
49     KEEP(*(.fixup))
50   }
51   __got2_entries = ((_GLOBAL_OFFSET_TABLE_ - _GOT2_TABLE_) >> 2) - 1;
52   __fixup_entries = (. - _FIXUP_TABLE_) >> 2;
53
54   .data    :
55   {
56     *(.data*)
57     *(.sdata*)
58   }
59   _edata  =  .;
60   PROVIDE (edata = .);
61
62   . = .;
63   __u_boot_cmd_start = .;
64   .u_boot_cmd : { *(.u_boot_cmd) }
65   __u_boot_cmd_end = .;
66
67
68   . = .;
69   __start___ex_table = .;
70   __ex_table : { *(__ex_table) }
71   __stop___ex_table = .;
72
73   . = ALIGN(4096);
74   __init_begin = .;
75   .text.init : { *(.text.init) }
76   .data.init : { *(.data.init) }
77   . = ALIGN(4096);
78   __init_end = .;
79
80   __bss_start = .;
81   .bss (NOLOAD)       :
82   {
83    *(.bss*)
84    *(.sbss*)
85    *(COMMON)
86    . = ALIGN(4);
87   }
88   _end = . ;
89   PROVIDE (end = .);
90 }