hadoop-common-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Colin Patrick McCabe (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HADOOP-8659) Native libraries must build with soft-float ABI for Oracle JVM on ARM
Date Mon, 13 Aug 2012 17:06:38 GMT

    [ https://issues.apache.org/jira/browse/HADOOP-8659?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13433302#comment-13433302
] 

Colin Patrick McCabe commented on HADOOP-8659:
----------------------------------------------

So the build issue here is basically a re-introduction of HADOOP-8489.

The issue is that when you do a 32-bit compile on a 64-bit machine, with both 32 and 64-bit
JVM libraries in your path, you need to make sure you choose the 32-bit JVM libraries.  The
way we do this is by setting {{CMAKE_SYSTEM_PROCESOR}}.  However, you must do this *before*
{{find_package(JNI REQUIRED)}}; otherwise, the 64-bit libraries will be found and used, which
results in a linker error when you try to link them with the code which was compiled with
{{-m32}}.
                
> Native libraries must build with soft-float ABI for Oracle JVM on ARM
> ---------------------------------------------------------------------
>
>                 Key: HADOOP-8659
>                 URL: https://issues.apache.org/jira/browse/HADOOP-8659
>             Project: Hadoop Common
>          Issue Type: Bug
>          Components: native
>         Environment: armhf Linux with Oracle JVM
>            Reporter: Trevor Robinson
>            Assignee: Trevor Robinson
>             Fix For: 3.0.0, 2.2.0-alpha
>
>         Attachments: HADOOP-8659-fix-001.patch, HADOOP-8659.patch, HADOOP-8659.patch,
HADOOP-8659.patch, HADOOP-8659.patch
>
>
> There was recently an ABI (application binary interface) change in most Linux distributions
for modern ARM processors (ARMv7). Historically, hardware floating-point (FP) support was
optional/vendor-specific for ARM processors, so for software compatibility, the default ABI
required that processors with FP units copy FP arguments into integer registers (or memory)
when calling a shared library function. Now that hardware floating-point has been standardized
for some time, Linux distributions such as Ubuntu 12.04 have changed the default ABI to leave
FP arguments in FP registers, since this can significantly improve performance for FP libraries.
> Unfortunately, Oracle has not yet released a JVM (as of 7u4) that supports the new ABI,
presumably since this involves some non-trivial changes to components like JNI. While the
soft-float JVM can run on systems with multi-arch support (currently Debian/Ubuntu) using
compatibility libraries, this configuration requires that any third-party JNI libraries also
be compiled using the soft-float ABI. Since hard-float systems default to compiling for hard-float,
an extra argument to GCC (and installation of a compatibility library) is required to build
soft-float Hadoop native libraries that work with the Oracle JVM.
> Note that OpenJDK on hard-float systems does use the new ABI, and expects JNI libraries
to use it as well. Therefore the fix for this issue requires detecting the float ABI of the
current JVM.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message