← Back to team overview

openjdk team mailing list archive

Bug#864464: openjdk-9: Please drop armel from hotspot_archs

 

On 06/11/2017 10:16 PM, John Paul Adrian Glaubitz wrote:
> On 06/10/2017 10:24 AM, peter green wrote:
>> From some googling it seems that PLD is just a cache hint instruction, so afaict it
>> should be ok just to ifdef it out when building for CPUs that don't support it.
> 
> I gave it a short (patches for disabling "bkpt" and "pld" attached), but ran into
> yet another problem with an unresolvable linker symbol:

Which is actually a known problem upstream, see [1], and fixed by the attached patch.

The JVM then fully builds without any problems, but then bails out with:

/home/glaubitz/openjdk-9/openjdk-9-9~b170/build/jdk/bin/java -Xms64M -Xmx1024M -XX:ThreadStackSize=768 -XX:+UseSerialGC -Xms32M -Xmx512M -XX:TieredStopAtLevel=1
-cp /home/glaubitz/openjdk-9/openjdk-9-9~b170/build/buildtools/tools_jigsaw_classes --add-exports java.base/jdk.internal.module=ALL-UNNAMED
build.tools.jigsaw.AddPackagesAttribute /home/glaubitz/openjdk-9/openjdk-9-9~b170/build/jdk
Error occurred during initialization of VM
Server VM is only supported on ARMv7+ VFP
ExplodedImageOptimize.gmk:40: recipe for target '/home/glaubitz/openjdk-9/openjdk-9-9~b170/build/jdk/_packages_attribute.done' failed
make[4]: Leaving directory '/home/glaubitz/openjdk-9/openjdk-9-9~b170/src/make'
make[4]: *** [/home/glaubitz/openjdk-9/openjdk-9-9~b170/build/jdk/_packages_attribute.done] Error 1
make[3]: *** [exploded-image-optimize] Error 2
make/Main.gmk:356: recipe for target 'exploded-image-optimize' failed
make[3]: Leaving directory '/home/glaubitz/openjdk-9/openjdk-9-9~b170/src'

ERROR: Build failed for target 'images' in configuration '/home/glaubitz/openjdk-9/openjdk-9-9~b170/build' (exit code 2)
make[3]: Entering directory '/home/glaubitz/openjdk-9/openjdk-9-9~b170/src'

I can try to disable this particular check and see if that yields a working JVM.

Adrian

> [1] http://mail.openjdk.java.net/pipermail/aarch32-port-dev/2016-November/000610.html

