Skip to content

Commit f48bb03

Browse files
committed
[zep noup] platform: Add picolibc init and heap symbols to linker scripts
Picolibc uses different names for the list of constructors and heap limits. Add values for __bothinit_array_start, __bothinit_array_end, __heap_start and __heap_end to every linker script. If not using picolibc, these will not have any effect. Signed-off-by: Keith Packard <keithp@keithp.com>
1 parent 8272622 commit f48bb03

File tree

31 files changed

+130
-0
lines changed

31 files changed

+130
-0
lines changed

platform/ext/common/gcc/tfm_common_bl2.ld

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ SECTIONS
4747
. = ALIGN(4);
4848
/* preinit data */
4949
PROVIDE_HIDDEN (__preinit_array_start = .);
50+
PROVIDE(__bothinit_array_start = __preinit_array_start);
5051
KEEP(*(.preinit_array))
5152
PROVIDE_HIDDEN (__preinit_array_end = .);
5253

@@ -56,6 +57,7 @@ SECTIONS
5657
KEEP(*(SORT(.init_array.*)))
5758
KEEP(*(.init_array))
5859
PROVIDE_HIDDEN (__init_array_end = .);
60+
PROVIDE(__bothinit_array_end = __init_array_end);
5961

6062
. = ALIGN(4);
6163
/* finit data */
@@ -193,8 +195,10 @@ SECTIONS
193195
__end__ = .;
194196
PROVIDE(end = .);
195197
__HeapBase = .;
198+
PROVIDE(__heap_start = __HeapBase);
196199
. += __heap_size__;
197200
__HeapLimit = .;
201+
PROVIDE(__heap_end = __HeapLimit);
198202
__heap_limit = .; /* Add for _sbrk */
199203
} > RAM
200204
Image$$ARM_LIB_HEAP$$ZI$$Limit = ADDR(.heap) + SIZEOF(.heap);

platform/ext/common/gcc/tfm_common_ns.ld

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ SECTIONS
4747
. = ALIGN(4);
4848
/* preinit data */
4949
PROVIDE_HIDDEN (__preinit_array_start = .);
50+
PROVIDE(__bothinit_array_start = __preinit_array_start);
5051
KEEP(*(.preinit_array))
5152
PROVIDE_HIDDEN (__preinit_array_end = .);
5253

@@ -56,6 +57,7 @@ SECTIONS
5657
KEEP(*(SORT(.init_array.*)))
5758
KEEP(*(.init_array))
5859
PROVIDE_HIDDEN (__init_array_end = .);
60+
PROVIDE(__bothinit_array_end = __init_array_end);
5961

6062
. = ALIGN(4);
6163
/* finit data */
@@ -158,8 +160,10 @@ SECTIONS
158160
__end__ = .;
159161
PROVIDE(end = .);
160162
__HeapBase = .;
163+
PROVIDE(__heap_start = __HeapBase);
161164
. += __heap_size__;
162165
__HeapLimit = .;
166+
PROVIDE(__heap_end = __HeapLimit);
163167
__heap_limit = .; /* Add for _sbrk */
164168
} > RAM
165169

platform/ext/common/gcc/tfm_common_s.ld.template

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,7 @@ SECTIONS
220220
. = ALIGN(4);
221221
/* preinit data */
222222
PROVIDE_HIDDEN (__preinit_array_start = .);
223+
PROVIDE(__bothinit_array_start = __preinit_array_start);
223224
KEEP(*(.preinit_array))
224225
PROVIDE_HIDDEN (__preinit_array_end = .);
225226

@@ -229,6 +230,7 @@ SECTIONS
229230
KEEP(*(SORT(.init_array.*)))
230231
KEEP(*(.init_array))
231232
PROVIDE_HIDDEN (__init_array_end = .);
233+
PROVIDE(__bothinit_array_end = __init_array_end);
232234

233235
. = ALIGN(4);
234236
/* finit data */
@@ -389,8 +391,10 @@ SECTIONS
389391
__end__ = .;
390392
PROVIDE(end = .);
391393
__HeapBase = .;
394+
PROVIDE(__heap_start = __HeapBase);
392395
. += __heap_size__;
393396
__HeapLimit = .;
397+
PROVIDE(__heap_end = __HeapLimit);
394398
__heap_limit = .; /* Add for _sbrk */
395399
} > RAM
396400
#endif

