xref: /openbmc/u-boot/arch/mips/cpu/u-boot.lds (revision 1d2c0506)
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_start = .;
23		*(.text*)
24		__text_end = .;
25	}
26
27	. = ALIGN(4);
28	.rodata : {
29		*(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
30	}
31
32	. = ALIGN(4);
33	.data : {
34		*(.data*)
35	}
36
37	. = .;
38	_gp = ALIGN(16) + 0x7ff0;
39
40	.got : {
41		*(.got)
42	}
43
44	num_got_entries = SIZEOF(.got) >> PTR_COUNT_SHIFT;
45
46	. = ALIGN(4);
47	.sdata : {
48		*(.sdata*)
49	}
50
51	. = ALIGN(4);
52	.u_boot_list : {
53		KEEP(*(SORT(.u_boot_list*)));
54	}
55
56	. = ALIGN(4);
57	__image_copy_end = .;
58	__init_end = .;
59
60	.rel.dyn : {
61		__rel_dyn_start = .;
62		*(.rel.dyn)
63		__rel_dyn_end = .;
64	}
65
66	.padding : {
67		/*
68		 * Workaround for a binutils feature (or bug?).
69		 *
70		 * The GNU ld from binutils puts the dynamic relocation
71		 * entries into the .rel.dyn section. Sometimes it
72		 * allocates more dynamic relocation entries than it needs
73		 * and the unused slots are set to R_MIPS_NONE entries.
74		 *
75		 * However the size of the .rel.dyn section in the ELF
76		 * section header does not cover the unused entries, so
77		 * objcopy removes those during stripping.
78		 *
79		 * Create a small section here to avoid that.
80		 */
81		LONG(0xFFFFFFFF)
82	}
83
84	_end = .;
85
86	.bss __rel_dyn_start (OVERLAY) : {
87		__bss_start = .;
88		*(.sbss.*)
89		*(.bss.*)
90		*(COMMON)
91		. = ALIGN(4);
92		__bss_end = .;
93	}
94
95	.dynsym _end : {
96		*(.dynsym)
97	}
98
99	.dynbss : {
100		*(.dynbss)
101	}
102
103	.dynstr : {
104		*(.dynstr)
105	}
106
107	.dynamic : {
108		*(.dynamic)
109	}
110
111	.plt : {
112		*(.plt)
113	}
114
115	.interp : {
116		*(.interp)
117	}
118
119	.gnu : {
120		*(.gnu*)
121	}
122
123	.MIPS.stubs : {
124		*(.MIPS.stubs)
125	}
126
127	.hash : {
128		*(.hash)
129	}
130}
131