summaryrefslogtreecommitdiff
path: root/java/openjdk7/files/patch-src-solaris-bin-java_md_solinux.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--java/openjdk7/files/patch-src-solaris-bin-java_md_solinux.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/java/openjdk7/files/patch-src-solaris-bin-java_md_solinux.c b/java/openjdk7/files/patch-src-solaris-bin-java_md_solinux.c
new file mode 100644
index 000000000000..1d6b67c99987
--- /dev/null
+++ b/java/openjdk7/files/patch-src-solaris-bin-java_md_solinux.c
@@ -0,0 +1,38 @@
+--- jdk/src/solaris/bin/java_md_solinux.c
++++ jdk/src/solaris/bin/java_md_solinux.c
+@@ -899,8 +899,9 @@
+ * onwards the filename returned in DL_info structure from dladdr is
+ * an absolute pathname so technically realpath isn't required.
+ * On Linux we read the executable name from /proc/self/exe.
+- * As a fallback, and for platforms other than Solaris and Linux,
+- * we use FindExecName to compute the executable name.
++ * On FreeBSD we read the executable name from /proc/curproc/file.
++ * As a fallback, and for platforms other than Solaris, Linux, and
++ * FreeBSD, we use FindExecName to compute the executable name.
+ */
+ const char*
+ SetExecname(char **argv)
+@@ -927,9 +928,13 @@
+ }
+ }
+ }
+-#elif defined(__linux__)
++#elif defined(__linux__) || defined(__FreeBSD__)
+ {
++#if defined(__FreeBSD__)
++ const char* self = "/proc/curproc/file";
++#else
+ const char* self = "/proc/self/exe";
++#endif
+ char buf[PATH_MAX+1];
+ int len = readlink(self, buf, PATH_MAX);
+ if (len >= 0) {
+@@ -937,7 +942,7 @@
+ exec_path = JLI_StringDup(buf);
+ }
+ }
+-#else /* !__solaris__ && !__linux__ */
++#else /* !__solaris__ && !__linux__ && !__FreeBSD__ */
+ {
+ /* Not implemented */
+ }