Zero and native support on linux-ia64

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Zero and native support on linux-ia64

John Paul Adrian Glaubitz
Hi!

I am currently playing around with OpenJDK Zero on ia64 and notice that there
is some ia64-specific code left at least in OpenJDK 8 which was subsequently
removed in later versions.

So, I am wondering, did OpenJDK have native support for ia64 at some point or
was this all needed for Zero? I know that ia64 has some weird peculiarities
and was wondering whether it's still possible to build Zero here.

I'm not interested in a native port, I just want to keep Zero as portable
as possible and we just recently got an old HP Itanium blade to fool
around with, so I naturally tried to build Zero there :-).

Thanks,
Adrian

--
 .''`.  John Paul Adrian Glaubitz
: :' :  Debian Developer - [hidden email]
`. `'   Freie Universitaet Berlin - [hidden email]
  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913
Reply | Threaded
Open this post in threaded view
|

Re: Zero and native support on linux-ia64

Andrew Haley
On 23/12/17 11:44, John Paul Adrian Glaubitz wrote:
> So, I am wondering, did OpenJDK have native support for ia64 at some point or
> was this all needed for Zero? I know that ia64 has some weird peculiarities
> and was wondering whether it's still possible to build Zero here.

There was native support for ia64, but it never made it into OpenJDK.  You'd
have to see if Zero still builds.

--
Andrew Haley
Java Platform Lead Engineer
Red Hat UK Ltd. <https://www.redhat.com>
EAC8 43EB D3EF DB98 CC77 2FAD A5CD 6035 332F A671
Reply | Threaded
Open this post in threaded view
|

Re: Zero and native support on linux-ia64

John Paul Adrian Glaubitz
On 12/23/2017 05:00 PM, Andrew Haley wrote:
> On 23/12/17 11:44, John Paul Adrian Glaubitz wrote:
>> So, I am wondering, did OpenJDK have native support for ia64 at some point or
>> was this all needed for Zero? I know that ia64 has some weird peculiarities
>> and was wondering whether it's still possible to build Zero here.
>
> There was native support for ia64, but it never made it into OpenJDK.  You'd
> have to see if Zero still builds.

Ok, thanks! I did manage to build Openjdk-8 using existing OpenJDK-7 binaries
from Debian Wheezy. However, the JVM crashes. My suspicion - I haven't done any
in-depth analysis yet - is that there are remnants of the native ia64 support
that were compiled in for this build and therefore resulted in the crash.

I also noticed that OpenJDK-10 has received more clean-up regarding the native
support and I suppose that only the necessary #ifdefs for Zero on ia64 are
left such as the one in [1]. However, since I haven't tried cross-compiling
OpenJDK yet, I had to start with OpenJDK-8 instead of 10.

The backtrace of the crash is below in any case.

(wheezy-backports_ia64-dchroot)glaubitz@titanium:~/debian/openjdk-8/openjdk-8-8u151-b12/build/jdk/bin$ gdb ./javac
GNU gdb (GDB) 7.4.1-debian
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "ia64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/glaubitz/debian/openjdk-8/openjdk-8-8u151-b12/build/jdk/bin/javac...done.
(gdb) r
Starting program: /home/glaubitz/debian/openjdk-8/openjdk-8-8u151-b12/build/jdk/bin/javac
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/ia64-linux-gnu/libthread_db.so.1".
[New Thread 0x2000000001627200 (LWP 1627)]

Program received signal SIGILL, Illegal instruction.
[Switching to Thread 0x2000000001627200 (LWP 1627)]
0x2000000000a328b1 in java_lang_String::compute_offsets () at
/home/glaubitz/debian/openjdk-8/openjdk-8-8u151-b12/src/hotspot/src/share/vm/classfile/javaClasses.cpp:152
152     void java_lang_String::compute_offsets() {
(gdb) bt
#0  0x2000000000a328b1 in java_lang_String::compute_offsets ()
    at /home/glaubitz/debian/openjdk-8/openjdk-8-8u151-b12/src/hotspot/src/share/vm/classfile/javaClasses.cpp:152
#1  0x2000000000ee4b70 in SystemDictionary::initialize_preloaded_classes (__the_thread__=0x60000000000116c0)
    at /home/glaubitz/debian/openjdk-8/openjdk-8-8u151-b12/src/hotspot/src/share/vm/classfile/systemDictionary.cpp:1902
#2  0x2000000000f24bd0 in Universe::genesis (__the_thread__=0x60000000000116c0)
    at /home/glaubitz/debian/openjdk-8/openjdk-8-8u151-b12/src/hotspot/src/share/vm/memory/universe.cpp:302
#3  0x2000000000f281d0 in universe2_init () at /home/glaubitz/debian/openjdk-8/openjdk-8-8u151-b12/src/hotspot/src/share/vm/memory/universe.cpp:1021
#4  0x2000000000965a80 in init_globals () at /home/glaubitz/debian/openjdk-8/openjdk-8-8u151-b12/src/hotspot/src/share/vm/runtime/init.cpp:116
#5  0x2000000000f046d0 in Threads::create_vm (args=0x20000000016267d0, canTryAgain=0x20000000016267b0)
    at /home/glaubitz/debian/openjdk-8/openjdk-8-8u151-b12/src/hotspot/src/share/vm/runtime/thread.cpp:3421
#6  0x2000000000a70a20 in JNI_CreateJavaVM (vm=0x2000000001626808, penv=0x2000000001626800, args=0x20000000016267d0)
    at /home/glaubitz/debian/openjdk-8/openjdk-8-8u151-b12/src/hotspot/src/share/vm/prims/jni.cpp:5220
#7  0x20000000000d43f0 in InitializeJVM (ifn=<optimized out>, penv=<optimized out>, pvm=<optimized out>)
    at /home/glaubitz/debian/openjdk-8/openjdk-8-8u151-b12/src/jdk/src/share/bin/java.c:1215
#8  JavaMain (_args=0x60000fffffff73f0) at /home/glaubitz/debian/openjdk-8/openjdk-8-8u151-b12/src/jdk/src/share/bin/java.c:376
#9  0x20000000000de910 in call_continuation (_args=0x60000fffffff73c8)
    at /home/glaubitz/debian/openjdk-8/openjdk-8-8u151-b12/src/jdk/src/solaris/bin/java_md_solinux.c:1034
#10 0x200000000005ebb0 in start_thread () from /lib/ia64-linux-gnu/libpthread.so.0
#11 0x20000000002c98c0 in __clone2 () from /lib/ia64-linux-gnu/libc.so.6.1
#12 0x0000000000000000 in ?? ()
(gdb)

Adrian

> [1] http://hg.openjdk.java.net/jdk/hs/file/614068b0ddd7/src/hotspot/os_cpu/linux_zero/os_linux_zero.cpp#l356

--
 .''`.  John Paul Adrian Glaubitz
