xref: /openbmc/u-boot/arch/mips/cpu/u-boot.lds (revision 679549d1)
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
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}
106