src/java.base/unix/native/libjli/java_md_solinux.c
changeset 54023 a764c49570c6
parent 53941 f9302cf718c9
child 58280 ef8c8cf9256a
--- a/src/java.base/unix/native/libjli/java_md_solinux.c	Thu Mar 07 15:27:42 2019 +0100
+++ b/src/java.base/unix/native/libjli/java_md_solinux.c	Thu Mar 07 10:18:23 2019 -0800
@@ -303,6 +303,9 @@
 
 #ifdef SETENV_REQUIRED
     jboolean mustsetenv = JNI_FALSE;
+#ifdef __solaris__
+    char *llp64 = NULL; /* existing LD_LIBRARY_PATH_64 setting */
+#endif // __solaris__
     char *runpath = NULL; /* existing effective LD_LIBRARY_PATH setting */
     char* new_runpath = NULL; /* desired new LD_LIBRARY_PATH string */
     char* newpath = NULL; /* path on new LD_LIBRARY_PATH */
@@ -367,7 +370,12 @@
          * any.
          */
 
+#ifdef __solaris__
+        llp64 = getenv("LD_LIBRARY_PATH_64");
+        runpath = (llp64 == NULL) ? getenv(LD_LIBRARY_PATH) : llp64;
+#else
         runpath = getenv(LD_LIBRARY_PATH);
+#endif /* __solaris__ */
 
         /* runpath contains current effective LD_LIBRARY_PATH setting */
         { /* New scope to declare local variable */
@@ -440,6 +448,14 @@
          * once at startup, so we have to re-exec the current executable
          * to get the changed environment variable to have an effect.
          */
+#ifdef __solaris__
+        /*
+         * new LD_LIBRARY_PATH took over for LD_LIBRARY_PATH_64
+         */
+        if (llp64 != NULL) {
+            UnsetEnv("LD_LIBRARY_PATH_64");
+        }
+#endif // __solaris__
 
         newenvp = environ;
     }