diff --git a/src/elfs/elfloader.c b/src/elfs/elfloader.c index 5bc7ff69..6479d9e6 100755 --- a/src/elfs/elfloader.c +++ b/src/elfs/elfloader.c @@ -574,8 +574,10 @@ int RelocateElfREL(lib_t *maplib, lib_t *local_maplib, int bindnow, elfheader_t* end = globend; } if (!offs) { - if(strcmp(symname, "__gmon_start__") && strcmp(symname, "data_start") && strcmp(symname, "__data_start")) - printf_log(LOG_NONE, "Error: Global Symbol %s not found, cannot apply R_386_GLOB_DAT @%p (%p) in %s\n", symname, p, *(void**)p, head->name); + if(strcmp(symname, "__gmon_start__") && strcmp(symname, "data_start") && strcmp(symname, "__data_start")) { + printf_log((bind==STB_GLOBAL)?LOG_NONE:LOG_INFO, "%s: Global Symbol %s not found, cannot apply R_386_GLOB_DAT @%p (%p) in %s\n", (bind==STB_GLOBAL)?"Error":"Warning", symname, p, *(void**)p, head->name); + if(bind==STB_GLOBAL) ret_ok=1; + } } else { printf_dump(LOG_NEVER, "Apply %s R_386_GLOB_DAT @%p (%p -> %p) on sym=%s (ver=%d/%s)\n", (bind==STB_LOCAL)?"Local":((bind==STB_WEAK)?"Weak":"Global"), p, (void*)(p?(*p):0), (void*)offs, symname, version, vername?vername:"(none)"); *p = offs/* + rela[i].r_addend*/; // not addend it seems diff --git a/src/wrapped/generated/functions_list.txt b/src/wrapped/generated/functions_list.txt index ba23b3d8..ca53b25f 100644 --- a/src/wrapped/generated/functions_list.txt +++ b/src/wrapped/generated/functions_list.txt @@ -4614,7 +4614,6 @@ wrappedudev1: wrappedutil: - iFpppp: - forkpty -wrappedandroidshmem: wrappedvorbisfile: - iFp: - ov_bitrate_instant diff --git a/src/wrapped/wrappedlibc.c b/src/wrapped/wrappedlibc.c index c1a18214..34e722cc 100755 --- a/src/wrapped/wrappedlibc.c +++ b/src/wrapped/wrappedlibc.c @@ -3309,6 +3309,9 @@ EXPORT char* my___progname_full = NULL; EXPORT char* my_program_invocation_name = NULL; EXPORT char* my_program_invocation_short_name = NULL; +// ignoring this for now +EXPORT char my___libc_single_threaded = 0; + #define PRE_INIT\ if(1) \ my_lib = lib->w.lib = dlopen(NULL, RTLD_LAZY | RTLD_GLOBAL);\ diff --git a/src/wrapped/wrappedlibc_private.h b/src/wrapped/wrappedlibc_private.h index db5b1b79..f84bae1c 100755 --- a/src/wrapped/wrappedlibc_private.h +++ b/src/wrapped/wrappedlibc_private.h @@ -2251,6 +2251,8 @@ GOM(fstatat64, iFippi) //%%,noE GOM(fstat64, iFip) //%%,noE GOM(fstatat, iFippi) //%%,noE +DATAM(__libc_single_threaded, 1) + GOWM(_Unwind_Find_FDE, pFEpp) // this is a libgcc_s function, I think. Create a dummy weak one, just in case GO(dummy__ZnwmSt11align_val_tRKSt9nothrow_t, pFLLp) // for mallochook.c GO(dummy_safer_scalable_aligned_realloc, pFpLLp) // for mallochook.c diff --git a/x86lib/libgcc_s.so.1 b/x86lib/libgcc_s.so.1 old mode 100755 new mode 100644 index 27b05485..84b1cfe5 Binary files a/x86lib/libgcc_s.so.1 and b/x86lib/libgcc_s.so.1 differ diff --git a/x86lib/libstdc++.so.6 b/x86lib/libstdc++.so.6 old mode 100755 new mode 100644 index f26626c0..88d25833 Binary files a/x86lib/libstdc++.so.6 and b/x86lib/libstdc++.so.6 differ