changeset 1647:4041898deb5a

Backport execvpe patch (needed with newer glibc). 2009-07-30 Andrew John Hughes <ahughes@redhat.com> * Makefile.am: Add new patch. * patches/openjdk/rename-execvpe.patch, Backport execvpe patch from Martin Buchholz. http://mail.openjdk.java.net/pipermail/core-libs-dev/2009-July/002047.html
author Andrew John Hughes <ahughes@redhat.com>
date Thu, 30 Jul 2009 22:47:00 +0100
parents 051ca564791d
children 18f23e1e3c37
files ChangeLog Makefile.am patches/openjdk/rename-execvpe.patch
diffstat 3 files changed, 52 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Thu Jul 30 04:51:32 2009 -0400
+++ b/ChangeLog	Thu Jul 30 22:47:00 2009 +0100
@@ -1,3 +1,11 @@
+2009-07-30  Andrew John Hughes  <ahughes@redhat.com>
+
+	* Makefile.am:
+	Add new patch.
+	* patches/openjdk/rename-execvpe.patch,
+	Backport execvpe patch from Martin Buchholz.
+	http://mail.openjdk.java.net/pipermail/core-libs-dev/2009-July/002047.html
+	
 2009-07-30  Gary Benson  <gbenson@redhat.com>
 
 	* ports/hotspot/src/share/vm/shark/sharkRuntime.hpp:
--- a/Makefile.am	Thu Jul 30 04:51:32 2009 -0400
+++ b/Makefile.am	Thu Jul 30 22:47:00 2009 +0100
@@ -587,7 +587,8 @@
 	patches/icedtea-pr261.patch \
 	patches/icedtea-doc-headers.patch \
 	patches/openjdk/bidi-tests.patch \
-	patches/openjdk/annotation-tests.patch
+	patches/openjdk/annotation-tests.patch \
+	patches/openjdk/rename-execvpe.patch
 
 if WITH_ALT_HSBUILD
 ICEDTEA_PATCHES += \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/openjdk/rename-execvpe.patch	Thu Jul 30 22:47:00 2009 +0100
@@ -0,0 +1,42 @@
+# HG changeset patch
+# User martin
+# Date 1248923453 25200
+# Node ID 0f6e8cdc0cbab5221e81b7d25f1b869bd6ecf34a
+# Parent  ac4f0c58f4c771267f1b5c65a8cf5bf2722a881b
+[mq]: rename-execvpe
+
+diff --git a/src/solaris/native/java/lang/UNIXProcess_md.c b/src/solaris/native/java/lang/UNIXProcess_md.c
+--- openjdk/jdk/src/solaris/native/java/lang/UNIXProcess_md.c
++++ openjdk/jdk/src/solaris/native/java/lang/UNIXProcess_md.c
+@@ -423,9 +423,20 @@
+     return -1;
+ }
+ 
+-/* execvpe should have been included in the Unix standards. */
++/**
++ * 'execvpe' should have been included in the Unix standards,
++ * and is a GNU extension in glibc 2.10.
++ *
++ * JDK_execvpe is identical to execvp, except that the child environment is
++ * specified via the 3rd argument instead of being inherited from environ.
++ *
++ * This implementation of JDK_execvpe does not work if memory is shared
++ * with the parent, when using vfork(2), or clone(2) with CLONE_VM.
++ */
+ static int
+-execvpe(const char *file, const char *const argv[], const char *const envp[])
++JDK_execvpe(const char *file,
++            const char *const argv[],
++            const char *const envp[])
+ {
+     /* This is one of the rare times it's more portable to declare an
+      * external symbol explicitly, rather than via a system header.
+@@ -601,7 +612,7 @@
+         if (fcntl(FAIL_FILENO, F_SETFD, FD_CLOEXEC) == -1)
+             goto WhyCantJohnnyExec;
+ 
+-        execvpe(argv[0], argv, envv);
++        JDK_execvpe(argv[0], argv, envv);
+ 
+     WhyCantJohnnyExec:
+         /* We used to go to an awful lot of trouble to predict whether the