Mbedtls symbols and more (#508)

This commit is contained in:
Shadowtrance 2026-02-18 04:00:08 +10:00 committed by GitHub
parent d860ba1f34
commit f0f764baff
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 141 additions and 8 deletions

View File

@ -10,6 +10,7 @@ list(APPEND PRIV_REQUIRES_LIST
Tactility
TactilityCore
TactilityKernel
mbedtls
)
if (DEFINED ENV{ESP_IDF_VERSION})

View File

@ -0,0 +1,5 @@
#pragma once
#include <private/elf_symbol.h>
extern const esp_elfsym mbedtls_symbols[];

View File

@ -64,8 +64,8 @@ extern long __fixdfdi(double a);
// extern long long __fixtfti(long double a);
// extern long long __fixxfti(long double a);
// extern unsigned int __fixunssfsi(float a);
// extern unsigned int __fixunsdfsi(double a);
extern unsigned int __fixunssfsi(float a);
extern unsigned int __fixunsdfsi(double a);
// extern unsigned int __fixunstfsi(long double a);
// extern unsigned int __fixunsxfsi(long double a);
@ -79,8 +79,8 @@ extern unsigned long __fixunsdfdi(double a);
// extern unsigned long long __fixunstfti(long double a);
// extern unsigned long long __fixunsxfti(long double a);
// extern float __floatsisf(int i);
// extern double __floatsidf(int i);
extern float __floatsisf(int i);
extern double __floatsidf(int i);
// extern long double __floatsitf(int i);
// extern long double __floatsixf(int i);
@ -146,6 +146,12 @@ int __gtsf2(float a, float b);
int __gtdf2(double a, double b);
// int __gttf2(long double a, long double b);
// GCC integer arithmetic helpers (needed on 32-bit targets for 64-bit ops)
long long __divdi3(long long a, long long b);
long long __moddi3(long long a, long long b);
unsigned long long __udivdi3(unsigned long long a, unsigned long long b);
unsigned long long __umoddi3(unsigned long long a, unsigned long long b);
} // extern "C"
const esp_elfsym gcc_soft_float_symbols[] = {
@ -201,8 +207,8 @@ const esp_elfsym gcc_soft_float_symbols[] = {
// ESP_ELFSYM_EXPORT(__fixtfti),
// ESP_ELFSYM_EXPORT(__fixxfti),
// ESP_ELFSYM_EXPORT(__fixunssfsi),
// ESP_ELFSYM_EXPORT(__fixunsdfsi),
ESP_ELFSYM_EXPORT(__fixunssfsi),
ESP_ELFSYM_EXPORT(__fixunsdfsi),
// ESP_ELFSYM_EXPORT(__fixunstfsi),
// ESP_ELFSYM_EXPORT(__fixunsxfsi),
@ -216,8 +222,8 @@ const esp_elfsym gcc_soft_float_symbols[] = {
// ESP_ELFSYM_EXPORT(__fixunstfti),
// ESP_ELFSYM_EXPORT(__fixunsxfti),
// ESP_ELFSYM_EXPORT(__floatsisf),
// ESP_ELFSYM_EXPORT(__floatsidf),
ESP_ELFSYM_EXPORT(__floatsisf),
ESP_ELFSYM_EXPORT(__floatsidf),
// ESP_ELFSYM_EXPORT(__floatsitf),
// ESP_ELFSYM_EXPORT(__floatsixf),
@ -283,6 +289,12 @@ const esp_elfsym gcc_soft_float_symbols[] = {
ESP_ELFSYM_EXPORT(__gtdf2),
// ESP_ELFSYM_EXPORT(__gttf2),
// GCC integer arithmetic helpers
ESP_ELFSYM_EXPORT(__divdi3),
ESP_ELFSYM_EXPORT(__moddi3),
ESP_ELFSYM_EXPORT(__udivdi3),
ESP_ELFSYM_EXPORT(__umoddi3),
ESP_ELFSYM_END
};

View File

@ -0,0 +1,100 @@
#include <private/elf_symbol.h>
#include <cstddef>
#include <cstdlib>
#include <symbols/mbedtls.h>
#include <mbedtls/ctr_drbg.h>
#include <mbedtls/entropy.h>
#include <mbedtls/cipher.h>
#include <mbedtls/md.h>
#include <mbedtls/bignum.h>
#include <mbedtls/rsa.h>
#include <mbedtls/pk.h>
#include <mbedtls/ecp.h>
#include <mbedtls/ecdsa.h>
#include <mbedtls/ecdh.h>
#include <mbedtls/error.h>
const esp_elfsym mbedtls_symbols[] = {
// CTR_DRBG (random number generation)
ESP_ELFSYM_EXPORT(mbedtls_ctr_drbg_init),
ESP_ELFSYM_EXPORT(mbedtls_ctr_drbg_free),
ESP_ELFSYM_EXPORT(mbedtls_ctr_drbg_seed),
ESP_ELFSYM_EXPORT(mbedtls_ctr_drbg_random),
// Entropy
ESP_ELFSYM_EXPORT(mbedtls_entropy_init),
ESP_ELFSYM_EXPORT(mbedtls_entropy_free),
ESP_ELFSYM_EXPORT(mbedtls_entropy_func),
// Cipher
ESP_ELFSYM_EXPORT(mbedtls_cipher_init),
ESP_ELFSYM_EXPORT(mbedtls_cipher_free),
ESP_ELFSYM_EXPORT(mbedtls_cipher_setup),
ESP_ELFSYM_EXPORT(mbedtls_cipher_setkey),
ESP_ELFSYM_EXPORT(mbedtls_cipher_set_iv),
ESP_ELFSYM_EXPORT(mbedtls_cipher_reset),
ESP_ELFSYM_EXPORT(mbedtls_cipher_update),
ESP_ELFSYM_EXPORT(mbedtls_cipher_finish),
ESP_ELFSYM_EXPORT(mbedtls_cipher_get_block_size),
ESP_ELFSYM_EXPORT(mbedtls_cipher_info_from_type),
// Message digest / HMAC
ESP_ELFSYM_EXPORT(mbedtls_md),
ESP_ELFSYM_EXPORT(mbedtls_md_init),
ESP_ELFSYM_EXPORT(mbedtls_md_free),
ESP_ELFSYM_EXPORT(mbedtls_md_setup),
ESP_ELFSYM_EXPORT(mbedtls_md_starts),
ESP_ELFSYM_EXPORT(mbedtls_md_update),
ESP_ELFSYM_EXPORT(mbedtls_md_finish),
ESP_ELFSYM_EXPORT(mbedtls_md_hmac_starts),
ESP_ELFSYM_EXPORT(mbedtls_md_hmac_update),
ESP_ELFSYM_EXPORT(mbedtls_md_hmac_finish),
ESP_ELFSYM_EXPORT(mbedtls_md_info_from_type),
// Bignum (MPI)
ESP_ELFSYM_EXPORT(mbedtls_mpi_init),
ESP_ELFSYM_EXPORT(mbedtls_mpi_free),
ESP_ELFSYM_EXPORT(mbedtls_mpi_read_binary),
ESP_ELFSYM_EXPORT(mbedtls_mpi_write_binary),
ESP_ELFSYM_EXPORT(mbedtls_mpi_size),
ESP_ELFSYM_EXPORT(mbedtls_mpi_bitlen),
ESP_ELFSYM_EXPORT(mbedtls_mpi_lset),
ESP_ELFSYM_EXPORT(mbedtls_mpi_set_bit),
ESP_ELFSYM_EXPORT(mbedtls_mpi_fill_random),
ESP_ELFSYM_EXPORT(mbedtls_mpi_exp_mod),
// RSA
ESP_ELFSYM_EXPORT(mbedtls_rsa_init),
ESP_ELFSYM_EXPORT(mbedtls_rsa_free),
ESP_ELFSYM_EXPORT(mbedtls_rsa_copy),
ESP_ELFSYM_EXPORT(mbedtls_rsa_get_len),
ESP_ELFSYM_EXPORT(mbedtls_rsa_check_pubkey),
ESP_ELFSYM_EXPORT(mbedtls_rsa_check_privkey),
ESP_ELFSYM_EXPORT(mbedtls_rsa_pkcs1_sign),
ESP_ELFSYM_EXPORT(mbedtls_rsa_pkcs1_verify),
// Public key abstraction
ESP_ELFSYM_EXPORT(mbedtls_pk_init),
ESP_ELFSYM_EXPORT(mbedtls_pk_free),
ESP_ELFSYM_EXPORT(mbedtls_pk_get_type),
ESP_ELFSYM_EXPORT(mbedtls_pk_parse_key),
ESP_ELFSYM_EXPORT(mbedtls_pk_parse_keyfile),
// ECP (elliptic curves)
ESP_ELFSYM_EXPORT(mbedtls_ecp_group_load),
ESP_ELFSYM_EXPORT(mbedtls_ecp_point_init),
ESP_ELFSYM_EXPORT(mbedtls_ecp_point_free),
ESP_ELFSYM_EXPORT(mbedtls_ecp_point_read_binary),
ESP_ELFSYM_EXPORT(mbedtls_ecp_point_write_binary),
ESP_ELFSYM_EXPORT(mbedtls_ecp_check_pubkey),
ESP_ELFSYM_EXPORT(mbedtls_ecp_check_privkey),
ESP_ELFSYM_EXPORT(mbedtls_ecp_mul),
// ECDSA
ESP_ELFSYM_EXPORT(mbedtls_ecdsa_init),
ESP_ELFSYM_EXPORT(mbedtls_ecdsa_free),
ESP_ELFSYM_EXPORT(mbedtls_ecdsa_genkey),
ESP_ELFSYM_EXPORT(mbedtls_ecdsa_from_keypair),
ESP_ELFSYM_EXPORT(mbedtls_ecdsa_sign),
ESP_ELFSYM_EXPORT(mbedtls_ecdsa_verify),
// ECDH
ESP_ELFSYM_EXPORT(mbedtls_ecdh_compute_shared),
// Error strings
ESP_ELFSYM_EXPORT(mbedtls_strerror),
// delimiter
ESP_ELFSYM_END
};

View File

@ -23,6 +23,7 @@
#include "symbols/esp_http_client.h"
#include "symbols/freertos.h"
#include "symbols/gcc_soft_float.h"
#include "symbols/mbedtls.h"
#include "symbols/pthread.h"
#include "symbols/stl.h"
#include "symbols/string.h"
@ -40,8 +41,12 @@
#include <esp_netif.h>
#include <fcntl.h>
#include <lwip/sockets.h>
#include <lwip/netdb.h>
#include <lwip/inet.h>
#include <sys/select.h>
#include <locale.h>
#include <setjmp.h>
#include <strings.h>
#include <sys/errno.h>
#include <sys/stat.h>
#include <sys/unistd.h>
@ -80,10 +85,13 @@ const esp_elfsym main_symbols[] {
ESP_ELFSYM_EXPORT(close),
ESP_ELFSYM_EXPORT(rmdir),
ESP_ELFSYM_EXPORT(unlink),
// strings.h
ESP_ELFSYM_EXPORT(explicit_bzero),
// time.h
ESP_ELFSYM_EXPORT(clock_gettime),
ESP_ELFSYM_EXPORT(strftime),
ESP_ELFSYM_EXPORT(time),
ESP_ELFSYM_EXPORT(difftime),
ESP_ELFSYM_EXPORT(localtime_r),
ESP_ELFSYM_EXPORT(localtime),
// esp_sntp.h
@ -364,6 +372,12 @@ const esp_elfsym main_symbols[] {
ESP_ELFSYM_EXPORT(lwip_accept),
ESP_ELFSYM_EXPORT(lwip_getsockname),
ESP_ELFSYM_EXPORT(lwip_send),
ESP_ELFSYM_EXPORT(lwip_connect),
ESP_ELFSYM_EXPORT(lwip_select),
ESP_ELFSYM_EXPORT(lwip_gethostbyname),
ESP_ELFSYM_EXPORT(ipaddr_addr),
// POSIX socket names (VFS wrappers used when apps include <sys/socket.h>)
ESP_ELFSYM_EXPORT(select),
// sys/stat.h
ESP_ELFSYM_EXPORT(stat),
ESP_ELFSYM_EXPORT(mkdir),
@ -418,6 +432,7 @@ uintptr_t tt_symbol_resolver(const char* symbolName) {
string_symbols,
esp_event_symbols,
esp_http_client_symbols,
mbedtls_symbols,
};
for (const auto* symbols : all_symbols) {