Export more symbols (#476)

* **Export more symbols:**
  * Expanded standard library support with additional math functions (trigonometric, exponential, and rounding operations), string comparison, directory operations, and locale configuration
  * Added C++ static initialization guard utilities to enhance object initialization support
This commit is contained in:
Ken Van Hoeylandt 2026-02-02 08:18:51 +01:00 committed by GitHub
parent 1f9e7f82fd
commit 1a61eac8e0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 47 additions and 9 deletions

View File

@ -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
};

View File

@ -35,24 +35,22 @@
#include <ctime>
#include <ctype.h>
#include <getopt.h>
#include <setjmp.h>
#include <sys/errno.h>
#include <sys/unistd.h>
#include <dirent.h>
#include <esp_log.h>
#include <esp_random.h>
#include <esp_sntp.h>
#include <esp_netif.h>
#include <dirent.h>
#include <sys/stat.h>
#include <time.h>
#include <fcntl.h>
#include <lwip/sockets.h>
#include <locale.h>
#include <setjmp.h>
#include <sys/errno.h>
#include <sys/stat.h>
#include <sys/unistd.h>
#include <vector>
#include <Tactility/Tactility.h>
#include <vector>
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
};