aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPiotr Kubaj <pkubaj@FreeBSD.org>2024-04-11 22:40:49 +0000
committerPiotr Kubaj <pkubaj@FreeBSD.org>2024-04-11 22:40:49 +0000
commit36ac8327c05281fb00a570b9b5141ce7e85792ff (patch)
tree8904e4cd95d9dd98d24e1891aece49b3ef2288bd
parent21b6b8fd22ff802d2bdc97dd81aae632ab22ee55 (diff)
downloadports-36ac8327c05281fb00a570b9b5141ce7e85792ff.tar.gz
ports-36ac8327c05281fb00a570b9b5141ce7e85792ff.zip
java/openjdk22: fix build on powerpc64*
Error: failed /wrkdirs/usr/ports/java/openjdk22/work/jdk22-jdk-22-36-1/build/bsd-ppc64le-server-release/jdk/lib/server/libjvm.so, because /wrkdirs/usr/ports/java/openjdk22/work/jdk22-jdk-22-36-1/build/bsd-ppc64le-server-release/jdk/lib/server/libjvm.so: Undefined symbol "_ZN2os27current_stack_base_and_sizeEPPhPm"
-rw-r--r--java/openjdk22/files/patch-src_hotspot_os__cpu_bsd__ppc_os__bsd__ppc.cpp44
1 files changed, 44 insertions, 0 deletions
diff --git a/java/openjdk22/files/patch-src_hotspot_os__cpu_bsd__ppc_os__bsd__ppc.cpp b/java/openjdk22/files/patch-src_hotspot_os__cpu_bsd__ppc_os__bsd__ppc.cpp
new file mode 100644
index 000000000000..dda6fd26cce0
--- /dev/null
+++ b/java/openjdk22/files/patch-src_hotspot_os__cpu_bsd__ppc_os__bsd__ppc.cpp
@@ -0,0 +1,44 @@
+--- src/hotspot/os_cpu/bsd_ppc/os_bsd_ppc.cpp.orig 2024-04-11 22:23:08 UTC
++++ src/hotspot/os_cpu/bsd_ppc/os_bsd_ppc.cpp
+@@ -61,6 +61,7 @@
+ # include <sys/types.h>
+ # include <sys/mman.h>
+ # include <pthread.h>
++# include <pthread_np.h>
+ # include <signal.h>
+ # include <errno.h>
+ # include <dlfcn.h>
+@@ -432,6 +433,33 @@ size_t os::Posix::default_stack_size(os::ThreadType th
+ // Default stack size (compiler thread needs larger stack).
+ size_t s = (thr_type == os::compiler_thread ? 4 * M : 1024 * K);
+ return s;
++}
++
++void os::current_stack_base_and_size(address* base, size_t* size) {
++ address bottom;
++ pthread_attr_t attr;
++
++ int rslt = pthread_attr_init(&attr);
++
++ // JVM needs to know exact stack location, abort if it fails
++ if (rslt != 0)
++ fatal("pthread_attr_init failed with error = %d", rslt);
++
++ rslt = pthread_attr_get_np(pthread_self(), &attr);
++
++ if (rslt != 0)
++ fatal("pthread_attr_get_np failed with error = %d", rslt);
++
++ if (pthread_attr_getstackaddr(&attr, (void **)&bottom) != 0 ||
++ pthread_attr_getstacksize(&attr, size) != 0) {
++ fatal("Can not locate current stack attributes!");
++ }
++
++ *base = bottom + *size;
++
++ pthread_attr_destroy(&attr);
++ assert(os::current_stack_pointer() >= bottom &&
++ os::current_stack_pointer() < *base, "just checking");
+ }
+
+ /////////////////////////////////////////////////////////////////////////////