File tree 2 files changed +11
-2
lines changed
2 files changed +11
-2
lines changed Original file line number Diff line number Diff line change @@ -94,6 +94,10 @@ extern volatile int port_xSchedulerRunning[2];
94
94
95
95
static const char * TAG = "cpu_start" ;
96
96
97
+ struct object { long placeholder [ 10 ]; };
98
+ void __register_frame_info (const void * begin , struct object * ob );
99
+ extern char __eh_frame [];
100
+
97
101
/*
98
102
* We arrive here after the bootloader finished loading the program from flash. The hardware is mostly uninitialized,
99
103
* and the app CPU is in reset. We do have a stack, so we can do the initialization in C.
@@ -334,6 +338,9 @@ void start_cpu1_default(void)
334
338
335
339
static void do_global_ctors (void )
336
340
{
341
+ static struct object ob ;
342
+ __register_frame_info ( __eh_frame , & ob );
343
+
337
344
void (* * p )(void );
338
345
for (p = & __init_array_end - 1 ; p >= & __init_array_start ; -- p ) {
339
346
(* p )();
Original file line number Diff line number Diff line change @@ -154,11 +154,13 @@ SECTIONS
154
154
*(.rodata1)
155
155
__XT_EXCEPTION_TABLE_ = ABSOLUTE (.);
156
156
*(.xt_except_table)
157
- *(.gcc_except_table)
157
+ *(.gcc_except_table .gcc_except_table.* )
158
158
*(.gnu.linkonce.e.*)
159
159
*(.gnu.version_r)
160
- *(.eh_frame)
161
160
. = (. + 3) & ~ 3;
161
+ __eh_frame = ABSOLUTE (.);
162
+ KEEP(*(.eh_frame))
163
+ . = (. + 7) & ~ 3;
162
164
/* C++ constructor and destructor tables, properly ordered : */
163
165
__init_array_start = ABSOLUTE (.);
164
166
KEEP (*crtbegin.o (.ctors))
You can’t perform that action at this time.
0 commit comments