about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorPablo Labs <80591934+KreitinnSoftware@users.noreply.github.com>2024-09-29 17:21:40 -0300
committerGitHub <noreply@github.com>2024-09-29 22:21:40 +0200
commita6baf1f370743053f6c41085ce0fd9efd5ad0481 (patch)
treefd6d6cd79537f724ce9df8930d009b6f2e283edb /src
parent874238f61eeefa52a2feda292882e0d0b0a200c3 (diff)
downloadbox64-a6baf1f370743053f6c41085ce0fd9efd5ad0481.tar.gz
box64-a6baf1f370743053f6c41085ce0fd9efd5ad0481.zip
[ANDROID][BOX32] Fix __libc_init, Fix Some Warnings (#1887)
* [ANDROID][BOX32] Fix __libc_init, Fix Some Warnings

* Fix More Warnings

* Revert fillALProcWrapper() change
Diffstat (limited to 'src')
-rw-r--r--src/custommem.c17
-rw-r--r--src/elfs/elfload_dump.c16
-rw-r--r--src/elfs/elfloader.c8
-rw-r--r--src/librarian/library.c2
-rw-r--r--src/tools/gtkclass.c3
-rw-r--r--src/wrapped/wrappedgobject2.c10
-rw-r--r--src/wrapped/wrappedopenal.c2
-rwxr-xr-xsrc/wrapped32/wrappedlibc.c6
-rwxr-xr-xsrc/wrapped32/wrappedlibc_private.h2
9 files changed, 39 insertions, 27 deletions
diff --git a/src/custommem.c b/src/custommem.c
index 432ce45a..17a97a49 100644
--- a/src/custommem.c
+++ b/src/custommem.c
@@ -570,11 +570,13 @@ void* internal_customRealloc(void* p, size_t size, int is32bits)
         return newp;
     }
     mutex_unlock(&mutex_blocks);
-    if(n_blocks)
+    if(n_blocks) {
         if(is32bits) {
             return box_realloc(p, size);
-        } else
+        } else {
             printf_log(LOG_INFO, "Warning, block %p not found in p_blocks for realloc, malloc'ing again without free\n", (void*)addr);
+        }
+    }
     return internal_customMalloc(size, is32bits);
 }
 void* customRealloc(void* p, size_t size)
@@ -588,8 +590,9 @@ void* customRealloc32(void* p, size_t size)
 
 void internal_customFree(void* p, int is32bits)
 {
-    if(!p)
+    if(!p) {
         return;
+    }
     uintptr_t addr = (uintptr_t)p;
     mutex_lock(&mutex_blocks);
     blocklist_t* l = findBlock(addr);
@@ -601,11 +604,13 @@ void internal_customFree(void* p, int is32bits)
         return;
     }
     mutex_unlock(&mutex_blocks);
