xref: /openbmc/u-boot/arch/mips/cpu/u-boot.lds (revision fea7f3aa)
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
14OUTPUT_ARCH(mips)
15ENTRY(_start)
16SECTIONS
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	__init_end = .;
57
58	.rel.dyn : {
59		__rel_dyn_start = .;
60		*(.rel.dyn)
61		__rel_dyn_end = .;
62	}
63
64	.padding : {
65		/*
66		 * Workaround for a binutils feature (or bug?).
67		 *
68		 * The GNU ld from binutils puts the dynamic relocation
69		 * entries into the .rel.dyn section. Sometimes it
70		 * allocates more dynamic relocation entries than it needs
71		 * and the unused slots are set to R_MIPS_NONE entries.
72		 *
73		 * However the size of the .rel.dyn section in the ELF
74		 * section header does not cover the unused entries, so
75		 * objcopy removes those during stripping.
76		 *
77		 * Create a small section here to avoid that.
78		 */
79		LONG(0xFFFFFFFF)
80	}
81
82	_end = .;
83
84	.bss __rel_dyn_start (OVERLAY) : {
85		__bss_start = .;
86		*(.sbss.*)
87		*(.bss.*)
88		*(COMMON)
89		. = ALIGN(4);
90		__bss_end = .;
91	}
92
93	.dynsym _end : {
94		*(.dynsym)
95	}
96
97	.dynbss : {
98		*(.dynbss)
99	}
100
101	.dynstr : {
102		*(.dynstr)
103	}
104
105	.dynamic : {
106		*(.dynamic)
107	}
108
109	.plt : {
110		*(.plt)
111	}
112
113	.interp : {
114		*(.interp)
115	}
116
117	.gnu : {
118		*(.gnu*)
119	}
120
121	.MIPS.stubs : {
122		*(.MIPS.stubs)
123	}
124
125	.hash : {
126		*(.hash)
127	}
128}
129