Remove TactilityC and Firmware subprojects (#638)
- Removed TactilityC, moved its symbols to existing modules and several new ones (pthread-module, c-symbols-module, cpp-symbols-module, posix-symbols-module, freertos-module). - Removed Firmware subproject and moved main() into Tactility subproject. - Strengthened application archive, path, version, stack-size, and device validation. - Moved symbol resolution for elf_loader to app-esp32-module. - Improved `struct Module` declarations and made module and symbol definitions in modules more consistent. - Removed old http download code from Tactility subproject. - Rename app-module's source files for consistency. - Add missing pthread symbols. - Kernel module symbols are now resolvable on all platforms.
This commit is contained in:
committed by
GitHub
parent
d3556fb536
commit
19b11eb9a8
@@ -0,0 +1,178 @@
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
#include <c_symbols/module.h>
|
||||
|
||||
#include <cmath>
|
||||
#include <cstddef>
|
||||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include <ctime>
|
||||
#include <ctype.h>
|
||||
#include <locale.h>
|
||||
|
||||
extern "C" {
|
||||
|
||||
static const ModuleSymbol SYMBOLS[] = {
|
||||
// stdlib.h
|
||||
DEFINE_MODULE_SYMBOL(malloc),
|
||||
DEFINE_MODULE_SYMBOL(calloc),
|
||||
DEFINE_MODULE_SYMBOL(realloc),
|
||||
DEFINE_MODULE_SYMBOL(free),
|
||||
DEFINE_MODULE_SYMBOL(rand),
|
||||
DEFINE_MODULE_SYMBOL(srand),
|
||||
DEFINE_MODULE_SYMBOL(atof),
|
||||
DEFINE_MODULE_SYMBOL(atoi),
|
||||
DEFINE_MODULE_SYMBOL(atol),
|
||||
DEFINE_MODULE_SYMBOL(system),
|
||||
DEFINE_MODULE_SYMBOL(getenv),
|
||||
DEFINE_MODULE_SYMBOL(qsort),
|
||||
// time.h
|
||||
DEFINE_MODULE_SYMBOL(strftime),
|
||||
DEFINE_MODULE_SYMBOL(time),
|
||||
DEFINE_MODULE_SYMBOL(difftime),
|
||||
DEFINE_MODULE_SYMBOL(localtime),
|
||||
DEFINE_MODULE_SYMBOL(mktime),
|
||||
// math.h
|
||||
DEFINE_MODULE_SYMBOL(acoshf),
|
||||
DEFINE_MODULE_SYMBOL(acosf),
|
||||
DEFINE_MODULE_SYMBOL(asinhf),
|
||||
DEFINE_MODULE_SYMBOL(asinf),
|
||||
DEFINE_MODULE_SYMBOL(atanhf),
|
||||
DEFINE_MODULE_SYMBOL(atanf),
|
||||
DEFINE_MODULE_SYMBOL(atan2f),
|
||||
DEFINE_MODULE_SYMBOL(coshf),
|
||||
DEFINE_MODULE_SYMBOL(cosf),
|
||||
DEFINE_MODULE_SYMBOL(sinhf),
|
||||
DEFINE_MODULE_SYMBOL(sinf),
|
||||
DEFINE_MODULE_SYMBOL(tanhf),
|
||||
DEFINE_MODULE_SYMBOL(tanf),
|
||||
DEFINE_MODULE_SYMBOL(expf),
|
||||
DEFINE_MODULE_SYMBOL(ldexpf),
|
||||
DEFINE_MODULE_SYMBOL(logf),
|
||||
DEFINE_MODULE_SYMBOL(log10f),
|
||||
DEFINE_MODULE_SYMBOL(powf),
|
||||
DEFINE_MODULE_SYMBOL(sqrtf),
|
||||
DEFINE_MODULE_SYMBOL(fmodf),
|
||||
DEFINE_MODULE_SYMBOL(frexpf),
|
||||
DEFINE_MODULE_SYMBOL(modff),
|
||||
DEFINE_MODULE_SYMBOL(ceilf),
|
||||
DEFINE_MODULE_SYMBOL(fabsf),
|
||||
DEFINE_MODULE_SYMBOL(floorf),
|
||||
DEFINE_MODULE_SYMBOL(fmaxf),
|
||||
DEFINE_MODULE_SYMBOL(fminf),
|
||||
DEFINE_MODULE_SYMBOL(roundf),
|
||||
// Explicit signatures: libstdc++/libc++'s <cmath> float/double/long double overloads make a
|
||||
// bare `&acos` etc. ambiguous. esp-idf newlib's plain, unoverloaded functions match these signatures
|
||||
// exactly, so the cast is a no-op there - one list works for all platforms:
|
||||
DEFINE_MODULE_SYMBOL_SIGNATURE(acos, double (*)(double)),
|
||||
DEFINE_MODULE_SYMBOL_SIGNATURE(asin, double (*)(double)),
|
||||
DEFINE_MODULE_SYMBOL_SIGNATURE(atan, double (*)(double)),
|
||||
DEFINE_MODULE_SYMBOL_SIGNATURE(atan2, double (*)(double, double)),
|
||||
DEFINE_MODULE_SYMBOL_SIGNATURE(cos, double (*)(double)),
|
||||
DEFINE_MODULE_SYMBOL_SIGNATURE(sin, double (*)(double)),
|
||||
DEFINE_MODULE_SYMBOL_SIGNATURE(sinh, double (*)(double)),
|
||||
DEFINE_MODULE_SYMBOL_SIGNATURE(tan, double (*)(double)),
|
||||
DEFINE_MODULE_SYMBOL_SIGNATURE(exp, double (*)(double)),
|
||||
DEFINE_MODULE_SYMBOL_SIGNATURE(ldexp, double (*)(double, int)),
|
||||
DEFINE_MODULE_SYMBOL_SIGNATURE(log, double (*)(double)),
|
||||
DEFINE_MODULE_SYMBOL_SIGNATURE(log10, double (*)(double)),
|
||||
DEFINE_MODULE_SYMBOL_SIGNATURE(pow, double (*)(double, double)),
|
||||
DEFINE_MODULE_SYMBOL_SIGNATURE(sqrt, double (*)(double)),
|
||||
DEFINE_MODULE_SYMBOL_SIGNATURE(fmod, double (*)(double, double)),
|
||||
DEFINE_MODULE_SYMBOL_SIGNATURE(frexp, double (*)(double, int*)),
|
||||
DEFINE_MODULE_SYMBOL_SIGNATURE(modf, double (*)(double, double*)),
|
||||
DEFINE_MODULE_SYMBOL_SIGNATURE(ceil, double (*)(double)),
|
||||
DEFINE_MODULE_SYMBOL_SIGNATURE(fabs, double (*)(double)),
|
||||
DEFINE_MODULE_SYMBOL_SIGNATURE(floor, double (*)(double)),
|
||||
DEFINE_MODULE_SYMBOL_SIGNATURE(fmax, double (*)(double, double)),
|
||||
DEFINE_MODULE_SYMBOL_SIGNATURE(fmin, double (*)(double, double)),
|
||||
DEFINE_MODULE_SYMBOL_SIGNATURE(round, double (*)(double)),
|
||||
// cassert / cstdio
|
||||
DEFINE_MODULE_SYMBOL(abort),
|
||||
DEFINE_MODULE_SYMBOL(fclose),
|
||||
DEFINE_MODULE_SYMBOL(feof),
|
||||
DEFINE_MODULE_SYMBOL(ferror),
|
||||
DEFINE_MODULE_SYMBOL(fflush),
|
||||
DEFINE_MODULE_SYMBOL(fgetc),
|
||||
DEFINE_MODULE_SYMBOL(fgetpos),
|
||||
DEFINE_MODULE_SYMBOL(fgets),
|
||||
DEFINE_MODULE_SYMBOL(fopen),
|
||||
DEFINE_MODULE_SYMBOL(freopen),
|
||||
DEFINE_MODULE_SYMBOL(setvbuf),
|
||||
DEFINE_MODULE_SYMBOL(fputc),
|
||||
DEFINE_MODULE_SYMBOL(fputs),
|
||||
DEFINE_MODULE_SYMBOL(fprintf),
|
||||
DEFINE_MODULE_SYMBOL(fread),
|
||||
DEFINE_MODULE_SYMBOL(fseek),
|
||||
DEFINE_MODULE_SYMBOL(fsetpos),
|
||||
DEFINE_MODULE_SYMBOL(fscanf),
|
||||
DEFINE_MODULE_SYMBOL(ftell),
|
||||
DEFINE_MODULE_SYMBOL(fwrite),
|
||||
DEFINE_MODULE_SYMBOL(getc),
|
||||
DEFINE_MODULE_SYMBOL(putc),
|
||||
DEFINE_MODULE_SYMBOL(putchar),
|
||||
DEFINE_MODULE_SYMBOL(puts),
|
||||
DEFINE_MODULE_SYMBOL(printf),
|
||||
DEFINE_MODULE_SYMBOL(sscanf),
|
||||
DEFINE_MODULE_SYMBOL(snprintf),
|
||||
DEFINE_MODULE_SYMBOL(sprintf),
|
||||
DEFINE_MODULE_SYMBOL(vsprintf),
|
||||
DEFINE_MODULE_SYMBOL(vsnprintf),
|
||||
DEFINE_MODULE_SYMBOL(vfprintf),
|
||||
DEFINE_MODULE_SYMBOL(rename),
|
||||
DEFINE_MODULE_SYMBOL(rewind),
|
||||
DEFINE_MODULE_SYMBOL(remove),
|
||||
// cstring
|
||||
DEFINE_MODULE_SYMBOL(strlen),
|
||||
DEFINE_MODULE_SYMBOL(strcmp),
|
||||
DEFINE_MODULE_SYMBOL(strncmp),
|
||||
DEFINE_MODULE_SYMBOL(strncpy),
|
||||
DEFINE_MODULE_SYMBOL(strcpy),
|
||||
DEFINE_MODULE_SYMBOL(strcat),
|
||||
// Explicit signatures due to libstdc++'s <cstring> C++ overloads on some platforms
|
||||
DEFINE_MODULE_SYMBOL_SIGNATURE(strchr, const char* (*)(const char*, int)),
|
||||
DEFINE_MODULE_SYMBOL_SIGNATURE(strstr, const char* (*)(const char*, const char*)),
|
||||
DEFINE_MODULE_SYMBOL_SIGNATURE(strrchr, const char* (*)(const char*, int)),
|
||||
DEFINE_MODULE_SYMBOL_SIGNATURE(strpbrk, const char* (*)(const char*, const char*)),
|
||||
DEFINE_MODULE_SYMBOL_SIGNATURE(memchr, const void* (*)(const void*, int, size_t)),
|
||||
DEFINE_MODULE_SYMBOL(strerror),
|
||||
DEFINE_MODULE_SYMBOL(strtod),
|
||||
DEFINE_MODULE_SYMBOL(strtol),
|
||||
DEFINE_MODULE_SYMBOL(strtoul),
|
||||
DEFINE_MODULE_SYMBOL(strcspn),
|
||||
DEFINE_MODULE_SYMBOL(strncat),
|
||||
DEFINE_MODULE_SYMBOL(strspn),
|
||||
DEFINE_MODULE_SYMBOL(strcoll),
|
||||
DEFINE_MODULE_SYMBOL(memset),
|
||||
DEFINE_MODULE_SYMBOL(memcpy),
|
||||
DEFINE_MODULE_SYMBOL(memcmp),
|
||||
DEFINE_MODULE_SYMBOL(memmove),
|
||||
// ctype.h
|
||||
DEFINE_MODULE_SYMBOL(isalnum),
|
||||
DEFINE_MODULE_SYMBOL(isalpha),
|
||||
DEFINE_MODULE_SYMBOL(iscntrl),
|
||||
DEFINE_MODULE_SYMBOL(isdigit),
|
||||
DEFINE_MODULE_SYMBOL(isgraph),
|
||||
DEFINE_MODULE_SYMBOL(islower),
|
||||
DEFINE_MODULE_SYMBOL(isprint),
|
||||
DEFINE_MODULE_SYMBOL(ispunct),
|
||||
DEFINE_MODULE_SYMBOL(isspace),
|
||||
DEFINE_MODULE_SYMBOL(isupper),
|
||||
DEFINE_MODULE_SYMBOL(isxdigit),
|
||||
DEFINE_MODULE_SYMBOL(tolower),
|
||||
DEFINE_MODULE_SYMBOL(toupper),
|
||||
// locale.h
|
||||
DEFINE_MODULE_SYMBOL(localeconv),
|
||||
MODULE_SYMBOL_TERMINATOR
|
||||
};
|
||||
|
||||
Module c_symbols_module = {
|
||||
.name = "c-symbols",
|
||||
.start = nullptr,
|
||||
.stop = nullptr,
|
||||
.drivers = nullptr,
|
||||
.symbols = SYMBOLS,
|
||||
.internal = nullptr,
|
||||
};
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user