On 2018-11-20 18:50, Volker Simonis wrote:
On Tue, Nov 20, 2018 at 6:15 PM Thomas Stüfe <thomas.stu...@gmail.com> wrote:
On Tue, Nov 20, 2018 at 6:12 PM Adam Farley8 <adam.far...@uk.ibm.com> wrote:
Heya Tom,

"In JDK11 and JDK12, source files are compiled with -qvisibility=hidden
when using xlc version other than 12.1. That doesn't seem to play well
with link option -bexpall. "

Found that buried in one of the associated Git issues. It appears that
it's OpenJDK's use of that option that's causing the problem, though
I couldn't speculate as to why it was added in the first place.

I see this has also been noted in 
https://bugs.openjdk.java.net/browse/JDK-8204541

Does that answer your question?

Yes, Thank you. Odd. Will have to do archeology on that one.

No I begin to understand the problem as well :)

It was actually change "8202322: AIX: symbol visibility flags not
support on xlc 12.1" [1] which introduced "-qvisibility=hidden" for
XLC version not equal to 12.1. That's kind of a weak check and I
suppose nobody has ever tested this change with an XLC version other
than 12.1 (until you came along :). Maybe that check should be a more
precisly check for >= 13.1 (but I know such version checks are hard to
do in Makefile syntax)?
In configure (where, ideally, all version checks should be made), there's the TOOLCHAIN_CHECK_COMPILER_VERSION function, which supports # IF_AT_LEAST: block to run if the compiler is at least this version (>=) # IF_OLDER_THAN: block to run if the compiler is older than this version (<)
for normal, dot-separated version number schemes.

/Magnus


The thing I don't understand about your patch (the changes in
"jni_md.h" look good although I haven't tested them) is why you need
the extra changes in NativeImageBuffer.cpp?
"jdk_internal_jimage_NativeImageBuffer.h" is a plain, generated JNI
header file. If XLC 13 has problems to parse it, there should be much
more places which need fixing. I think that part of your change needs
a closer evaluation.

Thank you and best regards,
Volker

[1] https://bugs.openjdk.java.net/browse/JDK-8202322

..Thomas

Best Regards

Adam Farley
IBM Runtimes


"Thomas Stüfe" <thomas.stu...@gmail.com> wrote on 20/11/2018 16:44:07:

From: "Thomas Stüfe" <thomas.stu...@gmail.com>
To: Adam Farley8 <adam.far...@uk.ibm.com>
Cc: Java Core Libs <core-libs-dev@openjdk.java.net>
Date: 20/11/2018 16:48
Subject: Re: RFR: JDK-8214063: OpenJDK will not build on AIX while
using the xlc 13.1 compiler

Hi Adam,

On Tue, Nov 20, 2018 at 5:12 PM Adam Farley8 <adam.far...@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://urldefense.proofpoint.com/v2/url?
u=https-3A__bugs.openjdk.java.net_browse_JDK-2D8214063&d=DwIFaQ&c=jf_iaSHvJObTbx-
siA1ZOg&r=P5m8KWUXJf-
CeVJc0hDGD9AQ2LkcXDC0PMV9ntVw5Ho&m=z8YYwBXEfN7UtX1suPjpp9CZSHf8v0GrIMK3XGIC9VY&s=81TP9mIjhYD2Hmt8g7p2EHWRZXgiep21hxKLYRU7zIQ&e=
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.stu...@gmail.com> wrote on 19/11/2018 18:11:34:

From: "Thomas Stüfe" <thomas.stu...@gmail.com>
To: Adam Farley8 <adam.far...@uk.ibm.com>
Cc: Java Core Libs <core-libs-dev@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.far...@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
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

Reply via email to