-    if(n_blocks)
-        if(is32bits)
+    if(n_blocks) {
+        if(is32bits) {
             box_free(p);
-        else
+        } else {
             printf_log(LOG_INFO, "Warning, block %p not found in p_blocks for Free\n", (void*)addr);
+        }
+    }
 }
 void customFree(void* p)
 {
diff --git a/src/elfs/elfload_dump.c b/src/elfs/elfload_dump.c
index 95fc70d3..2ec0d603 100644
--- a/src/elfs/elfload_dump.c
+++ b/src/elfs/elfload_dump.c
@@ -16,7 +16,7 @@ static const char* DumpSection(Elf64_Shdr *s, char* SST) {
             return "SHT_NULL";
         #define GO(A) \
         case A:     \
-            sprintf(buff, #A " Name=\"%s\"(%d) off=0x%lX, size=%ld, attr=0x%04lX, addr=%p(%02lX), link/info=%d/%d", \
+            sprintf(buff, #A " Name=\"%s\"(%d) off=0x%llX, size=%lld, attr=0x%04llX, addr=%p(%02llX), link/info=%d/%d", \
                 SST+s->sh_name, s->sh_name, s->sh_offset, s->sh_size, s->sh_flags, (void*)s->sh_addr, s->sh_addralign, s->sh_link, s->sh_info); \
             break
         GO(SHT_PROGBITS);
@@ -67,7 +67,7 @@ static const char* DumpDynamic(Elf64_Dyn *s) {
             return "DT_NULL: End Dynamic Section";
         #define GO(A, Add) \
         case A:     \
-            sprintf(buff, #A " %s=0x%lX", (Add)?"Addr":"Val", (Add)?s->d_un.d_ptr:s->d_un.d_val); \
+            sprintf(buff, #A " %s=0x%llX", (Add)?"Addr":"Val", (Add)?s->d_un.d_ptr:s->d_un.d_val); \
             break
             GO(DT_NEEDED, 0);
             GO(DT_PLTRELSZ, 0);
@@ -139,7 +139,7 @@ static const char* DumpDynamic(Elf64_Dyn *s) {
             #endif
         #undef GO
         default:
-            sprintf(buff, "0x%lX unknown type", s->d_tag);
+            sprintf(buff, "0x%llX unknown type", s->d_tag);
     }
     return buff;
 }
@@ -150,7 +150,7 @@ static const char* DumpPHEntry(Elf64_Phdr *e)
     memset(buff, 0, sizeof(buff));
     switch(e->p_type) {
         case PT_NULL: sprintf(buff, "type: %s", "PT_NULL"); break;
-        #define GO(T) case T: sprintf(buff, "type: %s, Off=%lx vaddr=%p paddr=%p filesz=%lu memsz=%lu flags=%x align=%lu", #T, e->p_offset, (void*)e->p_vaddr, (void*)e->p_paddr, e->p_filesz, e->p_memsz, e->p_flags, e->p_align); break
+        #define GO(T) case T: sprintf(buff, "type: %s, Off=%llx vaddr=%p paddr=%p filesz=%llu memsz=%llu flags=%x align=%llu", #T, e->p_offset, (void*)e->p_vaddr, (void*)e->p_paddr, e->p_filesz, e->p_memsz, e->p_flags, e->p_align); break
         GO(PT_LOAD);
         GO(PT_DYNAMIC);
         GO(PT_INTERP);
@@ -166,7 +166,7 @@ static const char* DumpPHEntry(Elf64_Phdr *e)
         GO(PT_GNU_RELRO);
         #endif
         #undef GO
-        default: sprintf(buff, "type: %x, Off=%lx vaddr=%p paddr=%p filesz=%lu memsz=%lu flags=%x align=%lu", e->p_type, e->p_offset, (void*)e->p_vaddr, (void*)e->p_paddr, e->p_filesz, e->p_memsz, e->p_flags, e->p_align); break;
+        default: sprintf(buff, "type: %x, Off=%llx vaddr=%p paddr=%p filesz=%llu memsz=%llu flags=%x align=%llu", e->p_type, e->p_offset, (void*)e->p_vaddr, (void*)e->p_paddr, e->p_filesz, e->p_memsz, e->p_flags, e->p_align); break;
     }
     return buff;
 }
@@ -233,7 +233,7 @@ static const char* DumpSym(elfheader_t *h, Elf64_Sym* sym, int version)
     const char* vername = (version==-1)?"(none)":((version==0)?"*local*":((version==1)?"*global*":GetSymbolVersion(h, version)));
     int veropt = GetSymbolVersionFlag(h, version)?0:1;
     memset(buff, 0, sizeof(buff));
-    sprintf(buff, "\"%s\", value=%p, size=%ld, info/other=%d/%d index=%d (%sver=%d/%s)", 
+    sprintf(buff, "\"%s\", value=%p, size=%lld, info/other=%d/%d index=%d (%sver=%d/%s)", 
         h->DynStr+sym->st_name, (void*)sym->st_value, sym->st_size,
         sym->st_info, sym->st_other, sym->st_shndx, veropt?"opt":"", version, vername);
     return buff;
@@ -379,7 +379,7 @@ void DumpRelTable64(elfheader_t *h, int cnt, Elf64_Rel *rel, const char* name)
         const char* elfname = ElfName(h);
         printf_dump(LOG_NEVER, "ELF Dump %s Table(%d) @%p\n", name, cnt, rel);
         for (int i = 0; i<cnt; ++i)
-            printf_dump(LOG_NEVER, "  %s:Rel[%d] = %p (0x%lX: %s, sym=0x%0lX/%s)\n", elfname,
+            printf_dump(LOG_NEVER, "  %s:Rel[%d] = %p (0x%llX: %s, sym=0x%0lX/%s)\n", elfname,
                 i, (void*)rel[i].r_offset, rel[i].r_info, DumpRelType64(ELF64_R_TYPE(rel[i].r_info)), 
                 ELF64_R_SYM(rel[i].r_info), IdxSymName(h, ELF64_R_SYM(rel[i].r_info)));
         printf_dump(LOG_NEVER, "ELF Dump Rel Table=====\n");
@@ -394,7 +394,7 @@ void DumpRelATable64(elfheader_t *h, int cnt, Elf64_Rela *rela, const char* name
         const char* elfname = ElfName(h);
         printf_dump(LOG_NEVER, "ELF Dump %s Table(%d) @%p\n", name, cnt, rela);
         for (int i = 0; i<cnt; ++i)
-            printf_dump(LOG_NEVER, "  %s:%s[%d] = %p (0x%lX: %s, sym=0x%lX/%s) Addend=0x%lx\n", elfname, name,
+            printf_dump(LOG_NEVER, "  %s:%s[%d] = %p (0x%llX: %s, sym=0x%llX/%s) Addend=0x%llx\n", elfname, name,
                 i, (void*)rela[i].r_offset, rela[i].r_info, DumpRelType64(ELF64_R_TYPE(rela[i].r_info)), 
                 ELF64_R_SYM(rela[i].r_info), IdxSymName(h, ELF64_R_SYM(rela[i].r_info)), 
                 rela[i].r_addend);
diff --git a/src/elfs/elfloader.c b/src/elfs/elfloader.c
index bd89176b..10bb7b02 100644
--- a/src/elfs/elfloader.c
+++ b/src/elfs/elfloader.c
@@ -1512,10 +1512,12 @@ static void* find_dl_iterate_phdr_Fct(void* fct)
 #undef SUPER
 
 EXPORT int my32_dl_iterate_phdr(x64emu_t *emu, void* F, void *data)
-#ifndef BOX32
-{ }
+#ifdef BOX32
+;
 #else
- ;
+{ 
+    return -1;
+}
 #endif
 EXPORT int my_dl_iterate_phdr(x64emu_t *emu, void* F, void *data) {
     if(box64_is32bits) return my32_dl_iterate_phdr(emu, F, data);
diff --git a/src/librarian/library.c b/src/librarian/library.c
index 34bb0b79..d4f57854 100644
--- a/src/librarian/library.c
+++ b/src/librarian/library.c
@@ -695,7 +695,7 @@ int IsSameLib(library_t* lib, const char* path)
             ret=1;
     } else {
         char rpath[PATH_MAX];
-        box_realpath(path, rpath);
+        (void) box_realpath(path, rpath);
         if(!strcmp(rpath, lib->path))
             ret=1;
         if(lib->type==LIB_EMULATED && lib->e.elf->path && !strcmp(lib->e.elf->path, rpath)) {
diff --git a/src/tools/gtkclass.c b/src/tools/gtkclass.c
index 63e0cd56..646a9b13 100644
--- a/src/tools/gtkclass.c
+++ b/src/tools/gtkclass.c
@@ -5543,7 +5543,7 @@ my_GtkTypeInfo_t* findFreeGtkTypeInfo(my_GtkTypeInfo_t* fcts, size_t parent)
         my_gtktypeinfo_##A.class_size = fcts->class_size; \
         my_gtktypeinfo_##A.class_init_func = (fcts->class_init_func)?((GetNativeFnc((uintptr_t)fcts->class_init_func))?GetNativeFnc((uintptr_t)fcts->class_init_func):my_gtk_class_init_##A):NULL;    \
         fct_gtk_class_init_##A = (uintptr_t)fcts->class_init_func;           \
-        my_gtktypeinfo_##A.object_init_func = (fcts->object_init_func)?((GetNativeFnc((uintptr_t)fcts->object_init_func))?GetNativeFnc((uintptr_t)fcts->object_init_func):my_gtk_object_init_##A):NULL;    \
+        my_gtktypeinfo_##A.object_init_func = (fcts->object_init_func)?((GetNativeFnc((uintptr_t)fcts->object_init_func))?(void (*)(void *, void *))GetNativeFnc((uintptr_t)fcts->object_init_func):my_gtk_object_init_##A):NULL;    \
         fct_gtk_object_init_##A = (uintptr_t)fcts->object_init_func;         \
         my_gtktypeinfo_##A.reserved_1 = fcts->reserved_1;                 \
         my_gtktypeinfo_##A.reserved_2 = fcts->reserved_2;                 \
@@ -5551,6 +5551,7 @@ my_GtkTypeInfo_t* findFreeGtkTypeInfo(my_GtkTypeInfo_t* fcts, size_t parent)
         fct_gtk_base_class_init_##A = (uintptr_t)fcts->base_class_init_func;   \
         return &my_gtktypeinfo_##A;                       \
     }
+
     SUPER()
     #undef GO
     printf_log(LOG_NONE, "Warning, no more slot for GtkTypeInfo callback\n");
diff --git a/src/wrapped/wrappedgobject2.c b/src/wrapped/wrappedgobject2.c
index 07cce9f7..74dce6b9 100644
--- a/src/wrapped/wrappedgobject2.c
+++ b/src/wrapped/wrappedgobject2.c
@@ -511,15 +511,15 @@ static my_GParamSpecTypeInfo_t* findFreeGParamSpecTypeInfo(my_GParamSpecTypeInfo
     #undef GO
     #define GO(A) if(ref_GParamSpecTypeInfo_##A == 0) {   \
         ref_GParamSpecTypeInfo_##A = fcts;                 \
-        my_GParamSpecTypeInfo_##A.instance_init = (fcts->instance_init)?((GetNativeFnc((uintptr_t)fcts->instance_init))?GetNativeFnc((uintptr_t)fcts->instance_init):my_funcs_instance_init_##A):NULL;    \
+        my_GParamSpecTypeInfo_##A.instance_init = (fcts->instance_init)?((GetNativeFnc((uintptr_t)fcts->instance_init))?(void (*)(void *))GetNativeFnc((uintptr_t)fcts->instance_init):my_funcs_instance_init_##A):NULL;    \
         fct_funcs_instance_init_##A = (uintptr_t)fcts->instance_init;                            \
-        my_GParamSpecTypeInfo_##A.finalize = (fcts->finalize)?((GetNativeFnc((uintptr_t)fcts->finalize))?GetNativeFnc((uintptr_t)fcts->finalize):my_funcs_finalize_##A):NULL;    \
+        my_GParamSpecTypeInfo_##A.finalize = (fcts->finalize)?((GetNativeFnc((uintptr_t)fcts->finalize))?(void (*)(void *))GetNativeFnc((uintptr_t)fcts->finalize):my_funcs_finalize_##A):NULL;    \
         fct_funcs_finalize_##A = (uintptr_t)fcts->finalize;                            \
-        my_GParamSpecTypeInfo_##A.value_set_default = (fcts->value_set_default)?((GetNativeFnc((uintptr_t)fcts->value_set_default))?GetNativeFnc((uintptr_t)fcts->value_set_default):my_funcs_value_set_default_##A):NULL;    \
+        my_GParamSpecTypeInfo_##A.value_set_default = (fcts->value_set_default)?((GetNativeFnc((uintptr_t)fcts->value_set_default))?(void (*)(void *, void *))GetNativeFnc((uintptr_t)fcts->value_set_default):my_funcs_value_set_default_##A):NULL;    \
         fct_funcs_value_set_default_##A = (uintptr_t)fcts->value_set_default;                            \
-        my_GParamSpecTypeInfo_##A.value_validate = (fcts->value_validate)?((GetNativeFnc((uintptr_t)fcts->value_validate))?GetNativeFnc((uintptr_t)fcts->value_validate):my_funcs_value_validate_##A):NULL;    \
+        my_GParamSpecTypeInfo_##A.value_validate = (fcts->value_validate)?((GetNativeFnc((uintptr_t)fcts->value_validate))?(int (*)(void *, void *))GetNativeFnc((uintptr_t)fcts->value_validate):my_funcs_value_validate_##A):NULL;    \
         fct_funcs_value_validate_##A = (uintptr_t)fcts->value_validate;                            \
-        my_GParamSpecTypeInfo_##A.values_cmp = (fcts->values_cmp)?((GetNativeFnc((uintptr_t)fcts->values_cmp))?GetNativeFnc((uintptr_t)fcts->values_cmp):my_funcs_values_cmp_##A):NULL;    \
+        my_GParamSpecTypeInfo_##A.values_cmp = (fcts->values_cmp)?((GetNativeFnc((uintptr_t)fcts->values_cmp))?(int (*)(void *, void *, void *))GetNativeFnc((uintptr_t)fcts->values_cmp):my_funcs_values_cmp_##A):NULL;    \
         fct_funcs_values_cmp_##A = (uintptr_t)fcts->values_cmp;                            \
         return &my_GParamSpecTypeInfo_##A;                \
     }
diff --git a/src/wrapped/wrappedopenal.c b/src/wrapped/wrappedopenal.c
index 75695c6c..fb478f33 100644
--- a/src/wrapped/wrappedopenal.c
+++ b/src/wrapped/wrappedopenal.c
@@ -63,8 +63,6 @@ void my_alRequestFoldbackStop(x64emu_t* emu);
 
 #include "wrappedlib_init.h"
 
-
-
 void fillALProcWrapper()
 {
     int cnt, ret;
diff --git a/src/wrapped32/wrappedlibc.c b/src/wrapped32/wrappedlibc.c
index 8c1731b4..58fff5bf 100755
--- a/src/wrapped32/wrappedlibc.c
+++ b/src/wrapped32/wrappedlibc.c
@@ -462,14 +462,20 @@ EXPORT int my32_statvfs(x64emu_t* emu, void* f, void* r)
 }
 
 // some my32_XXX declare and defines
+#ifdef ANDROID
+void my32___libc_init(x64emu_t* emu, void* raw_args , void (*onexit)(void) , int (*main)(int, char**, char**), void const * const structors );
+#else
 int32_t my32___libc_start_main(x64emu_t* emu, int *(main) (int, char * *, char * *), 
     int argc, char * * ubp_av, void (*init) (void), void (*fini) (void), 
     void (*rtld_fini) (void), void (* stack_end)); // implemented in x64run_private.c
+#endif
+
 EXPORT void my32___libc_init_first(x64emu_t* emu, int argc, char* arg0, char** b)
 {
     // do nothing specific for now
     return;
 }
+
 uint32_t my32_syscall(x64emu_t *emu); // implemented in x64syscall.c
 void EXPORT my32___stack_chk_fail(x64emu_t* emu)
 {
diff --git a/src/wrapped32/wrappedlibc_private.h b/src/wrapped32/wrappedlibc_private.h
index a4b33271..d729ea02 100755
--- a/src/wrapped32/wrappedlibc_private.h
+++ b/src/wrapped32/wrappedlibc_private.h
@@ -2171,7 +2171,7 @@ GO(fallocate64, iFiill)
 //GOM(modify_ldt, iFEipL) // there is suposedly no glibc wrapper for this one
 
 #ifdef ANDROID
-GOM(__libc_init, vFEpppp)
+//GOM(__libc_init, vFEpppp)
 GO(__errno, pFv)
 #else
 // Those symbols don't exist in non-Android builds