: :' :  Debian Developer - [hidden email]
`. `'   Freie Universitaet Berlin - [hidden email]
  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913
Reply | Threaded
Open this post in threaded view
|

Re: Zero and native support on linux-ia64

David Holmes
On 24/12/2017 5:14 AM, John Paul Adrian Glaubitz wrote:

> On 12/23/2017 05:00 PM, Andrew Haley wrote:
>> On 23/12/17 11:44, John Paul Adrian Glaubitz wrote:
>>> So, I am wondering, did OpenJDK have native support for ia64 at some point or
>>> was this all needed for Zero? I know that ia64 has some weird peculiarities
>>> and was wondering whether it's still possible to build Zero here.
>>
>> There was native support for ia64, but it never made it into OpenJDK.  You'd
>> have to see if Zero still builds.
>
> Ok, thanks! I did manage to build Openjdk-8 using existing OpenJDK-7 binaries
> from Debian Wheezy. However, the JVM crashes. My suspicion - I haven't done any
> in-depth analysis yet - is that there are remnants of the native ia64 support
> that were compiled in for this build and therefore resulted in the crash.

Quite possible. As Andrew notes the IA64 code in the mainline predates
OpenJDK and was never a supported platform in OpenJDK, but some
licensees still used it. It took a while to get around to removing it
from the OpenJDK codebase - except IIRC we tried not to touch Zero as
Zero deals with architectures the rest of the code doesn't need to know
about. So we may have left in unneeded code.

Cheers,
David