-- 
 .''`.  John Paul Adrian Glaubitz
: :' :  Debian Developer - glaubitz@xxxxxxxxxx
`. `'   Freie Universitaet Berlin - glaubitz@xxxxxxxxxxxxxxxxxxx
  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913
--- a/hotspot/src/cpu/arm/vm/c1_LIRGenerator_arm.cpp~	2017-05-11 15:11:42.000000000 +0300
+++ b/hotspot/src/cpu/arm/vm/c1_LIRGenerator_arm.cpp	2017-06-13 15:22:05.384000000 +0300
@@ -702,25 +702,25 @@
       // __aeabi_XXXX_glibc: Imported code from glibc soft-fp bundle for calculation accuracy improvement. See CR 6757269.
 
     case Bytecodes::_fadd:
-      runtime_func = CAST_FROM_FN_PTR(address, __aeabi_fadd_glibc);
+      runtime_func = CAST_FROM_FN_PTR(address, __aeabi_fadd);
       break;
     case Bytecodes::_fmul:
       runtime_func = CAST_FROM_FN_PTR(address, __aeabi_fmul);
       break;
     case Bytecodes::_fsub:
-      runtime_func = CAST_FROM_FN_PTR(address, __aeabi_fsub_glibc);
+      runtime_func = CAST_FROM_FN_PTR(address, __aeabi_fsub);
       break;
     case Bytecodes::_fdiv:
       runtime_func = CAST_FROM_FN_PTR(address, __aeabi_fdiv);
       break;
     case Bytecodes::_dadd:
-      runtime_func = CAST_FROM_FN_PTR(address, __aeabi_dadd_glibc);
+      runtime_func = CAST_FROM_FN_PTR(address, __aeabi_dadd);
       break;
     case Bytecodes::_dmul:
       runtime_func = CAST_FROM_FN_PTR(address, __aeabi_dmul);
       break;
     case Bytecodes::_dsub:
-      runtime_func = CAST_FROM_FN_PTR(address, __aeabi_dsub_glibc);
+      runtime_func = CAST_FROM_FN_PTR(address, __aeabi_dsub);
       break;
     case Bytecodes::_ddiv:
       runtime_func = CAST_FROM_FN_PTR(address, __aeabi_ddiv);
--- a/hotspot/src/cpu/arm/vm/c1_Runtime1_arm.cpp~	2017-05-11 15:11:42.000000000 +0300
+++ b/hotspot/src/cpu/arm/vm/c1_Runtime1_arm.cpp	2017-06-13 15:26:04.660000000 +0300
@@ -1178,15 +1178,15 @@
 #define FUNCTION_CASE(a, f) \
   if ((intptr_t)a == CAST_FROM_FN_PTR(intptr_t, f))  return #f
 
-  FUNCTION_CASE(entry, __aeabi_fadd_glibc);
+  FUNCTION_CASE(entry, __aeabi_fadd);
   FUNCTION_CASE(entry, __aeabi_fmul);
-  FUNCTION_CASE(entry, __aeabi_fsub_glibc);
+  FUNCTION_CASE(entry, __aeabi_fsub);
   FUNCTION_CASE(entry, __aeabi_fdiv);
 
-  // __aeabi_XXXX_glibc: Imported code from glibc soft-fp bundle for calculation accuracy improvement. See CR 6757269.
-  FUNCTION_CASE(entry, __aeabi_dadd_glibc);
+  // __aeabi_XXXX: Imported code from glibc soft-fp bundle for calculation accuracy improvement. See CR 6757269.
+  FUNCTION_CASE(entry, __aeabi_dadd);
   FUNCTION_CASE(entry, __aeabi_dmul);
-  FUNCTION_CASE(entry, __aeabi_dsub_glibc);
+  FUNCTION_CASE(entry, __aeabi_dsub);
   FUNCTION_CASE(entry, __aeabi_ddiv);
 
   FUNCTION_CASE(entry, __aeabi_f2d);
--- a/hotspot/src/cpu/arm/vm/assembler_arm_32.hpp~	2017-05-11 12:11:42.000000000 +0000
+++ b/hotspot/src/cpu/arm/vm/assembler_arm_32.hpp	2017-06-13 14:05:01.609304494 +0000
@@ -1232,12 +1232,6 @@
 extern int  __aeabi_dcmpge(double, double);
 extern int  __aeabi_dcmpgt(double, double);
 
-// Imported code from glibc soft-fp bundle for
-// calculation accuracy improvement. See CR 6757269.
-extern double __aeabi_fadd_glibc(float, float);
-extern double __aeabi_fsub_glibc(float, float);
-extern double __aeabi_dadd_glibc(double, double);
-extern double __aeabi_dsub_glibc(double, double);
 };
 #endif // __SOFTFP__
 
--- a/hotspot/src/cpu/arm/vm/templateTable_arm.cpp~	2017-05-11 12:11:42.000000000 +0000
+++ b/hotspot/src/cpu/arm/vm/templateTable_arm.cpp	2017-06-13 15:02:58.020857807 +0000
@@ -1712,8 +1712,8 @@
   __ mov(R1, R0_tos);
   __ pop_i(R0);
   switch (op) {
-    case add: __ call_VM_leaf(CAST_FROM_FN_PTR(address, __aeabi_fadd_glibc), R0, R1); break;
-    case sub: __ call_VM_leaf(CAST_FROM_FN_PTR(address, __aeabi_fsub_glibc), R0, R1); break;
+    case add: __ call_VM_leaf(CAST_FROM_FN_PTR(address, __aeabi_fadd), R0, R1); break;
+    case sub: __ call_VM_leaf(CAST_FROM_FN_PTR(address, __aeabi_fsub), R0, R1); break;
     case mul: __ call_VM_leaf(CAST_FROM_FN_PTR(address, __aeabi_fmul), R0, R1); break;
     case div: __ call_VM_leaf(CAST_FROM_FN_PTR(address, __aeabi_fdiv), R0, R1); break;
     case rem: __ call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::frem), R0, R1); break;
@@ -1755,8 +1755,8 @@
   __ pop_l(R0, R1);
   switch (op) {
     // __aeabi_XXXX_glibc: Imported code from glibc soft-fp bundle for calculation accuracy improvement. See CR 6757269.
-    case add: __ call_VM_leaf(CAST_FROM_FN_PTR(address, __aeabi_dadd_glibc), R0, R1, R2, R3); break;
-    case sub: __ call_VM_leaf(CAST_FROM_FN_PTR(address, __aeabi_dsub_glibc), R0, R1, R2, R3); break;
+    case add: __ call_VM_leaf(CAST_FROM_FN_PTR(address, __aeabi_dadd), R0, R1, R2, R3); break;
+    case sub: __ call_VM_leaf(CAST_FROM_FN_PTR(address, __aeabi_dsub), R0, R1, R2, R3); break;
     case mul: __ call_VM_leaf(CAST_FROM_FN_PTR(address, __aeabi_dmul), R0, R1, R2, R3); break;
     case div: __ call_VM_leaf(CAST_FROM_FN_PTR(address, __aeabi_ddiv), R0, R1, R2, R3); break;
     case rem: __ call_VM_leaf(CAST_FROM_FN_PTR(address, SharedRuntime::drem), R0, R1, R2, R3); break;

References