diff --git a/src/include/myalign.h b/src/include/myalign.h index fcaed93f33..c557ca916e 100644 --- a/src/include/myalign.h +++ b/src/include/myalign.h @@ -243,14 +243,14 @@ typedef struct jump_buff_x64_s { typedef struct __jmp_buf_tag_s { jump_buff_x64_t __jmpbuf; - int __mask_was_saved; + int __mask_was_saved; #ifdef ANDROID union { - sigset_t __saved_mask; - sigset64_t __saved_mask64; + sigset_t __saved_mask; + sigset64_t __saved_mask64; }; #else - __sigset_t __saved_mask; + sigset_t __saved_mask; #endif } __jmp_buf_tag_t; diff --git a/src/include/myalign32.h b/src/include/myalign32.h index 84121dc459..2d5e53d0c6 100755 --- a/src/include/myalign32.h +++ b/src/include/myalign32.h @@ -568,8 +568,8 @@ struct i386_passwd { ptr_t pw_name; // char* ptr_t pw_passwd; // char* - __uid_t pw_uid; - __gid_t pw_gid; + uid_t pw_uid; + gid_t pw_gid; ptr_t pw_gecos; // char* ptr_t pw_dir; // char* ptr_t pw_shell; // char* @@ -579,7 +579,7 @@ struct i386_group { ptr_t gr_name; // char * ptr_t gr_passwd; // char * - __gid_t gr_gid; + gid_t gr_gid; ptr_t gr_mem; // char ** } __attribute__((packed, aligned(4))); diff --git a/src/include/os.h b/src/include/os.h index 064ceec494..620e8e7fb8 100644 --- a/src/include/os.h +++ b/src/include/os.h @@ -117,9 +117,15 @@ struct box64ec_jmpbuf_s { uint64_t regs[18]; }; // see Box64EC_SetJmp in modu #define GET_JUMPBUFF(name) NULL #endif +#ifndef PROT_READ #define PROT_READ 0x1 +#endif +#ifndef PROT_WRITE #define PROT_WRITE 0x2 +#endif +#ifndef PROT_EXEC #define PROT_EXEC 0x4 +#endif void PrintfFtrace(int prefix, const char* fmt, ...); diff --git a/src/libtools/signal32.c b/src/libtools/signal32.c index 78314e2edb..cf16e276ea 100644 --- a/src/libtools/signal32.c +++ b/src/libtools/signal32.c @@ -269,8 +269,8 @@ typedef struct __attribute__((packed, aligned(4))) my_siginfo32_s union { int _pad[128/sizeof(int)-3]; struct { - __pid_t __si_pid; - __uid_t __si_uid; + pid_t __si_pid; + uid_t __si_uid; } _kill; struct { int si_tid; @@ -278,13 +278,13 @@ typedef struct __attribute__((packed, aligned(4))) my_siginfo32_s my_sigval32_t si_sigval; } _timer; struct { - __pid_t __si_pid; - __uid_t __si_uid; + pid_t __si_pid; + uid_t __si_uid; my_sigval32_t si_sigval; } _rt; struct { - __pid_t __si_pid; - __uid_t __si_uid; + pid_t __si_pid; + uid_t __si_uid; int __si_status; int32_t __si_utime; int32_t __si_stime; diff --git a/src/libtools/threads.c b/src/libtools/threads.c index 3d60e8a684..08317ed40c 100644 --- a/src/libtools/threads.c +++ b/src/libtools/threads.c @@ -43,7 +43,7 @@ _Atomic int g_active_emu_workers = 0; typedef void (*vFppp_t)(void*, void*, void*); typedef void (*vFpi_t)(void*, int); typedef int (*iFppip_t)(void*, void*, int, void*); -typedef int (*iFli_t)(long unsigned int, int); +typedef int (*iFli_t)(pthread_t, int); typedef struct emuthread_s emuthread_t; static vFppp_t real_pthread_cleanup_push_defer = NULL; diff --git a/src/libtools/threads32.c b/src/libtools/threads32.c index 924fed3d52..c03e31585e 100755 --- a/src/libtools/threads32.c +++ b/src/libtools/threads32.c @@ -42,7 +42,7 @@ typedef void (*vFppp_t)(void*, void*, void*); typedef void (*vFpi_t)(void*, int); typedef int (*iFv_t)(void); -typedef int (*iFLi_t)(unsigned long, int); +typedef int (*iFLi_t)(pthread_t, int); //starting with glibc 2.34+, those 2 functions are in libc.so as versioned symbol only // So use dlsym to get the symbol unversioned, as simple link will not work. static vFppp_t real_pthread_cleanup_push_defer = NULL; @@ -692,8 +692,8 @@ EXPORT int my32_pthread_attr_init(x64emu_t* emu, void* attr) EXPORT int my32_pthread_getattr_np(x64emu_t* emu, uintptr_t th, void* attr) { (void)emu; - int ret = pthread_getattr_np(th, get_attr(attr)); - if(!ret && th==pthread_self()) { + int ret = pthread_getattr_np((pthread_t) th, get_attr(attr)); + if(!ret && (pthread_t) th == pthread_self()) { if(!emu->context->stacksizes) { emu->context->stacksizes = kh_init(threadstack); } diff --git a/src/wrapped/wrappedlibc.c b/src/wrapped/wrappedlibc.c index e59bf76f4a..65f41f1596 100644 --- a/src/wrapped/wrappedlibc.c +++ b/src/wrapped/wrappedlibc.c @@ -1896,21 +1896,22 @@ typedef struct compare_r_s { int r; } compare_r_t; -static int my_compare_r_cb(void* a, void* b, compare_r_t* arg) +static int my_compare_r_cb(const void* a, const void* b, void* userdata) { - return (int)RunFunctionWithEmu(arg->emu, 0, arg->f, 2+arg->r, a, b, arg->data); + compare_r_t* arg = userdata; + return (int)RunFunctionWithEmu(arg->emu, 0, arg->f, 2+arg->r, (void*)a, (void*)b, arg->data); } EXPORT void my_qsort(x64emu_t* emu, void* base, size_t nmemb, size_t size, void* fnc) { compare_r_t args; args.emu = emu; args.f = (uintptr_t)fnc; args.r = 0; args.data = NULL; - qsort_r(base, nmemb, size, (__compar_d_fn_t)my_compare_r_cb, &args); + qsort_r(base, nmemb, size, my_compare_r_cb, &args); } EXPORT void my_qsort_r(x64emu_t* emu, void* base, size_t nmemb, size_t size, void* fnc, void* data) { compare_r_t args; args.emu = emu; args.f = (uintptr_t)fnc; args.r = 1; args.data = data; - qsort_r(base, nmemb, size, (__compar_d_fn_t)my_compare_r_cb, &args); + qsort_r(base, nmemb, size, my_compare_r_cb, &args); } EXPORT void* my_bsearch(x64emu_t* emu, void* key, void* base, size_t nmemb, size_t size, void* fnc) { @@ -4849,7 +4850,7 @@ EXPORT int my_stime(x64emu_t* emu, const time_t *t) } int GetTID(); -#ifdef ANDROID +#if defined(ANDROID) || ! defined(__GLIBC__) void updateGlibcTidCache() {} #else struct glibc_pthread { diff --git a/src/wrapped32/wrappedlibc.c b/src/wrapped32/wrappedlibc.c index e420f91c92..71653dd567 100755 --- a/src/wrapped32/wrappedlibc.c +++ b/src/wrapped32/wrappedlibc.c @@ -1456,9 +1456,10 @@ typedef struct compare_r_s { int r; } compare_r_t; -static int my32_compare_r_cb(void* a, void* b, compare_r_t* arg) +static int my32_compare_r_cb(const void* a, const void* b, void* userdata) { - return (int)RunFunctionWithEmu(arg->emu, 0, arg->f, 2+arg->r, a, b, arg->data); + compare_r_t* arg = userdata; + return (int)RunFunctionWithEmu(arg->emu, 0, arg->f, 2+arg->r, (void*)a, (void*)b, arg->data); } #ifndef ANDROID @@ -1466,13 +1467,13 @@ EXPORT void my32_qsort(x64emu_t* emu, void* base, size_t nmemb, size_t size, voi { compare_r_t args; args.emu = emu; args.f = (uintptr_t)fnc; args.r = 0; args.data = NULL; - qsort_r(base, nmemb, size, (__compar_d_fn_t)my32_compare_r_cb, &args); + qsort_r(base, nmemb, size, my32_compare_r_cb, &args); } EXPORT void my32_qsort_r(x64emu_t* emu, void* base, size_t nmemb, size_t size, void* fnc, void* data) { compare_r_t args; args.emu = emu; args.f = (uintptr_t)fnc; args.r = 1; args.data = data; - qsort_r(base, nmemb, size, (__compar_d_fn_t)my32_compare_r_cb, &args); + qsort_r(base, nmemb, size, my32_compare_r_cb, &args); } #endif