diff options
Diffstat (limited to 'src')
| -rwxr-xr-x | src/wrapped/wrappedldlinux.c | 9 | ||||
| -rwxr-xr-x | src/wrapped/wrappedldlinux_private.h | 2 | ||||
| -rwxr-xr-x | src/wrapped/wrappedlibc.c | 7 |
3 files changed, 10 insertions, 8 deletions
diff --git a/src/wrapped/wrappedldlinux.c b/src/wrapped/wrappedldlinux.c index b5dc0da6..83245e93 100755 --- a/src/wrapped/wrappedldlinux.c +++ b/src/wrapped/wrappedldlinux.c @@ -28,6 +28,12 @@ EXPORT void* my___tls_get_addr(void* p) return ptr->data+GetTLSBase(my_context->elfs[t->i])+t->o; } +EXPORT void* my___libc_stack_end; +void stSetup(box64context_t* context) +{ + my___libc_stack_end = context->stack; // is this the end, or should I add stasz? +} + // don't try to load the actual ld-linux (because name is variable), just use box64 itself, as it's linked to ld-linux const char* ldlinuxName = "ld-linux.so.2"; #define LIBNAME ldlinux @@ -37,6 +43,9 @@ const char* ldlinuxName = "ld-linux.so.2"; lib->w.lib = dlopen(NULL, RTLD_LAZY | RTLD_GLOBAL); \ else +#define CUSTOM_INIT \ + stSetup(box64); \ + // define all standard library functions #include "wrappedlib_init.h" diff --git a/src/wrapped/wrappedldlinux_private.h b/src/wrapped/wrappedldlinux_private.h index 7b863d14..9bdcccb1 100755 --- a/src/wrapped/wrappedldlinux_private.h +++ b/src/wrapped/wrappedldlinux_private.h @@ -14,7 +14,7 @@ // _dl_rtld_di_serinfo // _dl_tls_setup DATA(__libc_enable_secure, sizeof(void*)) -DATA(__libc_stack_end, sizeof(void*)) +DATAM(__libc_stack_end, sizeof(void*)) DATA(__pointer_chk_guard, sizeof(void*)) DATAB(_r_debug, 40) DATA(_rtld_global, sizeof(void*)) diff --git a/src/wrapped/wrappedlibc.c b/src/wrapped/wrappedlibc.c index 5e6318e8..ee580147 100755 --- a/src/wrapped/wrappedlibc.c +++ b/src/wrapped/wrappedlibc.c @@ -2415,12 +2415,6 @@ void ctSetup() my___ctype_tolower = *(__ctype_tolower_loc()); } -EXPORT void* my___libc_stack_end; -void stSetup(box64context_t* context) -{ - my___libc_stack_end = context->stack; // is this the end, or should I add stasz? -} - EXPORT void my___register_frame_info(void* a, void* b) { // nothing @@ -3281,7 +3275,6 @@ EXPORT char my___libc_single_threaded = 0; box64->libclib = lib; \ /*InitCpuModel();*/ \ ctSetup(); \ - stSetup(box64); \ obstackSetup(); \ my_environ = my__environ = my___environ = box64->envv; \ my___progname_full = my_program_invocation_name = box64->argv[0]; \ |