Remove support for threaded use of libtcc.a, It's out of scope

This commit is contained in:
d0p1 🏳️‍⚧️ 2025-02-11 20:26:13 +01:00
parent 9eb10536b0
commit ef94f0cf60
4 changed files with 4 additions and 74 deletions

View file

@ -43,24 +43,24 @@ AC_ARG_ENABLE([asm_debug],
[AS_HELP_STRING([--enable-asm-debug], [enable asm debug])]) [AS_HELP_STRING([--enable-asm-debug], [enable asm debug])])
AS_IF([test "x$enable_asm_debug" = "xyes"], 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], AC_ARG_ENABLE([inc_debug],
[AS_HELP_STRING([--enable-inc-debug], [enable include file debug])]) [AS_HELP_STRING([--enable-inc-debug], [enable include file debug])])
AS_IF([test "x$enable_inc_debug" = "xyes"], 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], AC_ARG_ENABLE([pp_debug],
[AS_HELP_STRING([--enable-pp-debug], [enable preprocessor debug])]) [AS_HELP_STRING([--enable-pp-debug], [enable preprocessor debug])])
AS_IF([test "x$enable_pp_debug" = "xyes"], 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], AC_ARG_ENABLE([parser_debug],
[AS_HELP_STRING([--enable-parser-debug], [enable parser debug])]) [AS_HELP_STRING([--enable-parser-debug], [enable parser debug])])
AS_IF([test "x$enable_parser_debug" = "xyes"], AS_IF([test "x$enable_parser_debug" = "xyes"],
[AC_DEFINE([PARSE_DEBUG])]) [AC_DEFINE([PARSE_DEBUG], [1], [enable parser debug])])
AC_OUTPUT AC_OUTPUT

View file

@ -87,11 +87,6 @@ extern long double strtold (const char *__nptr, char **__endptr);
# define CONFIG_TCC_PIC 1 # define CONFIG_TCC_PIC 1
#endif #endif
/* support using libtcc from threads */
#ifndef CONFIG_TCC_SEMLOCK
# define CONFIG_TCC_SEMLOCK 1
#endif
/* ------------ path configuration ------------ */ /* ------------ path configuration ------------ */
#ifndef CONFIG_SYSROOT #ifndef CONFIG_SYSROOT
@ -1152,51 +1147,6 @@ void asm_clobber(uint8_t *clobber_regs, const char *str);
/* ------------ tccdbg.c ------------ */ /* ------------ tccdbg.c ------------ */
#define eh_frame_hdr_section s1->eh_frame_hdr_section #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 <dispatch/dispatch.h>
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 <semaphore.h>
#include <errno.h>
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 common_section TCC_STATE_VAR(common_section)
#define bounds_section TCC_STATE_VAR(bounds_section) #define bounds_section TCC_STATE_VAR(bounds_section)
#define lbounds_section TCC_STATE_VAR(lbounds_section) #define lbounds_section TCC_STATE_VAR(lbounds_section)

View file

@ -33,7 +33,6 @@
/* XXX: get rid of this ASAP (or maybe not) */ /* XXX: get rid of this ASAP (or maybe not) */
struct TCCState *tcc_state; struct TCCState *tcc_state;
TCC_SEM(static tcc_compile_sem);
/* an array of pointers to memory to be free'd after errors */ /* an array of pointers to memory to be free'd after errors */
void** stk_data; void** stk_data;
int nb_stk_data; int nb_stk_data;
@ -74,7 +73,6 @@ PUB_FUNC void tcc_enter_state(TCCState *s1)
{ {
if (s1->error_set_jmp_enabled) if (s1->error_set_jmp_enabled)
return; return;
WAIT_SEM(&tcc_compile_sem);
tcc_state = s1; tcc_state = s1;
} }
@ -83,7 +81,6 @@ PUB_FUNC void tcc_exit_state(TCCState *s1)
if (s1->error_set_jmp_enabled) if (s1->error_set_jmp_enabled)
return; return;
tcc_state = NULL; tcc_state = NULL;
POST_SEM(&tcc_compile_sem);
} }
char *tcc_load_text(int fd) char *tcc_load_text(int fd)

View file

@ -124,7 +124,6 @@ typedef struct MemoryDebugHeader {
__attribute__((aligned(16))) uint8_t magic3[4]; __attribute__((aligned(16))) uint8_t magic3[4];
} MemoryDebugHeader; } MemoryDebugHeader;
TCC_SEM(static mem_sem);
static MemoryDebugHeader *mem_debug_chain; static MemoryDebugHeader *mem_debug_chain;
static size_t mem_cur_size; static size_t mem_cur_size;
size_t mem_max_size; size_t mem_max_size;
@ -165,8 +164,6 @@ tcc_free_debug(void *ptr)
header = malloc_check(ptr, "tcc_free"); header = malloc_check(ptr, "tcc_free");
WAIT_SEM(&mem_sem);
mem_cur_size -= header->size; mem_cur_size -= header->size;
header->size = (size_t)-1; header->size = (size_t)-1;
if (header->next) if (header->next)
@ -182,8 +179,6 @@ tcc_free_debug(void *ptr)
mem_debug_chain = header->next; mem_debug_chain = header->next;
} }
POST_SEM(&mem_sem);
tcc_free(header); 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); strncpy(header->filename, file + (ofs > 0 ? ofs : 0), MEMORY_DEBUG_FILE_LEN);
header->filename[MEMORY_DEBUG_FILE_LEN] = 0; header->filename[MEMORY_DEBUG_FILE_LEN] = 0;
WAIT_SEM(&mem_sem);
header->next = mem_debug_chain; header->next = mem_debug_chain;
header->prev = NULL; header->prev = NULL;
if (header->next) if (header->next)
@ -222,8 +215,6 @@ tcc_malloc_debug(size_t size, const char *file, int line)
mem_max_size = mem_cur_size; mem_max_size = mem_cur_size;
} }
POST_SEM(&mem_sem);
return (MEMORY_USER_PTR(header)); 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"); header = malloc_check(ptr, "tcc_realloc");
WAIT_SEM(&mem_sem);
mem_cur_size -= header->size; mem_cur_size -= header->size;
mem_debug_chain_update = (header == mem_debug_chain); mem_debug_chain_update = (header == mem_debug_chain);
header = tcc_realloc(header, sizeof(MemoryDebugHeader) + size); 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; mem_max_size = mem_cur_size;
} }
POST_SEM(&mem_sem);
return (MEMORY_USER_PTR(header)); return (MEMORY_USER_PTR(header));
} }
@ -309,8 +296,6 @@ tcc_memcheck(int d)
{ {
MemoryDebugHeader *header; MemoryDebugHeader *header;
WAIT_SEM(&mem_sem);
nb_states += d; nb_states += d;
if (0 == nb_states && mem_cur_size) if (0 == nb_states && mem_cur_size)
{ {
@ -332,8 +317,6 @@ tcc_memcheck(int d)
exit(2); exit(2);
#endif /* TCC_MEMORY_DEBUG == 2 */ #endif /* TCC_MEMORY_DEBUG == 2 */
} }
POST_SEM(&mem_sem);
} }
#endif /* TCC_MEMORY_DEBUG */ #endif /* TCC_MEMORY_DEBUG */