> I also noticed that OpenJDK-10 has received more clean-up regarding the native
> support and I suppose that only the necessary #ifdefs for Zero on ia64 are
> left such as the one in [1]. However, since I haven't tried cross-compiling
> OpenJDK yet, I had to start with OpenJDK-8 instead of 10.
>
> The backtrace of the crash is below in any case.
>
> (wheezy-backports_ia64-dchroot)glaubitz@titanium:~/debian/openjdk-8/openjdk-8-8u151-b12/build/jdk/bin$ gdb ./javac
> GNU gdb (GDB) 7.4.1-debian
> Copyright (C) 2012 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
> and "show warranty" for details.
> This GDB was configured as "ia64-linux-gnu".
> For bug reporting instructions, please see:
> <http://www.gnu.org/software/gdb/bugs/>...
> Reading symbols from /home/glaubitz/debian/openjdk-8/openjdk-8-8u151-b12/build/jdk/bin/javac...done.
> (gdb) r
> Starting program: /home/glaubitz/debian/openjdk-8/openjdk-8-8u151-b12/build/jdk/bin/javac
> [Thread debugging using libthread_db enabled]
> Using host libthread_db library "/lib/ia64-linux-gnu/libthread_db.so.1".
> [New Thread 0x2000000001627200 (LWP 1627)]
>
> Program received signal SIGILL, Illegal instruction.
> [Switching to Thread 0x2000000001627200 (LWP 1627)]
> 0x2000000000a328b1 in java_lang_String::compute_offsets () at
> /home/glaubitz/debian/openjdk-8/openjdk-8-8u151-b12/src/hotspot/src/share/vm/classfile/javaClasses.cpp:152
> 152     void java_lang_String::compute_offsets() {
> (gdb) bt
> #0  0x2000000000a328b1 in java_lang_String::compute_offsets ()
>      at /home/glaubitz/debian/openjdk-8/openjdk-8-8u151-b12/src/hotspot/src/share/vm/classfile/javaClasses.cpp:152
> #1  0x2000000000ee4b70 in SystemDictionary::initialize_preloaded_classes (__the_thread__=0x60000000000116c0)
>      at /home/glaubitz/debian/openjdk-8/openjdk-8-8u151-b12/src/hotspot/src/share/vm/classfile/systemDictionary.cpp:1902
> #2  0x2000000000f24bd0 in Universe::genesis (__the_thread__=0x60000000000116c0)
>      at /home/glaubitz/debian/openjdk-8/openjdk-8-8u151-b12/src/hotspot/src/share/vm/memory/universe.cpp:302
> #3  0x2000000000f281d0 in universe2_init () at /home/glaubitz/debian/openjdk-8/openjdk-8-8u151-b12/src/hotspot/src/share/vm/memory/universe.cpp:1021
> #4  0x2000000000965a80 in init_globals () at /home/glaubitz/debian/openjdk-8/openjdk-8-8u151-b12/src/hotspot/src/share/vm/runtime/init.cpp:116
> #5  0x2000000000f046d0 in Threads::create_vm (args=0x20000000016267d0, canTryAgain=0x20000000016267b0)
>      at /home/glaubitz/debian/openjdk-8/openjdk-8-8u151-b12/src/hotspot/src/share/vm/runtime/thread.cpp:3421
> #6  0x2000000000a70a20 in JNI_CreateJavaVM (vm=0x2000000001626808, penv=0x2000000001626800, args=0x20000000016267d0)
>      at /home/glaubitz/debian/openjdk-8/openjdk-8-8u151-b12/src/hotspot/src/share/vm/prims/jni.cpp:5220
> #7  0x20000000000d43f0 in InitializeJVM (ifn=<optimized out>, penv=<optimized out>, pvm=<optimized out>)
>      at /home/glaubitz/debian/openjdk-8/openjdk-8-8u151-b12/src/jdk/src/share/bin/java.c:1215
> #8  JavaMain (_args=0x60000fffffff73f0) at /home/glaubitz/debian/openjdk-8/openjdk-8-8u151-b12/src/jdk/src/share/bin/java.c:376
> #9  0x20000000000de910 in call_continuation (_args=0x60000fffffff73c8)
>      at /home/glaubitz/debian/openjdk-8/openjdk-8-8u151-b12/src/jdk/src/solaris/bin/java_md_solinux.c:1034
> #10 0x200000000005ebb0 in start_thread () from /lib/ia64-linux-gnu/libpthread.so.0
> #11 0x20000000002c98c0 in __clone2 () from /lib/ia64-linux-gnu/libc.so.6.1
> #12 0x0000000000000000 in ?? ()
> (gdb)
>
> Adrian
>
>> [1] http://hg.openjdk.java.net/jdk/hs/file/614068b0ddd7/src/hotspot/os_cpu/linux_zero/os_linux_zero.cpp#l356
>