* sysdeps/mach/hurd/i386/init-first.c (init): Initialize __environ before calling...
authorMark Kettenis <kettenis@gnu.org>
Mon, 20 Aug 2001 21:44:01 +0000 (21:44 +0000)
committerMark Kettenis <kettenis@gnu.org>
Mon, 20 Aug 2001 21:44:01 +0000 (21:44 +0000)
2001-08-18  Mark Kettenis  <kettenis@gnu.org>

* sysdeps/mach/hurd/i386/init-first.c (init): Initialize __environ
before calling the cthreads initialization code.

ChangeLog
sysdeps/mach/hurd/i386/init-first.c

index 9a0e538..bf801e2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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>
 
        * argp/argp-help.c: Fix two problems introduced in last change.
index 15c9dea..a50e418 100644 (file)
@@ -132,12 +132,20 @@ init (int *data)
   struct hurd_startup_data *d;
   unsigned long int threadvars[_HURD_THREADVAR_MAX];
 
-  /* Provide temporary storage for thread-specific variables on the startup
-     stack so the cthreads initialization code can use them for malloc et al,
-  or so we can use malloc below for the real threadvars array.  */
+  /* Provide temporary storage for thread-specific variables on the
+     startup stack so the cthreads initialization code can use them
+     for malloc et al, or so we can use malloc below for the real
+     threadvars array.  */
   memset (threadvars, 0, sizeof 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)
     ++envp;
   d = (void *) ++envp;