1/* SPDX-License-Identifier: GPL-2.0+ */
2/*
3 * (C) Copyright 2003
4 * Wolfgang Denk Engineering, <wd@denx.de>
5 */
6
7OUTPUT_ARCH(mips)
8ENTRY(_start)
9SECTIONS
10{
11	. = 0x00000000;
12
13	. = ALIGN(4);
14	.text : {
15		__text_start = .;
16		*(.text*)
17		__text_end = .;
18	}
19
20	. = ALIGN(4);
21	.rodata : {
22		*(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
23	}
24
25	. = ALIGN(4);
26	.data : {
27		*(.data*)
28	}
29
30	. = ALIGN(4);
31	.sdata : {
32		*(.sdata*)
33	}
34
35	. = ALIGN(4);
36	.u_boot_list : {
37		KEEP(*(SORT(.u_boot_list*)));
38	}
39
40	. = ALIGN(4);
41	__image_copy_end = .;
42	__init_end = .;
43
44	.data.reloc : {
45		__rel_start = .;
46		/*
47		 * Space for relocation table
48		 * This needs to be filled so that the
49		 * mips-reloc tool can overwrite the content.
50		 * An invalid value is left at the start of the
51		 * section to abort relocation if the table
52		 * has not been filled in.
53		 */
54		LONG(0xFFFFFFFF);
55		FILL(0);
56		. += CONFIG_MIPS_RELOCATION_TABLE_SIZE - 4;
57	}
58
59	. = ALIGN(4);
60	_end = .;
61
62	.bss __rel_start (OVERLAY) : {
63		__bss_start = .;
64		*(.sbss.*)
65		*(.bss.*)
66		*(COMMON)
67		. = ALIGN(4);
68		__bss_end = .;
69	}
70
71	/* These mark the ABI of U-Boot for debuggers. */
72	.mdebug.abi32 : {
73		KEEP(*(.mdebug.abi32))
74	}
75	.mdebug.abi64 : {
76		KEEP(*(.mdebug.abi64))
77	}
78
79	/* This is the MIPS specific mdebug section. */
80	.mdebug : { *(.mdebug) }
81
82	/* Stabs debugging sections.  */
83	.stab 0 : { *(.stab) }
84	.stabstr 0 : { *(.stabstr) }
85	.stab.excl 0 : { *(.stab.excl) }
86	.stab.exclstr 0 : { *(.stab.exclstr) }
87	.stab.index 0 : { *(.stab.index) }
88	.stab.indexstr 0 : { *(.stab.indexstr) }
89	.comment 0 : { *(.comment) }
90
91	/*
92	 * DWARF debug sections.
93	 * Symbols in the DWARF debugging sections are relative to
94	 * the beginning of the section so we begin them at 0.
95	 */
96	/* DWARF 1 */
97	.debug 0 : { *(.debug) }
98	.line 0 : { *(.line) }
99	/* GNU DWARF 1 extensions */
100	.debug_srcinfo 0 : { *(.debug_srcinfo) }
101	.debug_sfnames 0 : { *(.debug_sfnames) }
102	/* DWARF 1.1 and DWARF 2 */
103	.debug_aranges 0 : { *(.debug_aranges) }
104	.debug_pubnames 0 : { *(.debug_pubnames) }
105	/* DWARF 2 */
106	.debug_info 0 : {
107		*(.debug_info
108		.gnu.linkonce.wi.*)
109	}
110	.debug_abbrev 0 : { *(.debug_abbrev) }
111	.debug_line 0 : { *(.debug_line) }
112	.debug_frame 0 : { *(.debug_frame) }
113	.debug_str 0 : { *(.debug_str) }
114	.debug_loc 0 : { *(.debug_loc) }
115	.debug_macinfo 0 : { *(.debug_macinfo) }
116	.debug_pubtypes 0 : { *(.debug_pubtypes) }
117	/* DWARF 3 */
118	.debug_ranges 0 : { *(.debug_ranges) }
119	/* SGI/MIPS DWARF 2 extensions */
120	.debug_weaknames 0 : { *(.debug_weaknames) }
121	.debug_funcnames 0 : { *(.debug_funcnames) }
122	.debug_typenames 0 : { *(.debug_typenames) }
123	.debug_varnames 0 : { *(.debug_varnames) }
124	/* GNU DWARF 2 extensions */
125	.debug_gnu_pubnames 0 : { *(.debug_gnu_pubnames) }
126	.debug_gnu_pubtypes 0 : { *(.debug_gnu_pubtypes) }
127	/* DWARF 4 */
128	.debug_types 0 : { *(.debug_types) }
129	/* DWARF 5 */
130	.debug_macro 0 : { *(.debug_macro) }
131	.debug_addr 0 : { *(.debug_addr) }
132
133	/DISCARD/ : {
134		/* ABI crap starts here */
135		*(.MIPS.abiflags)
136		*(.MIPS.options)
137		*(.options)
138		*(.pdr)
139		*(.reginfo)
140		*(.eh_frame)
141	}
142}
143