diff --git a/src/external/cocotron b/src/external/cocotron index 6b789836a..9679b03cb 160000 --- a/src/external/cocotron +++ b/src/external/cocotron @@ -1 +1 @@ -Subproject commit 6b789836a8c81abf0926b8ccd6a83ba9bae66941 +Subproject commit 9679b03cbbad08d64eba01314d8a467ad70547aa diff --git a/src/external/corefoundation b/src/external/corefoundation index 42a615c81..0d4273c5a 160000 --- a/src/external/corefoundation +++ b/src/external/corefoundation @@ -1 +1 @@ -Subproject commit 42a615c81e6a4f49d88b56edcc94f95f9cbf5ab2 +Subproject commit 0d4273c5ac4c2caec9b08fa22e510a2e5ae9bbd2 diff --git a/src/external/foundation b/src/external/foundation index f73a3ebb3..a07171f8d 160000 --- a/src/external/foundation +++ b/src/external/foundation @@ -1 +1 @@ -Subproject commit f73a3ebb3e905141cb616995a5b65c1a2458721f +Subproject commit a07171f8dd333c8da1fca69a19fa674051532508 diff --git a/src/libelfloader/loader.c b/src/libelfloader/loader.c index 1c1801031..177a2e8eb 100644 --- a/src/libelfloader/loader.c +++ b/src/libelfloader/loader.c @@ -55,8 +55,6 @@ extern int getentropy(void* buf, size_t len); #define ELF_PAGEOFFSET(_v) ((_v) & (ELF_MIN_ALIGN-1)) #define ELF_PAGEALIGN(_v) (((_v) + ELF_MIN_ALIGN - 1) & ~(ELF_MIN_ALIGN - 1)) -extern char** environ; - struct loader_context { uintptr_t interp_entry; @@ -67,7 +65,7 @@ struct loader_context uintptr_t interp_base; }; -static void run(const char* path); +static void run(const char* path, const char** envp); static void load(const char* path, struct loader_context* lc, bool isInterp); static void loader_return(void); static const char SYSTEM_ROOT[] = "/Volumes/SystemRoot"; @@ -77,14 +75,14 @@ struct elf_calls* _elfcalls; #ifndef TEST __attribute__((constructor)) - static void runDummy(void) + static void runDummy(int argc, const char** argv, const char** envp) { _elfcalls = (struct elf_calls*) malloc(sizeof(struct elf_calls)); - run(DUMMY_PATH); + run(DUMMY_PATH, envp); } #endif -void run(const char* path) +void run(const char* path, const char** envp) { struct loader_context lc; unsigned long *stack, *stackmem; @@ -111,7 +109,7 @@ void run(const char* path) ptrcount += 4; // argv // environ - for (int i = 0; environ[i] != NULL; i++) + for (int i = 0; envp[i] != NULL; i++) ptrcount++; ptrcount++; @@ -132,8 +130,8 @@ void run(const char* path) stack[pos++] = 0; - for (int i = 0; environ[i] != NULL; i++) - stack[pos++] = (unsigned long) environ[i]; + for (int i = 0; envp[i] != NULL; i++) + stack[pos++] = (unsigned long) envp[i]; #ifdef __linux__ // For testing getrandom(entropy, sizeof(entropy), 0);