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_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

View file

@ -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 <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 bounds_section TCC_STATE_VAR(bounds_section)
#define lbounds_section TCC_STATE_VAR(lbounds_section)

View file

@ -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)

View file

@ -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 */