Mobile JDK 9 Status

Bob Vandette bob.vandette at oracle.com
Thu Jan 21 17:06:28 UTC 2016


> On Jan 21, 2016, at 12:00 PM, Ali Ebrahimi <ali.ebrahimi1781 at gmail.com> wrote:
> 
> Hi Bob,
> Your both workaround works for Hello world app!, but what is actual fix?

The best solution is to set the debugger to pass the signal onto the VM so it can
accurately determine the os support available and allow the VM to use all features
of the processor.   However, in order to reduce the number of questions that I suspect I’ll 
get from developers, we plan on pushing a similar fix to what I sent below once we’ve
had a chance to test it.

Bob.


> 
> On Thu, Jan 21, 2016 at 6:46 PM, Bob Vandette <bob.vandette at oracle.com <mailto:bob.vandette at oracle.com>> wrote:
> Without seeing a stack trace, I can’t tell for sure but when the VM is initializing it
> forces a SEGV in order to verify that the signal handler is saving/restoring the
> high bits of the XMM/YMM registers.
> 
> If you execute this lldb command, it will allow the SEGV to be passed to the VM.
> 
> process handle -s false SIGSEGV
> process handle -s false SIGBUS
> 
> If you don’t want do this, you can try to remove the
> SEGV with this change.  I haven’t tested this but we
> have something similar in our JDK8 sources.
> 
> 
> --- a/src/cpu/x86/vm/vm_version_x86.cpp
> +++ b/src/cpu/x86/vm/vm_version_x86.cpp
> @@ -396,10 +396,12 @@
>      VM_Version::clean_cpuFeatures();
> 
>      __ bind(save_restore_except);
> +#if !TARGET_OS_IPHONE
>      __ xorl(rsi, rsi);
>      VM_Version::set_cpuinfo_segv_addr(__ pc());
>      // Generate SEGV
>      __ movl(rax, Address(rsi, 0));
> +#endif
> 
>      VM_Version::set_cpuinfo_cont_addr(__ pc());
> 
> This only fixes SEGVs forced at startup.
> 
> You are going to have to allow SEGVs to be passed to the
> VM at some point because it’s used for other purposes such
> as NULL Pointer checking and getting the VM to a safepoint.
> 
> Bob.
> 
> 
> 
> > On Jan 21, 2016, at 9:04 AM, Ali Ebrahimi <ali.ebrahimi1781 at gmail.com <mailto:ali.ebrahimi1781 at gmail.com>> wrote:
> >
> > Hi,
> > I followed your instructions and built jdk but I got following error when using result in xcode:
> > "building for ios simulator, but linking in object file built for osx, for architecture"
> >
> > I fix this by adding line for your bash script iOS x86_64:
> > export ASFLAGS='-miphoneos-version-min=8.0'
> >
> > Now I successfully build mobile-jdk.
> >
> > Now when I trying to start java VM from object-c code I get: "signal sigsegv"
> > What is wrong here?
> >
> > I use mac os 10.11 and xcode 7.2
> >
> >
> > On Thu, Jan 21, 2016 at 12:08 AM, Bob Vandette <bob.vandette at oracle.com <mailto:bob.vandette at oracle.com>> wrote:
> > Here are a few updates on the Mobile Dev Repository (http://hg.openjdk.java.net/mobile/dev <http://hg.openjdk.java.net/mobile/dev> <http://hg.openjdk.java.net/mobile/dev <http://hg.openjdk.java.net/mobile/dev>>)
> >
> > The mobile/dev forest was merged a few weeks ago with http://hg.openjdk.java.net/jdk9/dev/ <http://hg.openjdk.java.net/jdk9/dev/> <http://hg.openjdk.java.net/jdk9/dev/ <http://hg.openjdk.java.net/jdk9/dev/>> as of build 98.
> >
> > The Mobile Dev forest is now capable of building both iOS ARM64 and x86_64.
> >
> > I’ve updated the iOS build instructions to include building the libffi and libfreetype libraries
> > as well as a canned set of JDK 9 iOS build instructions to make it easier for developers to
> > get started.
> >
> > http://openjdk.java.net/projects/mobile/ios.html <http://openjdk.java.net/projects/mobile/ios.html> <http://openjdk.java.net/projects/mobile/ios.html <http://openjdk.java.net/projects/mobile/ios.html>>
> >
> > I’ll be working on completing the Android ARM builds and providing more the Android build instructions next.
> >
> > Enjoy,
> > Bob
> >
> >
> >
> >
> >
> > --
> >
> > Best Regards,
> > Ali Ebrahimi
> 
> 
> 
> 
> -- 
> 
> Best Regards,
> Ali Ebrahimi



More information about the mobile-dev mailing list