platform/ext/common/gcc/tfm_isolation_s.ld.template

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,7 @@ SECTIONS
210210
. = ALIGN(4);
211211
/* preinit data */
212212
PROVIDE_HIDDEN (__preinit_array_start = .);
213+
PROVIDE(__bothinit_array_start = __preinit_array_start);
213214
KEEP(*(.preinit_array))
214215
PROVIDE_HIDDEN (__preinit_array_end = .);
215216

@@ -219,6 +220,7 @@ SECTIONS
219220
KEEP(*(SORT(.init_array.*)))
220221
KEEP(*(.init_array))
221222
PROVIDE_HIDDEN (__init_array_end = .);
223+
PROVIDE(__bothinit_array_end = __init_array_end);
222224

223225
. = ALIGN(4);
224226
/* finit data */
@@ -492,8 +494,10 @@ SECTIONS
492494
__end__ = .;
493495
PROVIDE(end = .);
494496
__HeapBase = .;
497+
PROVIDE(__heap_start = __HeapBase);
495498
. += __heap_size__;
496499
__HeapLimit = .;
500+
PROVIDE(__heap_end = __HeapLimit);
497501
__heap_limit = .; /* Add for _sbrk */
498502
} > RAM
499503
#endif

platform/ext/common/llvm/tfm_common_ns.ldc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ SECTIONS
4242
. = ALIGN(4);
4343
/* preinit data */
4444
PROVIDE_HIDDEN (__preinit_array_start = .);
45+
PROVIDE(__bothinit_array_start = __preinit_array_start);
4546
KEEP(*(.preinit_array))
4647
PROVIDE_HIDDEN (__preinit_array_end = .);
4748

@@ -51,6 +52,7 @@ SECTIONS
5152
KEEP(*(SORT(.init_array.*)))
5253
KEEP(*(.init_array))
5354
PROVIDE_HIDDEN (__init_array_end = .);
55+
PROVIDE(__bothinit_array_end = __init_array_end);
5456

5557
. = ALIGN(4);
5658
/* finit data */

platform/ext/common/llvm/tfm_isolation_s.ld.template

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,7 @@ SECTIONS
192192
{
193193
/* preinit data */
194194
PROVIDE_HIDDEN (__preinit_array_start = .);
195+
PROVIDE(__bothinit_array_start = __preinit_array_start);
195196
KEEP(*(.preinit_array))
196197
PROVIDE_HIDDEN (__preinit_array_end = .);
197198

@@ -201,6 +202,7 @@ SECTIONS
201202
KEEP(*(SORT(.init_array.*)))
202203
KEEP(*(.init_array))
203204
PROVIDE_HIDDEN (__init_array_end = .);
205+
PROVIDE(__bothinit_array_end = __init_array_end);
204206

205207
. = ALIGN(4);
206208
/* finit data */

platform/ext/target/adi/max32657/device/gcc/max32657_sla.ld

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ SECTIONS
5050
. = ALIGN(4);
5151
/* preinit data */
5252
PROVIDE_HIDDEN (__preinit_array_start = .);
53+
PROVIDE(__bothinit_array_start = __preinit_array_start);
5354
KEEP(*(.preinit_array))
5455
PROVIDE_HIDDEN (__preinit_array_end = .);
5556

@@ -59,6 +60,7 @@ SECTIONS
5960
KEEP(*(SORT(.init_array.*)))
6061
KEEP(*(.init_array))
6162
PROVIDE_HIDDEN (__init_array_end = .);
63+
PROVIDE(__bothinit_array_end = __init_array_end);
6264

6365
. = ALIGN(4);
6466
/* finit data */
@@ -196,8 +198,10 @@ SECTIONS
196198
__end__ = .;
197199
PROVIDE(end = .);
198200
__HeapBase = .;
201+
PROVIDE(__heap_start = __HeapBase);
199202
. += __heap_size__;
200203
__HeapLimit = .;
204+
PROVIDE(__heap_end = __HeapLimit);
201205
__heap_limit = .; /* Add for _sbrk */
202206
} > RAM
203207
Image$$ARM_LIB_HEAP$$ZI$$Limit = ADDR(.heap) + SIZEOF(.heap);

