33
33
* OF THE POSSIBILITY OF SUCH DAMAGE.
34
34
*/
35
35
36
- ENTRY(_start)
36
+ ENTRY(@PREFIX@ _start)
37
37
38
38
/*
39
39
* These values should be provided by the application. We'll include
@@ -43,11 +43,11 @@ ENTRY(_start)
43
43
MEMORY
44
44
{@INIT_MEMORY@
45
45
flash (rx!w) :
46
- ORIGIN = DEFINED(__flash) ? __flash : @DEFAULT_FLASH_ADDR@,
47
- LENGTH = DEFINED(__flash_size) ? __flash_size : @DEFAULT_FLASH_SIZE@
46
+ ORIGIN = DEFINED(@PREFIX@ __flash) ? @PREFIX@ __flash : @DEFAULT_FLASH_ADDR@,
47
+ LENGTH = DEFINED(@PREFIX@ __flash_size) ? @PREFIX@ __flash_size : @DEFAULT_FLASH_SIZE@
48
48
ram (w!rx) :
49
- ORIGIN = DEFINED(__ram) ? __ram : @DEFAULT_RAM_ADDR@,
50
- LENGTH = DEFINED(__ram_size) ? __ram_size : @DEFAULT_RAM_SIZE@
49
+ ORIGIN = DEFINED(@PREFIX@ __ram) ? @PREFIX@ __ram : @DEFAULT_RAM_ADDR@,
50
+ LENGTH = DEFINED(@PREFIX@ __ram_size) ? @PREFIX@ __ram_size : @DEFAULT_RAM_SIZE@
51
51
}
52
52
53
53
PHDRS
60
60
61
61
SECTIONS
62
62
{
63
- PROVIDE(__stack = ORIGIN(ram) + LENGTH(ram));
63
+ PROVIDE(@PREFIX@ __stack = ORIGIN(ram) + LENGTH(ram));
64
64
@INIT_SECTIONS@
65
65
.text : {
66
66
@@ -70,11 +70,11 @@ SECTIONS
70
70
*(.text .text.* .opd .opd.*)
71
71
*(.gnu.linkonce.t.*)
72
72
KEEP (*(.fini .fini.*))
73
- __text_end = .;
73
+ @PREFIX@ __text_end = .;
74
74
75
- PROVIDE (__etext = __text_end);
76
- PROVIDE (_etext = __text_end);
77
- PROVIDE (etext = __text_end);
75
+ PROVIDE (@PREFIX@ __etext = @PREFIX@ __text_end);
76
+ PROVIDE (@PREFIX@ _etext = @PREFIX@ __text_end);
77
+ PROVIDE (@PREFIX@ etext = @PREFIX@ __text_end);
78
78
} >flash AT>flash :text
79
79
80
80
.rodata : {
@@ -97,19 +97,19 @@ SECTIONS
97
97
. = ALIGN(@DEFAULT_ALIGNMENT@);
98
98
99
99
/* lists of constructors and destructors */
100
- PROVIDE_HIDDEN ( __preinit_array_start = . );
100
+ PROVIDE_HIDDEN ( @PREFIX@ __preinit_array_start = . );
101
101
KEEP (*(.preinit_array))
102
- PROVIDE_HIDDEN ( __preinit_array_end = . );
102
+ PROVIDE_HIDDEN ( @PREFIX@ __preinit_array_end = . );
103
103
104
- PROVIDE_HIDDEN ( __init_array_start = . );
104
+ PROVIDE_HIDDEN ( @PREFIX@ __init_array_start = . );
105
105
KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*)))
106
106
KEEP (*(.init_array .ctors))
107
- PROVIDE_HIDDEN ( __init_array_end = . );
107
+ PROVIDE_HIDDEN ( @PREFIX@ __init_array_end = . );
108
108
109
- PROVIDE_HIDDEN ( __fini_array_start = . );
109
+ PROVIDE_HIDDEN ( @PREFIX@ __fini_array_start = . );
110
110
KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*)))
111
111
KEEP (*(.fini_array .dtors))
112
- PROVIDE_HIDDEN ( __fini_array_end = . );
112
+ PROVIDE_HIDDEN ( @PREFIX@ __fini_array_end = . );
113
113
114
114
} >flash AT>flash :text
115
115
@@ -134,33 +134,33 @@ SECTIONS
134
134
*(.ARM.extab* .gnu.linkonce.armextab.*)
135
135
} >flash AT>flash :text
136
136
.eh_frame_hdr : {
137
- PROVIDE_HIDDEN ( __eh_frame_hdr_start = . );
137
+ PROVIDE_HIDDEN ( @PREFIX@ __eh_frame_hdr_start = . );
138
138
*(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*)
139
- PROVIDE_HIDDEN ( __eh_frame_hdr_end = . );
139
+ PROVIDE_HIDDEN ( @PREFIX@ __eh_frame_hdr_end = . );
140
140
} >flash AT>flash :text
141
141
.eh_frame : {
142
- PROVIDE_HIDDEN ( __eh_frame_start = . );
142
+ PROVIDE_HIDDEN ( @PREFIX@ __eh_frame_start = . );
143
143
KEEP (*(.eh_frame .eh_frame.*))
144
- PROVIDE_HIDDEN ( __eh_frame_end = . );
144
+ PROVIDE_HIDDEN ( @PREFIX@ __eh_frame_end = . );
145
145
} >flash AT>flash :text
146
146
147
147
.except_unordered : {
148
148
. = ALIGN(@DEFAULT_ALIGNMENT@);
149
149
150
- PROVIDE(__exidx_start = .);
150
+ PROVIDE(@PREFIX@ __exidx_start = .);
151
151
*(.ARM.exidx*)
152
- PROVIDE(__exidx_end = .);
152
+ PROVIDE(@PREFIX@ __exidx_end = .);
153
153
} >flash AT>flash :text
154
154
@CPP_END@
155
155
156
156
/*
157
157
* Data values which are preserved across reset
158
158
*/
159
159
.preserve (NOLOAD) : {
160
- PROVIDE(__preserve_start__ = .);
160
+ PROVIDE(@PREFIX@ __preserve_start__ = .);
161
161
KEEP(*(SORT_BY_NAME(.preserve.*)))
162
162
KEEP(*(.preserve))
163
- PROVIDE(__preserve_end__ = .);
163
+ PROVIDE(@PREFIX@ __preserve_end__ = .);
164
164
} >ram AT>ram :ram
165
165
166
166
.data : @BFD_START@ ALIGN_WITH_INPUT @BFD_END@ {
@@ -170,13 +170,13 @@ SECTIONS
170
170
/* Need to pre-align so that the symbols come after padding */
171
171
. = ALIGN(@DEFAULT_ALIGNMENT@);
172
172
173
- PROVIDE( __global_pointer$ = . + 0x800 );
174
- PROVIDE( _gp = . + 0x8000);
173
+ PROVIDE( @PREFIX@ __global_pointer$ = . + 0x800 );
174
+ PROVIDE( @PREFIX@ _gp = . + 0x8000);
175
175
*(.sdata .sdata.* .sdata2.*)
176
176
*(.gnu.linkonce.s.*)
177
177
} >ram AT>flash :ram_init
178
- PROVIDE(__data_start = ADDR(.data));
179
- PROVIDE(__data_source = LOADADDR(.data));
178
+ PROVIDE(@PREFIX@ __data_start = ADDR(.data));
179
+ PROVIDE(@PREFIX@ __data_source = LOADADDR(.data));
180
180
181
181
/* Thread local initialized data. This gets
182
182
* space allocated as it is expected to be placed
@@ -190,39 +190,39 @@ SECTIONS
190
190
* as it only guarantees usage as a TLS template works
191
191
* rather than supporting this use case.
192
192
*/
193
- .tdata : @LLD_START@ ALIGN(__tls_align) @LLD_END@ @BFD_START@ ALIGN_WITH_INPUT @BFD_END@ {
193
+ .tdata : @LLD_START@ ALIGN(@PREFIX@ __tls_align) @LLD_END@ @BFD_START@ ALIGN_WITH_INPUT @BFD_END@ {
194
194
*(.tdata .tdata.* .gnu.linkonce.td.*)
195
- PROVIDE(__data_end = .);
196
- PROVIDE(__tdata_end = .);
195
+ PROVIDE(@PREFIX@ __data_end = .);
196
+ PROVIDE(@PREFIX@ __tdata_end = .);
197
197
} >ram AT>flash :tls :ram_init
198
- PROVIDE( __tls_base = ADDR(.tdata));
199
- PROVIDE( __tdata_start = ADDR(.tdata));
200
- PROVIDE( __tdata_source = LOADADDR(.tdata) );
201
- PROVIDE( __tdata_source_end = LOADADDR(.tdata) + SIZEOF(.tdata) );
202
- PROVIDE( __data_source_end = __tdata_source_end );
203
- PROVIDE( __tdata_size = SIZEOF(.tdata) );
204
-
205
- PROVIDE( __edata = __data_end );
206
- PROVIDE( _edata = __data_end );
207
- PROVIDE( edata = __data_end );
208
- PROVIDE( __data_size = __data_end - __data_start );
209
- PROVIDE( __data_source_size = __data_source_end - __data_source );
198
+ PROVIDE( @PREFIX@ __tls_base = ADDR(.tdata));
199
+ PROVIDE( @PREFIX@ __tdata_start = ADDR(.tdata));
200
+ PROVIDE( @PREFIX@ __tdata_source = LOADADDR(.tdata) );
201
+ PROVIDE( @PREFIX@ __tdata_source_end = LOADADDR(.tdata) + SIZEOF(.tdata) );
202
+ PROVIDE( @PREFIX@ __data_source_end = @PREFIX@ __tdata_source_end );
203
+ PROVIDE( @PREFIX@ __tdata_size = SIZEOF(.tdata) );
204
+
205
+ PROVIDE( @PREFIX@ __edata = @PREFIX@ __data_end );
206
+ PROVIDE( @PREFIX@ _edata = @PREFIX@ __data_end );
207
+ PROVIDE( @PREFIX@ edata = @PREFIX@ __data_end );
208
+ PROVIDE( @PREFIX@ __data_size = @PREFIX@ __data_end - @PREFIX@ __data_start );
209
+ PROVIDE( @PREFIX@ __data_source_size = @PREFIX@ __data_source_end - @PREFIX@ __data_source );
210
210
211
211
.tbss (NOLOAD) : {
212
212
*(.tbss .tbss.* .gnu.linkonce.tb.*)
213
213
*(.tcommon)
214
- PROVIDE( __tls_end = . );
215
- PROVIDE( __tbss_end = . );
214
+ PROVIDE( @PREFIX@ __tls_end = . );
215
+ PROVIDE( @PREFIX@ __tbss_end = . );
216
216
} >ram AT>ram :tls :ram
217
- PROVIDE( __bss_start = ADDR(.tbss));
218
- PROVIDE( __tbss_start = ADDR(.tbss));
219
- PROVIDE( __tbss_offset = ADDR(.tbss) - ADDR(.tdata) );
220
- PROVIDE( __tbss_size = SIZEOF(.tbss) );
221
- PROVIDE( __tls_size = __tls_end - __tls_base );
222
- PROVIDE( __tls_align = MAX(ALIGNOF(.tdata), ALIGNOF(.tbss)) );
223
- PROVIDE( __tls_size_align = (__tls_size + __tls_align - 1) & ~(__tls_align - 1));
224
- PROVIDE( __arm32_tls_tcb_offset = MAX(8, __tls_align) );
225
- PROVIDE( __arm64_tls_tcb_offset = MAX(16, __tls_align) );
217
+ PROVIDE( @PREFIX@ __bss_start = ADDR(.tbss));
218
+ PROVIDE( @PREFIX@ __tbss_start = ADDR(.tbss));
219
+ PROVIDE( @PREFIX@ __tbss_offset = ADDR(.tbss) - ADDR(.tdata) );
220
+ PROVIDE( @PREFIX@ __tbss_size = SIZEOF(.tbss) );
221
+ PROVIDE( @PREFIX@ __tls_size = @PREFIX@ __tls_end - @PREFIX@ __tls_base );
222
+ PROVIDE( @PREFIX@ __tls_align = MAX(ALIGNOF(.tdata), ALIGNOF(.tbss)) );
223
+ PROVIDE( @PREFIX@ __tls_size_align = (@PREFIX@ __tls_size + @PREFIX@ __tls_align - 1) & ~(@PREFIX@ __tls_align - 1));
224
+ PROVIDE( @PREFIX@ __arm32_tls_tcb_offset = MAX(8, @PREFIX@ __tls_align) );
225
+ PROVIDE( @PREFIX@ __arm64_tls_tcb_offset = MAX(16, @PREFIX@ __tls_align) );
226
226
227
227
/*
228
228
* Unlike ld.lld, ld.bfd does not advance the location counter for
@@ -245,27 +245,27 @@ SECTIONS
245
245
246
246
/* Align the heap */
247
247
. = ALIGN(@DEFAULT_ALIGNMENT@);
248
- __bss_end = .;
248
+ @PREFIX@ __bss_end = .;
249
249
} >ram AT>ram :ram
250
- PROVIDE( __non_tls_bss_start = ADDR(.bss) );
251
- PROVIDE( __end = __bss_end );
252
- _end = __bss_end;
253
- PROVIDE( end = __bss_end );
254
- PROVIDE( __bss_size = __bss_end - __bss_start );
250
+ PROVIDE( @PREFIX@ __non_tls_bss_start = ADDR(.bss) );
251
+ PROVIDE( @PREFIX@ __end = @PREFIX@ __bss_end );
252
+ @PREFIX@ _end = @PREFIX@ __bss_end;
253
+ PROVIDE( @PREFIX@ end = @PREFIX@ __bss_end );
254
+ PROVIDE( @PREFIX@ __bss_size = @PREFIX@ __bss_end - @PREFIX@ __bss_start );
255
255
256
256
/* Make the rest of memory available for heap storage */
257
- PROVIDE (__heap_start = __end);
258
- PROVIDE (__heap_end = __stack - (DEFINED(__stack_size) ? __stack_size : @DEFAULT_STACK_SIZE@));
259
- PROVIDE (__heap_size = __heap_end - __heap_start);
257
+ PROVIDE (@PREFIX@ __heap_start = @PREFIX@ __end);
258
+ PROVIDE (@PREFIX@ __heap_end = @PREFIX@ __stack - (DEFINED(@PREFIX@ __stack_size) ? @PREFIX@ __stack_size : @DEFAULT_STACK_SIZE@));
259
+ PROVIDE (@PREFIX@ __heap_size = @PREFIX@ __heap_end - @PREFIX@ __heap_start);
260
260
261
261
/* Allow a minimum heap size to be specified */
262
262
.heap (NOLOAD) : {
263
- . += (DEFINED(__heap_size_min) ? __heap_size_min : 0);
263
+ . += (DEFINED(@PREFIX@ __heap_size_min) ? @PREFIX@ __heap_size_min : 0);
264
264
} >ram :ram
265
265
266
266
/* Define a stack region to make sure it fits in memory */
267
267
.stack (NOLOAD) : {
268
- . += (DEFINED(__stack_size) ? __stack_size : @DEFAULT_STACK_SIZE@);
268
+ . += (DEFINED(@PREFIX@ __stack_size) ? @PREFIX@ __stack_size : @DEFAULT_STACK_SIZE@);
269
269
} >ram :ram
270
270
271
271
/* Throw away C++ exception handling information */
@@ -333,5 +333,5 @@ SECTIONS
333
333
* Check that sections that are copied from flash to RAM have matching
334
334
* padding, so that a single memcpy() of __data_size copies the correct bytes.
335
335
*/
336
- ASSERT( __data_size == __data_source_size,
336
+ ASSERT( @PREFIX@ __data_size == @PREFIX@ __data_source_size,
337
337
"ERROR: .data/.tdata flash size does not match RAM size");
0 commit comments