xref: /openbmc/u-boot/arch/nios2/cpu/u-boot.lds (revision a79854a9)
1/*
2 * (C) Copyright 2004, Psyent Corporation <www.psyent.com>
3 * Scott McNutt <smcnutt@psyent.com>
4 *
5 * SPDX-License-Identifier:	GPL-2.0+
6 */
7
8
9OUTPUT_FORMAT("elf32-littlenios2")
10OUTPUT_ARCH(nios2)
11ENTRY(_start)
12
13SECTIONS
14{
15	.text :
16	{
17	  arch/nios2/cpu/start.o (.text)
18	  *(.text)
19	  *(.text.*)
20	  *(.gnu.linkonce.t*)
21	  *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
22	  *(.gnu.linkonce.r*)
23	}
24	. = ALIGN (4);
25	_etext = .;
26	PROVIDE (etext = .);
27
28	/* CMD TABLE - sandwich this in between text and data so
29	 * the initialization code relocates the command table as
30	 * well -- admittedly, this is just pure laziness ;-)
31	 */
32
33	. = ALIGN(4);
34	.u_boot_list : {
35		KEEP(*(SORT(.u_boot_list*)));
36	}
37
38	/* INIT DATA sections - "Small" data (see the gcc -G option)
39	 * is always gp-relative. Here we make all init data sections
40	 * adjacent to simplify the startup code -- and provide
41	 * the global pointer for gp-relative access.
42	 */
43	_data = .;
44	.data :
45	{
46	  *(.data)
47	  *(.data.*)
48	  *(.gnu.linkonce.d*)
49	}
50
51	. = ALIGN(16);
52	_gp = .;			/* Global pointer addr */
53	PROVIDE (gp = .);
54
55	.sdata :
56	{
57	  *(.sdata)
58	  *(.sdata.*)
59	  *(.gnu.linkonce.s.*)
60	}
61	. = ALIGN(4);
62
63	_edata = .;
64	PROVIDE (edata = .);
65
66	/* UNINIT DATA - Small uninitialized data is first so it's
67	 * adjacent to sdata and can be referenced via gp. The normal
68	 * bss follows. We keep it adjacent to simplify init code.
69	 */
70	__bss_start = .;
71	.sbss (NOLOAD) :
72	{
73	  *(.sbss)
74	  *(.sbss.*)
75	  *(.gnu.linkonce.sb.*)
76	  *(.scommon)
77	}
78	. = ALIGN(4);
79	.bss (NOLOAD) :
80	{
81	  *(.bss)
82	  *(.bss.*)
83	  *(.dynbss)
84	  *(COMMON)
85	  *(.scommon)
86	}
87	. = ALIGN(4);
88	__bss_end = .;
89	PROVIDE (end = .);
90
91	/* DEBUG -- symbol table, string table, etc. etc.
92	 */
93	.stab 0 : { *(.stab) }
94	.stabstr 0 : { *(.stabstr) }
95	.stab.excl 0 : { *(.stab.excl) }
96	.stab.exclstr 0 : { *(.stab.exclstr) }
97	.stab.index 0 : { *(.stab.index) }
98	.stab.indexstr 0 : { *(.stab.indexstr) }
99	.comment 0 : { *(.comment) }
100	.debug		0 : { *(.debug) }
101	.line		0 : { *(.line) }
102	.debug_srcinfo	0 : { *(.debug_srcinfo) }
103	.debug_sfnames	0 : { *(.debug_sfnames) }
104	.debug_aranges	0 : { *(.debug_aranges) }
105	.debug_pubnames 0 : { *(.debug_pubnames) }
106	.debug_info	0 : { *(.debug_info) }
107	.debug_abbrev	0 : { *(.debug_abbrev) }
108	.debug_line	0 : { *(.debug_line) }
109	.debug_frame	0 : { *(.debug_frame) }
110	.debug_str	0 : { *(.debug_str) }
111	.debug_loc	0 : { *(.debug_loc) }
112	.debug_macinfo	0 : { *(.debug_macinfo) }
113	.debug_weaknames 0 : { *(.debug_weaknames) }
114	.debug_funcnames 0 : { *(.debug_funcnames) }
115	.debug_typenames 0 : { *(.debug_typenames) }
116	.debug_varnames	 0 : { *(.debug_varnames) }
117}
118