RFR: JDK-8214063: OpenJDK will not build on AIX while using the xlc 13.1 compiler

Thomas Stüfe thomas.stuefe at gmail.com
Tue Nov 20 16:44:07 UTC 2018


Hi Adam,

On Tue, Nov 20, 2018 at 5:12 PM Adam Farley8 <adam.farley at uk.ibm.com> wrote:
>
> Hi Tom,
>
> Sounds reasonable. I've added a webex to the bug, and here's a link to the bug.
>
> https://bugs.openjdk.java.net/browse/JDK-8214063
>
> This patch is required because otherwise, when building on AIX using xlc 3.1,
> the build fails with this error:
>
> "Visibility is not allowed on a reference to an imported symbol."
>
> We believe this is caused by JNIEXPORT and JNIIMPORT not being defined. Without
> this, almost no symbols are exported from shared libraries due to use of
> -qvisibility=hidden as specified in make/lib/LibCommon.gmk.

Yes but what I try to understand is why does this happen now with
xlc13? Did xlc change the rules for -qvisibility from v12 to v13 ?
That would be quite a break in backward compatibility.

>
> For convenience, here's a summary of the diffs:
>
> --------------------------------------
> File 1 of 2) src/java.base/share/native/libjimage/NativeImageBuffer.cpp
>
>  #include "osSupport.hpp"
>
> +#if defined(__xlC__) && (__xlC__ >= 0x0d01)
> +/*
> + * Version 13.1.3 of xlc seems to have trouble parsing the `__attribute__`
> + * annotation in the generated header file we're about to include. Repeating
> + * the forward declaration (without the braces) here avoids the diagnostic:
> + *   1540-0040 (S) The text "void" is unexpected.  "visibility" may be undeclared or ambiguous.
> + */
> +extern "C" JNIEXPORT jobject JNICALL Java_jdk_internal_jimage_NativeImageBuffer_getNativeMap(JNIEnv *, jclass, jstring);
> +#endif
> +
> #include "jdk_internal_jimage_NativeImageBuffer.h"
> --------------------------------------
> File 2 of 2) src/java.base/unix/native/include/jni_md.h
>
>      #define JNIIMPORT     __attribute__((visibility("default")))
>   #endif
> +#elif defined(__xlC__) && (__xlC__ >= 0x0d01) /* xlc version 13.1 or better required */
> +  #define JNIEXPORT       __attribute__((visibility("default")))
> +  #define JNIIMPORT       __attribute__((visibility("default")))
> #else
>   #define JNIEXPORT
> --------------------------------------
>

Thank you.

Cheers, Thomas

> Best Regards
>
> Adam Farley
> IBM Runtimes
>
>
> "Thomas Stüfe" <thomas.stuefe at gmail.com> wrote on 19/11/2018 18:11:34:
>
> > From: "Thomas Stüfe" <thomas.stuefe at gmail.com>
> > To: Adam Farley8 <adam.farley at uk.ibm.com>
> > Cc: Java Core Libs <core-libs-dev at openjdk.java.net>
> > Date: 19/11/2018 18:12
> > Subject: Re: RFR: JDK-8214063: OpenJDK will not build on AIX while
> > using the xlc 13.1 compiler
> >
> > Hi Adam,
> >
> > could you please include link to the JBS issue and either link to the
> > patch/webrev or link to the webrev, or at the very least the patch
> > verbatim?
> >
> > As for the issue itself: could you please elaborate why this fails with xlc13?
> >
> > Also, a real patch would be helpful instead here of yet another link
> > to some J9 issue. We are really strapped for manpower and the AIX port
> > eats up enough time as it is.
> >
> > Thanks, Thomas
> >
> > On Mon, Nov 19, 2018 at 6:28 PM Adam Farley8 <adam.farley at uk.ibm.com> wrote:
> > >
> > > Hi All
> > >
> > > Both the problem and the solution appear straight-forward enough.
> > >
> > > Details included in the bug description.
> > >
> > > Thoughts and opinions welcome.
> > >
> > > Best Regards
> > >
> > > Adam Farley
> > > IBM Runtimes
> > >
> > > Unless stated otherwise above:
> > > IBM United Kingdom Limited - Registered in England and Wales with number
> > > 741598.
> > > Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU
> >
>
> Unless stated otherwise above:
> IBM United Kingdom Limited - Registered in England and Wales with number 741598.
> Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU


More information about the core-libs-dev mailing list