[hurd,commited,3/5] hurd: Fix boot with statically-linked exec server

Message ID 20180318194451.11862-4-samuel.thibault@ens-lyon.org
State Committed, archived
Headers

Commit Message

Samuel Thibault March 18, 2018, 7:44 p.m. UTC
  * sysdeps/mach/hurd/i386/init-first.c (init): Also find ELF headers by
	oneself when the pointer given in D is nul (as set by ext2fs).
---
 ChangeLog                           | 2 ++
 sysdeps/mach/hurd/i386/init-first.c | 2 +-
 2 files changed, 3 insertions(+), 1 deletion(-)
  

Patch

diff --git a/ChangeLog b/ChangeLog
index a02f9017de..e090c75b74 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -68,6 +68,8 @@ 
 	path when flags contains O_NOFOLLOW.
 	* hurd/lookup-retry.c (__hurd_file_name_lookup_retry): Return ENOTDIR
 	if flags contains O_DIRECTORY and the result is a directory.
+	* sysdeps/mach/hurd/i386/init-first.c (init): Also find ELF headers by
+	oneself when the pointer given in D is nul (as set by ext2fs).
 
 2018-03-17  Samuel Thibault  <samuel.thibault@ens-lyon.org>
 
diff --git a/sysdeps/mach/hurd/i386/init-first.c b/sysdeps/mach/hurd/i386/init-first.c
index f4a4df33de..226de02a99 100644
--- a/sysdeps/mach/hurd/i386/init-first.c
+++ b/sysdeps/mach/hurd/i386/init-first.c
@@ -107,7 +107,7 @@  init1 (int argc, char *arg0, ...)
   /* If we are the bootstrap task started by the kernel,
      then after the environment pointers there is no Hurd
      data block; the argument strings start there.  */
-  if ((void *) d == argv[0])
+  if ((void *) d == argv[0] || d->phdr == NULL)
     {
 #ifndef SHARED
       /* With a new enough linker (binutils-2.23 or better),