/* Static declarations */
int (*_dl_elf_main) (int, char **, char **);
-
-
+static void* __rtld_stack_end; /* Points to argc on stack, e.g *((long *)__rtld_stackend) == argc */
+strong_alias(__rtld_stack_end, __libc_stack_end); /* Exported version of __rtld_stack_end */
/* When we enter this piece of code, the program stack looks like this:
argc argument counter (integer)
free to start using global variables, since these things have all been
fixed up by now. Still no function calls outside of this library ,
since the dynamic resolver is not yet ready. */
+
+ __rtld_stack_end = (void *)args; /* Needs to be after ld.so self relocation */
+ if (*((long *)__rtld_stack_end) != argc) {
+ SEND_STDERR_DEBUG("__rtld_stack_end doesn't point to argc!");
+ }
_dl_get_ready_to_run(tpnt, load_addr, auxvt, envp, argv);