* sysdeps/mach/hurd/i386/init-first.c (init): Initialize __environ before calling the cthreads initialization code.
2001-08-18 Mark Kettenis <kettenis@gnu.org> * sysdeps/mach/hurd/i386/init-first.c (init): Initialize __environ before calling the cthreads initialization code.
This commit is contained in:
parent
29f0517d46
commit
16195d2026
|
@ -1,3 +1,8 @@
|
||||||
|
2001-08-18 Mark Kettenis <kettenis@gnu.org>
|
||||||
|
|
||||||
|
* sysdeps/mach/hurd/i386/init-first.c (init): Initialize __environ
|
||||||
|
before calling the cthreads initialization code.
|
||||||
|
|
||||||
2001-08-20 Ulrich Drepper <drepper@redhat.com>
|
2001-08-20 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
* argp/argp-help.c: Fix two problems introduced in last change.
|
* argp/argp-help.c: Fix two problems introduced in last change.
|
||||||
|
|
|
@ -132,12 +132,20 @@ init (int *data)
|
||||||
struct hurd_startup_data *d;
|
struct hurd_startup_data *d;
|
||||||
unsigned long int threadvars[_HURD_THREADVAR_MAX];
|
unsigned long int threadvars[_HURD_THREADVAR_MAX];
|
||||||
|
|
||||||
/* Provide temporary storage for thread-specific variables on the startup
|
/* Provide temporary storage for thread-specific variables on the
|
||||||
stack so the cthreads initialization code can use them for malloc et al,
|
startup stack so the cthreads initialization code can use them
|
||||||
or so we can use malloc below for the real threadvars array. */
|
for malloc et al, or so we can use malloc below for the real
|
||||||
|
threadvars array. */
|
||||||
memset (threadvars, 0, sizeof threadvars);
|
memset (threadvars, 0, sizeof threadvars);
|
||||||
__hurd_threadvar_stack_offset = (unsigned long int) threadvars;
|
__hurd_threadvar_stack_offset = (unsigned long int) threadvars;
|
||||||
|
|
||||||
|
/* Since the cthreads initialization code uses malloc, and the
|
||||||
|
malloc initialization code needs to get at the environment, make
|
||||||
|
sure we can find it. We'll need to do this again later on since
|
||||||
|
switching stacks changes the location where the environment is
|
||||||
|
stored. */
|
||||||
|
__environ = envp;
|
||||||
|
|
||||||
while (*envp)
|
while (*envp)
|
||||||
++envp;
|
++envp;
|
||||||
d = (void *) ++envp;
|
d = (void *) ++envp;
|
||||||
|
|
Loading…
Reference in New Issue