From ef94f0cf60f95e0d73ee8050ed77bde3210ff0a4 Mon Sep 17 00:00:00 2001 From: d0p1 Date: Tue, 11 Feb 2025 20:26:13 +0100 Subject: [PATCH] Remove support for threaded use of libtcc.a, It's out of scope --- configure.ac | 8 +++---- libtcc/include/tcc.h | 50 -------------------------------------------- libtcc/libtcc.c | 3 --- libtcc/memory.c | 17 --------------- 4 files changed, 4 insertions(+), 74 deletions(-) diff --git a/configure.ac b/configure.ac index ec2f90c7..2c8d7a78 100644 --- a/configure.ac +++ b/configure.ac @@ -43,24 +43,24 @@ AC_ARG_ENABLE([asm_debug], [AS_HELP_STRING([--enable-asm-debug], [enable asm debug])]) AS_IF([test "x$enable_asm_debug" = "xyes"], - [AC_DEFINE([ASM_DEBUG])]) + [AC_DEFINE([ASM_DEBUG], [1], [enable asm debug])]) AC_ARG_ENABLE([inc_debug], [AS_HELP_STRING([--enable-inc-debug], [enable include file debug])]) AS_IF([test "x$enable_inc_debug" = "xyes"], - [AC_DEFINE([INC_DEBUG])]) + [AC_DEFINE([INC_DEBUG], [1], [enable include file debug])]) AC_ARG_ENABLE([pp_debug], [AS_HELP_STRING([--enable-pp-debug], [enable preprocessor debug])]) AS_IF([test "x$enable_pp_debug" = "xyes"], - [AC_DEFINE([PP_DEBUG])]) + [AC_DEFINE([PP_DEBUG], [1], [enable preprocessor debug])]) AC_ARG_ENABLE([parser_debug], [AS_HELP_STRING([--enable-parser-debug], [enable parser debug])]) AS_IF([test "x$enable_parser_debug" = "xyes"], - [AC_DEFINE([PARSE_DEBUG])]) + [AC_DEFINE([PARSE_DEBUG], [1], [enable parser debug])]) AC_OUTPUT diff --git a/libtcc/include/tcc.h b/libtcc/include/tcc.h index b331b919..60545069 100644 --- a/libtcc/include/tcc.h +++ b/libtcc/include/tcc.h @@ -87,11 +87,6 @@ extern long double strtold (const char *__nptr, char **__endptr); # define CONFIG_TCC_PIC 1 #endif -/* support using libtcc from threads */ -#ifndef CONFIG_TCC_SEMLOCK -# define CONFIG_TCC_SEMLOCK 1 -#endif - /* ------------ path configuration ------------ */ #ifndef CONFIG_SYSROOT @@ -1152,51 +1147,6 @@ void asm_clobber(uint8_t *clobber_regs, const char *str); /* ------------ tccdbg.c ------------ */ #define eh_frame_hdr_section s1->eh_frame_hdr_section -/********************************************************/ -#if CONFIG_TCC_SEMLOCK -#if defined _WIN32 -typedef struct { int init; CRITICAL_SECTION cs; } TCCSem; -static inline void wait_sem(TCCSem *p) { - if (!p->init) - InitializeCriticalSection(&p->cs), p->init = 1; - EnterCriticalSection(&p->cs); -} -static inline void post_sem(TCCSem *p) { - LeaveCriticalSection(&p->cs); -} -#elif defined __APPLE__ -#include -typedef struct { int init; dispatch_semaphore_t sem; } TCCSem; -static inline void wait_sem(TCCSem *p) { - if (!p->init) - p->sem = dispatch_semaphore_create(1), p->init = 1; - dispatch_semaphore_wait(p->sem, DISPATCH_TIME_FOREVER); -} -static inline void post_sem(TCCSem *p) { - dispatch_semaphore_signal(p->sem); -} -#else -#include -#include -typedef struct { int init; sem_t sem; } TCCSem; -static inline void wait_sem(TCCSem *p) { - if (!p->init) - sem_init(&p->sem, 0, 1), p->init = 1; - while (sem_wait(&p->sem) < 0 && errno == EINTR); -} -static inline void post_sem(TCCSem *p) { - sem_post(&p->sem); -} -#endif -#define TCC_SEM(s) TCCSem s -#define WAIT_SEM wait_sem -#define POST_SEM post_sem -#else -#define TCC_SEM(s) -#define WAIT_SEM(p) -#define POST_SEM(p) -#endif - #define common_section TCC_STATE_VAR(common_section) #define bounds_section TCC_STATE_VAR(bounds_section) #define lbounds_section TCC_STATE_VAR(lbounds_section) diff --git a/libtcc/libtcc.c b/libtcc/libtcc.c index d3193255..d135b5d5 100644 --- a/libtcc/libtcc.c +++ b/libtcc/libtcc.c @@ -33,7 +33,6 @@ /* XXX: get rid of this ASAP (or maybe not) */ struct TCCState *tcc_state; -TCC_SEM(static tcc_compile_sem); /* an array of pointers to memory to be free'd after errors */ void** stk_data; int nb_stk_data; @@ -74,7 +73,6 @@ PUB_FUNC void tcc_enter_state(TCCState *s1) { if (s1->error_set_jmp_enabled) return; - WAIT_SEM(&tcc_compile_sem); tcc_state = s1; } @@ -83,7 +81,6 @@ PUB_FUNC void tcc_exit_state(TCCState *s1) if (s1->error_set_jmp_enabled) return; tcc_state = NULL; - POST_SEM(&tcc_compile_sem); } char *tcc_load_text(int fd) diff --git a/libtcc/memory.c b/libtcc/memory.c index 9df5351d..722ca64c 100644 --- a/libtcc/memory.c +++ b/libtcc/memory.c @@ -124,7 +124,6 @@ typedef struct MemoryDebugHeader { __attribute__((aligned(16))) uint8_t magic3[4]; } MemoryDebugHeader; -TCC_SEM(static mem_sem); static MemoryDebugHeader *mem_debug_chain; static size_t mem_cur_size; size_t mem_max_size; @@ -165,8 +164,6 @@ tcc_free_debug(void *ptr) header = malloc_check(ptr, "tcc_free"); - WAIT_SEM(&mem_sem); - mem_cur_size -= header->size; header->size = (size_t)-1; if (header->next) @@ -182,8 +179,6 @@ tcc_free_debug(void *ptr) mem_debug_chain = header->next; } - POST_SEM(&mem_sem); - tcc_free(header); } @@ -207,8 +202,6 @@ tcc_malloc_debug(size_t size, const char *file, int line) strncpy(header->filename, file + (ofs > 0 ? ofs : 0), MEMORY_DEBUG_FILE_LEN); header->filename[MEMORY_DEBUG_FILE_LEN] = 0; - WAIT_SEM(&mem_sem); - header->next = mem_debug_chain; header->prev = NULL; if (header->next) @@ -222,8 +215,6 @@ tcc_malloc_debug(size_t size, const char *file, int line) mem_max_size = mem_cur_size; } - POST_SEM(&mem_sem); - return (MEMORY_USER_PTR(header)); } @@ -263,8 +254,6 @@ tcc_realloc_debug(void *ptr, size_t size, const char *file, int line) header = malloc_check(ptr, "tcc_realloc"); - WAIT_SEM(&mem_sem); - mem_cur_size -= header->size; mem_debug_chain_update = (header == mem_debug_chain); header = tcc_realloc(header, sizeof(MemoryDebugHeader) + size); @@ -288,8 +277,6 @@ tcc_realloc_debug(void *ptr, size_t size, const char *file, int line) mem_max_size = mem_cur_size; } - POST_SEM(&mem_sem); - return (MEMORY_USER_PTR(header)); } @@ -309,8 +296,6 @@ tcc_memcheck(int d) { MemoryDebugHeader *header; - WAIT_SEM(&mem_sem); - nb_states += d; if (0 == nb_states && mem_cur_size) { @@ -332,8 +317,6 @@ tcc_memcheck(int d) exit(2); #endif /* TCC_MEMORY_DEBUG == 2 */ } - - POST_SEM(&mem_sem); } #endif /* TCC_MEMORY_DEBUG */