platform/ext/target/arm/corstone1000/Device/Source/gcc/corstone1000_bl1_1.ld

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ SECTIONS
4747
. = ALIGN(4);
4848
/* preinit data */
4949
PROVIDE_HIDDEN (__preinit_array_start = .);
50+
PROVIDE(__bothinit_array_start = __preinit_array_start);
5051
KEEP(*(.preinit_array))
5152
PROVIDE_HIDDEN (__preinit_array_end = .);
5253

@@ -56,6 +57,7 @@ SECTIONS
5657
KEEP(*(SORT(.init_array.*)))
5758
KEEP(*(.init_array))
5859
PROVIDE_HIDDEN (__init_array_end = .);
60+
PROVIDE(__bothinit_array_end = __init_array_end);
5961

6062
. = ALIGN(4);
6163
/* finit data */
@@ -172,8 +174,10 @@ SECTIONS
172174
__end__ = .;
173175
PROVIDE(end = .);
174176
__HeapBase = .;
177+
PROVIDE(__heap_start = __HeapBase);
175178
. += __heap_size__;
176179
__HeapLimit = .;
180+
PROVIDE(__heap_end = __HeapLimit);
177181
__heap_limit = .; /* Add for _sbrk */
178182
} > RAM
179183
Image$$ARM_LIB_HEAP$$ZI$$Limit = ADDR(.heap) + SIZEOF(.heap);

platform/ext/target/arm/corstone1000/Device/Source/gcc/corstone1000_bl1_2.ld

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ SECTIONS
4747
. = ALIGN(4);
4848
/* preinit data */
4949
PROVIDE_HIDDEN (__preinit_array_start = .);
50+
PROVIDE(__bothinit_array_start = __preinit_array_start);
5051
KEEP(*(.preinit_array))
5152
PROVIDE_HIDDEN (__preinit_array_end = .);
5253

@@ -56,6 +57,7 @@ SECTIONS
5657
KEEP(*(SORT(.init_array.*)))
5758
KEEP(*(.init_array))
5859
PROVIDE_HIDDEN (__init_array_end = .);
60+
PROVIDE(__bothinit_array_end = __init_array_end);
5961

6062
. = ALIGN(4);
6163
/* finit data */
@@ -176,8 +178,10 @@ SECTIONS
176178
__end__ = .;
177179
PROVIDE(end = .);
178180
__HeapBase = .;
181+
PROVIDE(__heap_start = __HeapBase);
179182
. += __heap_size__;
180183
__HeapLimit = .;
184+
PROVIDE(__heap_end = __HeapLimit);
181185
__heap_limit = .; /* Add for _sbrk */
182186
} > RAM
183187
Image$$ARM_LIB_HEAP$$ZI$$Limit = ADDR(.heap) + SIZEOF(.heap);

platform/ext/target/arm/mps4/common/device/source/gcc/mps4_corstone3xx_bl1_1.ld

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ SECTIONS
5050
. = ALIGN(4);
5151
/* preinit data */
5252
PROVIDE_HIDDEN (__preinit_array_start = .);
53+
PROVIDE(__bothinit_array_start = __preinit_array_start);
5354
KEEP(*(.preinit_array))
5455
PROVIDE_HIDDEN (__preinit_array_end = .);
5556

@@ -59,6 +60,7 @@ SECTIONS
5960
KEEP(*(SORT(.init_array.*)))
6061
KEEP(*(.init_array))
6162
PROVIDE_HIDDEN (__init_array_end = .);
63+
PROVIDE(__bothinit_array_end = __init_array_end);
6264

6365
. = ALIGN(4);
6466
/* finit data */
@@ -191,8 +193,10 @@ SECTIONS
191193
__end__ = .;
192194
PROVIDE(end = .);
193195
__HeapBase = .;
196+
PROVIDE(__heap_start = __HeapBase);
194197
. += __heap_size__;
195198
__HeapLimit = .;
199+
PROVIDE(__heap_end = __HeapLimit);
196200
__heap_limit = .; /* Add for _sbrk */
197201
} > RAM
198202
Image$$ARM_LIB_HEAP$$ZI$$Limit = ADDR(.heap) + SIZEOF(.heap);

0 commit comments

Comments
 (0)