xref: /openbmc/u-boot/arch/mips/cpu/u-boot.lds (revision f83ef0dac83110d20389eb71f09285f009f3d198)
1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
3  * (C) Copyright 2003
4  * Wolfgang Denk Engineering, <wd@denx.de>
5  */
6 
7 OUTPUT_ARCH(mips)
8 ENTRY(_start)
9 SECTIONS
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