gcc __attribute__((constructor)): Remove hacked calling, move ctor sections to flash
More hacky moving of parts of .rodata to flash, until we can move all of it. Fix for #128
This commit is contained in:
parent
2badeed523
commit
660dc6d0f4
4 changed files with 33 additions and 46 deletions
|
@ -407,6 +407,9 @@ void sdk_user_init_task(void *params) {
|
|||
vTaskDelete(NULL);
|
||||
}
|
||||
|
||||
extern void (*__init_array_start)(void);
|
||||
extern void (*__init_array_end)(void);
|
||||
|
||||
// .Lfunc009 -- .irom0.text+0x5b4
|
||||
static void user_start_phase2(void) {
|
||||
uint8_t *buf;
|
||||
|
@ -437,6 +440,12 @@ static void user_start_phase2(void) {
|
|||
uart_flush_txfifo(0);
|
||||
uart_flush_txfifo(1);
|
||||
|
||||
// Call gcc constructor functions
|
||||
void (**ctor)(void);
|
||||
for ( ctor = &__init_array_start; ctor != &__init_array_end; ++ctor) {
|
||||
(*ctor)();
|
||||
}
|
||||
|
||||
if (phy_info[0] != 5) {
|
||||
// Bad version byte. Discard what we read and use default values
|
||||
// instead.
|
||||
|
|
|
@ -17,20 +17,6 @@ void IRAM *zalloc(size_t nbytes)
|
|||
return calloc(1, nbytes);
|
||||
}
|
||||
|
||||
extern void (*__init_array_start)(void);
|
||||
extern void (*__init_array_end)(void);
|
||||
|
||||
/* Do things which should be done as part of the SDK startup code, but aren't.
|
||||
TODO: Move into app_main.c
|
||||
*/
|
||||
void sdk_compat_initialise()
|
||||
{
|
||||
/* Call C++ constructors or C functions marked with __attribute__((constructor)) */
|
||||
void (**p)(void);
|
||||
for ( p = &__init_array_start; p != &__init_array_end; ++p)
|
||||
(*p)();
|
||||
}
|
||||
|
||||
/* UART RX function from Espressif SDK internals.
|
||||
*
|
||||
* Not part of published API.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue