]> git.kernelconcepts.de Git - karo-tx-uboot.git/blob - arch/mips/cpu/u-boot.lds
Add GPL-2.0+ SPDX-License-Identifier to source files
[karo-tx-uboot.git] / arch / mips / cpu / u-boot.lds
1 /*
2  * (C) Copyright 2003
3  * Wolfgang Denk Engineering, <wd@denx.de>
4  *
5  * SPDX-License-Identifier:     GPL-2.0+
6  */
7
8 #if defined(CONFIG_64BIT)
9 #define PTR_COUNT_SHIFT 3
10 #else
11 #define PTR_COUNT_SHIFT 2
12 #endif
13
14 OUTPUT_ARCH(mips)
15 ENTRY(_start)
16 SECTIONS
17 {
18         . = 0x00000000;
19
20         . = ALIGN(4);
21         .text : {
22                 *(.text*)
23         }
24
25         . = ALIGN(4);
26         .rodata : {
27                 *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
28         }
29
30         . = ALIGN(4);
31         .data : {
32                 *(.data*)
33         }
34
35         . = .;
36         _gp = ALIGN(16) + 0x7ff0;
37
38         .got : {
39                 *(.got)
40         }
41
42         num_got_entries = SIZEOF(.got) >> PTR_COUNT_SHIFT;
43
44         . = ALIGN(4);
45         .sdata : {
46                 *(.sdata*)
47         }
48
49         . = ALIGN(4);
50         .u_boot_list : {
51                 KEEP(*(SORT(.u_boot_list*)));
52         }
53
54         . = ALIGN(4);
55         __image_copy_end = .;
56
57         .rel.dyn : {
58                 __rel_dyn_start = .;
59                 *(.rel.dyn)
60                 __rel_dyn_end = .;
61         }
62
63         .deadcode : {
64                 /*
65                  * Workaround for a binutils feature (or bug?).
66                  *
67                  * The GNU ld from binutils puts the dynamic relocation
68                  * entries into the .rel.dyn section. Sometimes it
69                  * allocates more dynamic relocation entries than it needs
70                  * and the unused slots are set to R_MIPS_NONE entries.
71                  *
72                  * However the size of the .rel.dyn section in the ELF
73                  * section header does not cover the unused entries, so
74                  * objcopy removes those during stripping.
75                  *
76                  * Create a small section here to avoid that.
77                  */
78                 LONG(0xffffffff);
79         }
80
81         .dynsym : {
82                 *(.dynsym)
83         }
84
85         .bss __rel_dyn_start (OVERLAY) : {
86                 __bss_start = .;
87                 *(.sbss.*)
88                 *(.bss.*)
89                 *(COMMON)
90                 . = ALIGN(4);
91                 __bss_end = .;
92         }
93
94         /DISCARD/ : {
95                 *(.dynbss)
96                 *(.dynstr)
97                 *(.dynamic)
98                 *(.interp)
99                 *(.hash)
100                 *(.gnu.*)
101                 *(.plt)
102                 *(.got.plt)
103                 *(.rel.plt)
104         }
105 }