diff --git a/TactilityC/Source/symbols/cplusplus.cpp b/TactilityC/Source/symbols/cplusplus.cpp index 176a6dd7..2f977c59 100644 --- a/TactilityC/Source/symbols/cplusplus.cpp +++ b/TactilityC/Source/symbols/cplusplus.cpp @@ -7,12 +7,22 @@ extern "C" { extern void* _Znwj(uint32_t size); // operator new(unsigned int) extern void _ZdlPvj(void* p, uint64_t size); // operator delete(void*, unsigned int) extern void __cxa_pure_virtual(); + // cxx_guards.cpp + extern int __cxa_guard_acquire(void* pg); + extern void __cxa_guard_release(void* pg) throw(); + extern void __cxa_guard_abort(void* pg) throw(); + extern void __cxa_guard_dummy(void); } const esp_elfsym cplusplus_symbols[] = { ESP_ELFSYM_EXPORT(_Znwj), // operator new(unsigned int) ESP_ELFSYM_EXPORT(_ZdlPvj), // operator delete(void*, unsigned int) + // cxx_guards ESP_ELFSYM_EXPORT(__cxa_pure_virtual), // class-related, see https://arobenko.github.io/bare_metal_cpp/ + ESP_ELFSYM_EXPORT(__cxa_guard_acquire), + ESP_ELFSYM_EXPORT(__cxa_guard_release), + ESP_ELFSYM_EXPORT(__cxa_guard_abort), + ESP_ELFSYM_EXPORT(__cxa_guard_dummy), // delimiter ESP_ELFSYM_END }; diff --git a/TactilityC/Source/tt_init.cpp b/TactilityC/Source/tt_init.cpp index 872bae2a..0e27a84c 100644 --- a/TactilityC/Source/tt_init.cpp +++ b/TactilityC/Source/tt_init.cpp @@ -35,24 +35,22 @@ #include #include #include -#include -#include -#include - +#include #include #include #include #include -#include -#include -#include #include #include +#include +#include +#include +#include +#include +#include #include -#include - bool module_parent_resolve_symbol(ModuleParent* pParent, const char* name, uintptr_t* pInt); extern "C" { @@ -90,8 +88,30 @@ const esp_elfsym main_symbols[] { // esp_sntp.h ESP_ELFSYM_EXPORT(sntp_get_sync_status), // math.h + ESP_ELFSYM_EXPORT(atan), ESP_ELFSYM_EXPORT(cos), ESP_ELFSYM_EXPORT(sin), + ESP_ELFSYM_EXPORT(tan), + ESP_ELFSYM_EXPORT(tanh), + ESP_ELFSYM_EXPORT(frexp), + ESP_ELFSYM_EXPORT(modf), + ESP_ELFSYM_EXPORT(ceil), + ESP_ELFSYM_EXPORT(fabs), + ESP_ELFSYM_EXPORT(floor), +#ifndef _REENT_ONLY + ESP_ELFSYM_EXPORT(acos), + ESP_ELFSYM_EXPORT(asin), + ESP_ELFSYM_EXPORT(atan2), + ESP_ELFSYM_EXPORT(cos), + ESP_ELFSYM_EXPORT(sinh), + ESP_ELFSYM_EXPORT(exp), + ESP_ELFSYM_EXPORT(ldexp), + ESP_ELFSYM_EXPORT(log), + ESP_ELFSYM_EXPORT(log10), + ESP_ELFSYM_EXPORT(pow), + ESP_ELFSYM_EXPORT(sqrt), + ESP_ELFSYM_EXPORT(fmod), +#endif // sys/errno.h ESP_ELFSYM_EXPORT(__errno), // freertos_tasks_c_additions.h @@ -114,6 +134,7 @@ const esp_elfsym main_symbols[] { // cassert ESP_ELFSYM_EXPORT(__assert_func), // cstdio + ESP_ELFSYM_EXPORT(abort), ESP_ELFSYM_EXPORT(fclose), ESP_ELFSYM_EXPORT(feof), ESP_ELFSYM_EXPORT(ferror), @@ -122,6 +143,7 @@ const esp_elfsym main_symbols[] { ESP_ELFSYM_EXPORT(fgetpos), ESP_ELFSYM_EXPORT(fgets), ESP_ELFSYM_EXPORT(fopen), + ESP_ELFSYM_EXPORT(freopen), ESP_ELFSYM_EXPORT(fputc), ESP_ELFSYM_EXPORT(fputs), ESP_ELFSYM_EXPORT(fprintf), @@ -155,11 +177,15 @@ const esp_elfsym main_symbols[] { ESP_ELFSYM_EXPORT(strtol), ESP_ELFSYM_EXPORT(strcspn), ESP_ELFSYM_EXPORT(strncat), + ESP_ELFSYM_EXPORT(strpbrk), + ESP_ELFSYM_EXPORT(strspn), + ESP_ELFSYM_EXPORT(strcoll), ESP_ELFSYM_EXPORT(memset), ESP_ELFSYM_EXPORT(memcpy), ESP_ELFSYM_EXPORT(memcmp), ESP_ELFSYM_EXPORT(memchr), ESP_ELFSYM_EXPORT(memmove), + // ctype ESP_ELFSYM_EXPORT(isalnum), ESP_ELFSYM_EXPORT(isalpha), @@ -312,6 +338,8 @@ const esp_elfsym main_symbols[] { // esp_netif.h ESP_ELFSYM_EXPORT(esp_netif_get_ip_info), ESP_ELFSYM_EXPORT(esp_netif_get_handle_from_ifkey), + // Locale + ESP_ELFSYM_EXPORT(localeconv), // delimiter ESP_ELFSYM_END };