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