blob: fa907996784eb9ce6cfb1c0fc5fb34ba53626787 (
plain)
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
|
/*
Common part of the linker scripts for STR71x devices in RAM mode
(that is, the RAM is seen at 0 and we assume that the loader initializes it)
Copyright RAISONANCE 2005
You can use, modify and distribute thisfile freely, but without any waranty.
*/
/* Sections Definitions */
SECTIONS
{
/* for Cortex devices, the beginning of the startup code is stored in the .isr_vector section, which goes to start of RAM */
.isr_vector :
{
. = ALIGN(4);
*(.isr_vector) /* Startup code */
. = ALIGN(4);
} >RAM
/* the beginning of the startup code is stored in the .flashtext section */
.flashtext :
{
. = ALIGN(4);
*crt0*.o (.flashtext) /* Startup code */
*startup.o (.flashtext) /* Startup code */
*(.flashtext) /* Startup code */
. = ALIGN(4);
} >RAM
/* the program code is stored in the .text section */
.text :
{
. = ALIGN(4);
*crt0*.o (.text) /* Startup code */
*startup.o (.text) /* Startup code */
*(.text ) /* remaining code */
*(.glue_7)
*(.glue_7t)
. = ALIGN(4);
} >RAM
/* This is the uninitialized data section. */
.bss :
{
. = ALIGN(4);
_sbss = .;
*(.bss)
*(COMMON)
. = ALIGN(4);
_ebss = . ;
_etext = _ebss ;
} >RAM
/* read-only data (constants) */
.rodata :
{
*(.rodata)
*(.rodata*)
. = ALIGN(4);
} > RAM
/* This is the initialized data section. */
.data :
{
. = ALIGN(4);
_sidata = . ; /*this is useless but allows the same startup as for the other modes to be used.*/
_sdata = .;
*(.data)
. = ALIGN(4);
_edata = . ;
} >RAM
PROVIDE ( end = _edata );
PROVIDE ( _end = _edata );
/* This is the user stack section
This is just to check that there is enough RAM left for the User mode stack
It should generate an error if it's full.
*/
._usrstack :
{
. = ALIGN(4);
_susrstack = . ;
. = . + _Minimum_Stack_Size ;
. = ALIGN(4);
_eusrstack = . ;
} >RAM
__exidx_start = .;
__exidx_end = .;
/* after that it's only debugging information. */
/* remove the debugging information from the standard libraries */
/DISCARD/ :
{
libc.a ( * )
libm.a ( * )
libgcc.a ( * )
}
/* Stabs debugging sections. */
.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) }
/* DWARF debug sections.
Symbols in the DWARF debugging sections are relative to the beginning
of the section so we begin them at 0. */
/* DWARF 1 */
.debug 0 : { *(.debug) }
.line 0 : { *(.line) }
/* GNU DWARF 1 extensions */
.debug_srcinfo 0 : { *(.debug_srcinfo) }
.debug_sfnames 0 : { *(.debug_sfnames) }
/* DWARF 1.1 and DWARF 2 */
.debug_aranges 0 : { *(.debug_aranges) }
.debug_pubnames 0 : { *(.debug_pubnames) }
/* DWARF 2 */
/* .debug_info 0 : { * ( EXCLUDE_FILE ( *libc.a *libm.a ) .debug_info .gnu.linkonce.wi.*) }*/
.debug_info 0 : { * ( .debug_info .gnu.linkonce.wi.*) }
/* .debug_abbrev 0 : { *(EXCLUDE_FILE ( *libc.a *libm.a ) .debug_abbrev) }*/
.debug_abbrev 0 : { *(.debug_abbrev) }
/* .debug_line 0 : { *(EXCLUDE_FILE ( *libc.a *libm.a ) .debug_line) }*/
.debug_line 0 : { *( .debug_line) }
/* (*(EXCLUDE_FILE (*crtend.o *otherfile.o) .ctors)) */
.debug_frame 0 : { *(.debug_frame) }
.debug_str 0 : { *(.debug_str) }
.debug_loc 0 : { *(.debug_loc) }
.debug_macinfo 0 : { *(.debug_macinfo) }
/* SGI/MIPS DWARF 2 extensions */
.debug_weaknames 0 : { *(.debug_weaknames) }
.debug_funcnames 0 : { *(.debug_funcnames) }
.debug_typenames 0 : { *(.debug_typenames) }
.debug_varnames 0 : { *(.debug_varnames) }
}
|