RFR: JDK-8214063: OpenJDK will not build on AIX while using the xlc 13.1 compiler
Ichiroh Takiguchi
takiguc at linux.vnet.ibm.com
Tue Nov 27 18:08:23 UTC 2018
Hello Volker.
OK, I follow your decision.
Anyway, I'd like to show you one more workaround.
$ hg di src/java.base/share/native/libjimage/osSupport.hpp
src/java.base/share/native/libjimage/NativeImageBuffer.cpp
$ sh NativeImageBuffer.o.cmdline
"/home/jdktest/sandbox/jdk/build/aix-ppc64-server-release/support/headers/java.base/jdk_internal_jimage_NativeImageBuffer.h",
line 15.27: 1540-0040 (S) The text
"Java_jdk_internal_jimage_NativeImageBuffer_getNativeMap" is unexpected.
"visibility" may be undeclared or ambiguous.
Put following fix
$ hg di src/java.base/share/native/libjimage/NativeImageBuffer.cpp
diff -r 6cf555c2e9ff
src/java.base/share/native/libjimage/NativeImageBuffer.cpp
--- a/src/java.base/share/native/libjimage/NativeImageBuffer.cpp
Sun Nov 25 21:41:12 2018 +0900
+++ b/src/java.base/share/native/libjimage/NativeImageBuffer.cpp
Wed Nov 28 02:58:48 2018 +0900
@@ -41,6 +41,10 @@
#include "jimage.hpp"
#include "osSupport.hpp"
+#if defined(_AIX) && !defined(__attribute__)
+void aix_dummy();
+#endif
+
#include "jdk_internal_jimage_NativeImageBuffer.h"
$ sh NativeImageBuffer.o.cmdline
$
If visibility flag is moved back, please modify:
src/java.desktop/unix/native/common/awt/CUPSfuncs.c
See "SunStudio compiler" related comment.
I'll put more information into JDK-8204541.
Thanks,
Ichiroh Takiguchi
On 2018-11-28 00:46, Volker Simonis wrote:
> Hi Adam, Ichiroh,
>
> this is actually exactly what I wanted to propose in the mail I was
> just writing :)
>
> You may have noticed that I've renamed the bug to "8214063: [AIX]
> Disable symbol visibility flags". For the next step which will enable
> symbol visibility on AIX we already have the following issue "8204541:
> Correctly support AIX xlC 13.1 symbol visibility flags" [1]. Please
> assign yourself and use it once the issues are resolved.
>
> In the meantime I've tested your change and it works fine with xlC 12.
> I've only added a reference to the JBS id in the comments. Please find
> a webrev of the new version here:
>
> http://cr.openjdk.java.net/~simonis/webrevs/2018/8214063/
>
> I can sponsor that change once you and Ichiroh confirm that it also
> works for you with xlC 13 and I get one more review. I've opened a new
> thread for this on build-dev because the fix has now degenerated into
> a pure build change:
>
> http://mail.openjdk.java.net/pipermail/build-dev/2018-November/024096.html
>
> Please answer on that new thread.
>
> Regards,
> Volker
>
> PS: I don't think it makes too much sense investing into xlC 13.
> You're probably aware of "JEP 347: Adopt C++14 Language Features in
> HotSpot" [2] which will start introducing C++14 language features
> soon. So it may be wiser to test right with the new beta of xlC 16
> because, as far as I know, there's no chance to get C++124 support
> into xlC 13 anyway.
>
> [1] https://bugs.openjdk.java.net/browse/JDK-8204541
> [2] http://openjdk.java.net/jeps/347
> On Tue, Nov 27, 2018 at 3:51 PM Adam Farley8 <adam.farley at uk.ibm.com>
> wrote:
>>
>> Hi Ichiroh and Volker.
>>
>> Short version:
>>
>> I propose we exclude the -qvisibility option to conclude this bug, and
>> raise a new bug to cover adding -qvisibility into the build, complete
>> with the attendant supporting changes.
>>
>> Long Version:
>>
>> Based on this bug, I feel confident saying that anyone building on AIX
>> is using xlC 12.1 without the -qvisibility option.
>>
>> I'm confident because, as discussed, the build doesn't complete on
>> non-12.1 with source as it is now.
>>
>> After deliberation, it seems the right way to resolve this is to first
>> resolve the issue breaking the build, and *then* including a set of
>> changes required to enable OpenJDK to build successfully on AIX whiule
>> using a new compile option across the board (including on 12.1)
>>
>> This is because the latter change, enabling us to build with
>> -qvisibility, will (as magnus notes) potentially cause problems
>> elsewhere, and may require a lot of testing.
>>
>> Testing which may not be needed on 13.1, as we're updating the
>> compiler version (which *might* change stuff) as opposed to adding a
>> new command-line option (which *will* change stuff).
>>
>> Also, I believe the .cpp change is preferable to the .hpp change
>> because it's easier to link the change to the error. Also, it's
>> shorter.
>>
>> My 2 cents. Volker, Ichiroh?
>>
>> Best Regards
>>
>> Adam Farley
>> IBM Runtimes
>>
>>
>> "Ichiroh Takiguchi" <takiguc at linux.vnet.ibm.com> wrote on 27/11/2018
>> 12:36:41:
>>
>> > From: "Ichiroh Takiguchi" <takiguc at linux.vnet.ibm.com>
>> > To: "Volker Simonis" <volker.simonis at gmail.com>
>> > Cc: Adam Farley8/UK/IBM at IBMGB, "Java Core Libs" <core-libs-
>> > dev at openjdk.java.net>
>> > Date: 27/11/2018 12:33
>> > Subject: Re: RFR: JDK-8214063: OpenJDK will not build on AIX while
>> > using the xlc 13.1 compiler
>> >
>> > Hello Volker.
>> >
>> > Sorry for your confusion.
>> > I want to keep visibility feature on AIX platform for future OpenJDK.
>> >
>> > If I can apply workaround for AIX platform...
>> >
>> > XLC++ 13.1 is confused destructor order for ~SimpleCriticalSectionLock()
>> > on src/java.base/share/native/libjimage/osSupport.hpp, if visibility
>> > feature is specified.
>> >
>> > Please see following testing.
>> > (I already applied a fix against
>> > src/java.base/unix/native/include/jni_md.h)
>> >
>> > $ sh NativeImageBuffer.o.cmdline
>> > "/home/jdktest/sandbox/jdk/build/aix-ppc64-server-release/support/
>> > headers/java.base/jdk_internal_jimage_NativeImageBuffer.h",
>> > line 15.27: 1540-0040 (S) The text
>> > "Java_jdk_internal_jimage_NativeImageBuffer_getNativeMap" is unexpected.
>> > "visibility" may be undeclared or ambiguous.
>> >
>> > If I applied following change
>> > ======
>> > $ hg di src/java.base/share/native/libjimage/osSupport.hpp
>> > diff -r 6cf555c2e9ff src/java.base/share/native/libjimage/osSupport.hpp
>> > --- a/src/java.base/share/native/libjimage/osSupport.hpp Sun Nov
>> > 25 21:41:12 2018 +0900
>> > +++ b/src/java.base/share/native/libjimage/osSupport.hpp Tue Nov
>> > 27 21:04:41 2018 +0900
>> > @@ -103,6 +103,7 @@
>> > SimpleCriticalSection *lock;
>> > public:
>> >
>> > +#ifndef _AIX
>> > SimpleCriticalSectionLock(SimpleCriticalSection *cslock) {
>> > this->lock = cslock;
>> > lock->enter();
>> > @@ -111,6 +112,16 @@
>> > ~SimpleCriticalSectionLock() {
>> > lock->exit();
>> > }
>> > +#else
>> > + ~SimpleCriticalSectionLock() {
>> > + lock->exit();
>> > + }
>> > +
>> > + SimpleCriticalSectionLock(SimpleCriticalSection *cslock) {
>> > + this->lock = cslock;
>> > + lock->enter();
>> > + }
>> > +#endif
>> > };
>> >
>> > #endif // LIBJIMAGE_OSSUPPORT_HPP
>> > ======
>> >
>> > No output was displayed by NativeImageBuffer.o.cmdline
>> > $ sh NativeImageBuffer.o.cmdline
>> > $
>> >
>> > Adam, if possible, could you double check my code ?
>> >
>> > Volker, I appreciate if you reconsider about this issue.
>> >
>> > Thanks,
>> > Ichiroh Takiguchi
>> >
>> >
>> > On 2018-11-27 03:26, Volker Simonis wrote:
>> > > On Mon, Nov 26, 2018 at 6:52 PM Ichiroh Takiguchi
>> > > <takiguc at linux.vnet.ibm.com> wrote:
>> > >>
>> > >> Hello Volker.
>> > >>
>> > >> I posted same kind of fix before:
>> > >> http://mail.openjdk.java.net/pipermail/ppc-aix-port-dev/2018-
>> > June/003551.html
>> > >>
>> > >> I could not find out brace handling issue on XLC++ 13.1.
>> > >>
>> > >> For workaround,
>> > >> ======
>> > >> ---
>> > >> old/src/java.base/share/native/libjimage/NativeImageBuffer.cpp
>> > >> 2018-06-07
>> > >> 21:06:09 +0000
>> > >> +++
>> > >> new/src/java.base/share/native/libjimage/NativeImageBuffer.cpp
>> > >> 2018-06-07
>> > >> 21:06:09 +0000
>> > >> @@ -39,7 +39,9 @@
>> > >> #include "imageFile.hpp"
>> > >> #include "inttypes.hpp"
>> > >> #include "jimage.hpp"
>> > >> +#if !defined(_AIX)
>> > >> #include "osSupport.hpp"
>> > >> +#endif
>> > >>
>> > >> #include "jdk_internal_jimage_NativeImageBuffer.h"
>> > >> ======
>> > >>
>> > >> I think osSupport.hpp is no need for all platform.
>> > >> (I tested it on Linux and AIX build)
>> > >>
>> > >> What do you think ?
>> > >>
>> > >
>> > > Sorry, but I don't understand your mail. Did you saw the same problems
>> > > like Adam when compiling "NativeImageBuffer.cpp"?
>> > >
>> > > - If yes, did you fix them by excluding the inclusion of
>> > > "osSupport.hpp" ? That would be strange, because it doesn't seem to
>> > > related to the problems reported until now at all.
>> > >
>> > > - If no, I'm totally confused...
>> > >
>> > >> Thanks,
>> > >> Ichiroh Takiguchi
>> > >> IBM Japan, Ltd.
>> > >>
>> > >> On 2018-11-27 02:06, Volker Simonis wrote:
>> > >> > On Mon, Nov 26, 2018 at 2:16 PM Adam Farley8 <adam.farley at uk.ibm.com>
>> > >> > wrote:
>> > >> >>
>> > >> >> Hi Volker,
>> > >> >>
>> > >> >> Apologies for the delay.
>> > >> >>
>> > >> >> I ran the contents of the file as requested (neat tip, thanks!) and I
>> > >> >> discovered something:
>> > >> >>
>> > >> >> If jdk_internal_jimage_NativeImageBuffer.h contains this:
>> > >> >>
>> > >> >> -----
>> > >> >> extern "C" {
>> > >> >> __attribute__((visibility("default"))) jobject JNICALL
>> > >> >> Java_jdk_internal_jimage_NativeImageBuffer_getNativeMap
>> > >> >> (JNIEnv *, jclass, jstring);
>> > >> >> }
>> > >> >> -----
>> > >> >>
>> > >> >> It results in this error:
>> > >> >>
>> > >> >> -----
>> > >> >> blah blah "visibility" may be undeclared or ambiguous.
>> > >> >> -----
>> > >> >>
>> > >> >> But replacing that bit with this code:
>> > >> >>
>> > >> >> -----
>> > >> >> extern "C" __attribute__((visibility("default"))) jobject JNICALL
>> > >> >> Java_jdk_internal_jimage_NativeImageBuffer_getNativeMap
>> > >> >> (JNIEnv *, jclass, jstring);
>> > >> >> -----
>> > >> >>
>> > >> >> Results in no error.
>> > >> >>
>> > >> >> So it seems the difference between an "extern "C"" block and an inline
>> > >> >> "extern"C"" is what's causing the issue.
>> > >> >>
>> > >> >
>> > >> > Thanks for finding this out. Now at least we know the root cause of the
>> > >> > problem.
>> > >> >
>> > >> > Without having read through the C++ specification, I'd assume this is
>> > >> > a problem of XLC 13.
>> > >> >
>> > >> > As long as XLC has problems to parse such kinds of constructs, I thing
>> > >> > we should just remove "-qvisibility" from the AIX build as proposed by
>> > >> > Magnus (and called "plan B" in you other mail) because changing the
>> > >> > javah generator for AIX would be a much larger task.
>> > >> >
>> > >> > Thank you and best regards,
>> > >> > Volker
>> > >> >
>> > >> >> I don't understand why, but there we have it.
>> > >> >>
>> > >> >> A shame the header file is generated. An ideal fix would either be to:
>> > >> >>
>> > >> >> 1) Change xlC to make this work inside an extern "C" block.
>> > >> >> or
>> > >> >> 2) Change the way the header file is generated to add that extern "C"
>> > >> >> bit onto the line itself.
>> > >> >>
>> > >> >> However both of those have the potential to break other stuff.
>> > >> >>
>> > >> >> I'm reaching out to the xlC developers now to figure out what's going
>> > >> >> on, but in the
>> > >> >> meantime it seems to me like the proposed fix is still the right way
>> > >> >> to go for a short-term
>> > >> >> resolution.
>> > >> >>
>> > >> >> What are your thoughts?
>> > >> >>
>> > >> >> Best Regards
>> > >> >>
>> > >> >> Adam Farley
>> > >> >> IBM Runtimes
>> > >> >>
>> > >> >>
>> > >> >> Volker Simonis <volker.simonis at gmail.com> wrote on 22/11/2018
>> > >> >> 14:25:04:
>> > >> >>
>> > >> >> > From: Volker Simonis <volker.simonis at gmail.com>
>> > >> >> > To: adam.farley at uk.ibm.com
>> > >> >> > Cc: Java Core Libs <core-libs-dev at openjdk.java.net>, "Stuefe,
>> > >> >> > Thomas" <thomas.stuefe at gmail.com>
>> > >> >> > Date: 22/11/2018 14:25
>> > >> >> > Subject: Re: RFR: JDK-8214063: OpenJDK will not build on AIX while
>> > >> >> > using the xlc 13.1 compiler
>> > >> >> >
>> > >> >> > On Thu, Nov 22, 2018 at 3:00 PM Adam Farley8
>> > <adam.farley at uk.ibm.com> wrote:
>> > >> >> > >
>> > >> >> > > Hi Volker,
>> > >> >> > >
>> > >> >> > > 1) Here is the "reasonable" code in the generated
>> > >> >> > jdk_internal_jimage_NativeImageBuffer.h
>> > >> >> > >
>> > >> >> > > ------------------------------------------------------
>> > >> >> > > /* DO NOT EDIT THIS FILE - it is machine generated */
>> > >> >> > > #include <jni.h>
>> > >> >> > > /* Header for class jdk_internal_jimage_NativeImageBuffer */
>> > >> >> > >
>> > >> >> > > #ifndef _Included_jdk_internal_jimage_NativeImageBuffer
>> > >> >> > > #define _Included_jdk_internal_jimage_NativeImageBuffer
>> > >> >> > > #ifdef __cplusplus
>> > >> >> > > extern "C" {
>> > >> >> > > #endif
>> > >> >> > > /*
>> > >> >> > > * Class: jdk_internal_jimage_NativeImageBuffer
>> > >> >> > > * Method: getNativeMap
>> > >> >> > > * Signature: (Ljava/lang/String;)Ljava/nio/ByteBuffer;
>> > >> >> > > */
>> > >> >> > > JNIEXPORT jobject JNICALL
>> > >> >> > Java_jdk_internal_jimage_NativeImageBuffer_getNativeMap
>> > >> >> > > (JNIEnv *, jclass, jstring);
>> > >> >> > >
>> > >> >> > > #ifdef __cplusplus
>> > >> >> > > }
>> > >> >> > > #endif
>> > >> >> > > #endif
>> > >> >> > > ------------------------------------------------------
>> > >> >> > >
>> > >> >> > >
>> > >> >> > > 2) I have not yet reported this as a bug to the xlc developers. I
>> > >> >> > will contact
>> > >> >> > > them now.
>> > >> >> > >
>> > >> >> > > 3) I did some experimenting, and it seems that the
>> > >> >> > NativeImageBuffer.cpp change
>> > >> >> > > is the only thing standing between us and a successful compilation
>> > >> >> > on aix using
>> > >> >> > > xlc 13.1 (assuming you're using source that compiles on
>> > aix with xlc 12.1).
>> > >> >> > >
>> > >> >> > > With that change (plus the jni_md change), the compilationcompletes.
>> > >> >> > >
>> > >> >> > > Without that change (after you've added the jni_md change
>> > though),the build
>> > >> >> > > will fail with this error message:
>> > >> >> > >
>> > >> >> > > ------------------------------------------------------
>> > >> >> > > 12:19:58 "/workspace/build/aix-ppc64-normal-server-release/
>> > >> >> > support/headers/java.base/jdk_internal_jimage_NativeImageBuffer.h",
>> > >> >> > line 15.27: 1540-0040 (S) The text
>> > >> >> > "Java_jdk_internal_jimage_NativeImageBuffer_getNativeMap" is
>> > >> >> > unexpected. "visibility" may be undeclared or ambiguous.
>> > >> >> > > 12:19:59 CoreLibraries.gmk:192: recipe for target '/workspace/
>> > >> >> > build/aix-ppc64-normal-server-release/support/native/java.base/
>> > >> >> > libjimage/NativeImageBuffer.o' failed
>> > >> >> > > ------------------------------------------------------
>> > >> >> > >
>> > >> >> >
>> > >> >> > Can you please do the following:
>> > >> >> > - take the command line from
>> > >> >> > /workspace/build/aix-ppc64-normal-server-release/support/native/
>> > >> >> > java.base/libjimage/NativeImageBuffer.o.cmdline
>> > >> >> > - replace '-c' with '-E' to get the preprocessor output
>> > >> >> > - have a look at the offending line (e.g. have JNIEXPORT / JNICALL
>> > >> >> > been correctly expanded ?)
>> > >> >> >
>> > >> >> > Unfortunately I don't have a version of XLC 13 to test this.
>> > >> >> >
>> > >> >> > > Best Regards
>> > >> >> > >
>> > >> >> > > Adam Farley
>> > >> >> > > IBM Runtimes
>> > >> >> > >
>> > >> >> > > P.S. Tried making a small, stand-alone example and it failed to
>> > >> >> > reproduce the problem.
>> > >> >> > > Will keep trying, and I'll supply a further update in the event of
>> > >> >> > a) results,
>> > >> >> > > or b) a response from the xlc guys.
>> > >> >> > >
>> > >> >> > >
>> > >> >> > > Volker Simonis <volker.simonis at gmail.com> wrote on 21/11/
>> > 2018 14:07:07:
>> > >> >> > >
>> > >> >> > > > From: Volker Simonis <volker.simonis at gmail.com>
>> > >> >> > > > To: adam.farley at uk.ibm.com
>> > >> >> > > > Cc: Java Core Libs <core-libs-dev at openjdk.java.net>, "Stuefe,
>> > >> >> > > > Thomas" <thomas.stuefe at gmail.com>
>> > >> >> > > > Date: 21/11/2018 14:07
>> > >> >> > > > Subject: Re: RFR: JDK-8214063: OpenJDK will not build onAIX while
>> > >> >> > > > using the xlc 13.1 compiler
>> > >> >> > > >
>> > >> >> > > > On Wed, Nov 21, 2018 at 1:46 PM Adam Farley8
>> > >> >> > <adam.farley at uk.ibm.com> wrote:
>> > >> >> > > > >
>> > >> >> > > > > Hi Volker,
>> > >> >> > > > >
>> > >> >> > > > > The NativeImageBuffer.cpp changes are best explained
>> > by the full text of
>> > >> >> > > > > the referenced GitHub Pull Request, copied here for simplicity:
>> > >> >> > > > >
>> > >> >> > > > > -----------------------------------------
>> > >> >> > > > > Define JNIEXPORT and JNIIMPORT for xlc version 13.1 or newer.
>> > >> >> > Without this,
>> > >> >> > > > > almost no symbols are exported from shared libraries
>> > due to use of
>> > >> >> > > > > -qvisibility=hidden as specified in make/lib/
>> > LibCommon.gmk. The symptoms
>> > >> >> > > > > are reported in eclipse/openj9#2468.
>> > >> >> > > > >
>> > >> >> > > > > Unfortunately, this encounters a bug in xlc: it fails
>> > to parsewhat seems
>> > >> >> > > > > to be reasonable code.
>> > >> >> > > >
>> > >> >> > > > Sorry, but I don't see how this answers my question.
>> > >> >> > > >
>> > >> >> > > > 1. Which "reasonable code" does xlc fails to parse. A stand-alone
>> > >> >> > > > example would be nice.
>> > >> >> > > >
>> > >> >> > > > 2. Have you reported this as bug to the xlc developers?
>> > What didthey say?
>> > >> >> > > >
>> > >> >> > > > 3. "jdk_internal_jimage_NativeImageBuffer.h" doesn't seem to be
>> > >> >> > > > special. It's a plain, generated JNI header file as generated by
>> > >> >> > > > 'javah' or 'javac -h'. If XLC 13 has problems parsing
>> > it, there should
>> > >> >> > > > be much more places which need fixing. So what's special about
>> > >> >> > > > "jdk_internal_jimage_NativeImageBuffer.h".
>> > >> >> > > >
>> > >> >> > > > In the referenced pull request
>> > >> >> > > > (https://urldefense.proofpoint.com/v2/url?
>> > >> >> > > >
>> > >> >> >
>> > u=https-3A__github.com_eclipse_openj9_issues_2468&d=DwIFaQ&c=jf_iaSHvJObTbx-
>> > >> >> > > > siA1ZOg&r=P5m8KWUXJf-
>> > >> >> > > >
>> > >> >> >
>> > CeVJc0hDGD9AQ2LkcXDC0PMV9ntVw5Ho&m=sgfFd6mB1EYM4nOM89rgFFzUyX7B21XbckIY7L0kUNU&s=TJ-4nr8ikZKImwDygirRTxLybsnQWBN71nEZCwZ59NQ&e=
>> > >> >> > > > ) I can only see linker
>> > >> >> > > > errors (and no compiler errors). The linker errors are for both
>> > >> >> > > > libjsig and libjava. They are related to the symbol
>> > ".sigaction" in
>> > >> >> > > > jsig.o and I don't see how this should be related to
>> > >> >> > > > NativeImageBuffer.cpp or
>> > "jdk_internal_jimage_NativeImageBuffer.h".
>> > >> >> > > > NativeImageBuffer.cpp is only used to create libjimage
>> > and not related
>> > >> >> > > > in any way to libjsig or libjava.
>> > >> >> > > >
>> > >> >> > > > It seems wired to do the change to NativeImageBuffer.cpp
>> > which you've
>> > >> >> > > > proposed without understanding the real cause of the problem.
>> > >> >> > > >
>> > >> >> > > > Regards,
>> > >> >> > > > Volker
>> > >> >> > > >
>> > >> >> > > > > A workaround is required in just one place:
>> > >> >> > > > > src/java.base/share/native/libjimage/NativeImageBuffer.cpp.
>> > >> >> > > > > -----------------------------------------
>> > >> >> > > > >
>> > >> >> > > > > Best Regards
>> > >> >> > > > >
>> > >> >> > > > > Adam Farley
>> > >> >> > > > > IBM Runtimes
>> > >> >> > > > >
>> > >> >> > > > >
>> > >> >> > > > > Volker Simonis <volker.simonis at gmail.com> wrote on 20/
>> > 11/2018 17:50:41:
>> > >> >> > > > >
>> > >> >> > > > > > From: Volker Simonis <volker.simonis at gmail.com>
>> > >> >> > > > > > To: "Stuefe, Thomas" <thomas.stuefe at gmail.com>
>> > >> >> > > > > > Cc: adam.farley at uk.ibm.com, Java Core Libs <core-libs-
>> > >> >> > > > dev at openjdk.java.net>
>> > >> >> > > > > > Date: 20/11/2018 17:59
>> > >> >> > > > > > Subject: Re: RFR: JDK-8214063: OpenJDK will not
>> > build on AIX while
>> > >> >> > > > > > using the xlc 13.1 compiler
>> > >> >> > > > > >
>> > >> >> > > > > > On Tue, Nov 20, 2018 at 6:15 PM Thomas Stüfe
>> > >> >> > > > <thomas.stuefe at gmail.com> wrote:
>> > >> >> > > > > > >
>> > >> >> > > > > > > On Tue, Nov 20, 2018 at 6:12 PM Adam Farley8
>> > >> >> > > > <adam.farley at 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 toplay 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://
>> > >> >> > > > > > urldefense.proofpoint.com/v2/url?
>> > >> >> > > > > >
>> > >> >> > > >
>> > >> >> >
>> > u=https-3A__bugs.openjdk.java.net_browse_JDK-2D8204541&d=DwIFaQ&c=jf_iaSHvJObTbx-
>> > >> >> > > > > > siA1ZOg&r=P5m8KWUXJf-
>> > >> >> > > > > >
>> > >> >> > > >
>> > >> >> >
>> > CeVJc0hDGD9AQ2LkcXDC0PMV9ntVw5Ho&m=SD6UdjysISJRBlWUm8pEzF5lRZ5opfbrKzEh_jrOras&s=5qDEdIfg8qZ-
>> > >> >> > > > > > vCglsZ9qNDTEPMnCkj-mVPVah6eEDLE&e=
>> > >> >> > > > > > > >
>> > >> >> > > > > > > > Does that answer your question?
>> > >> >> > > > > > > >
>> > >> >> > > > > > >
>> > >> >> > > > > > > Yes, Thank you. Odd. Will have to do archeology onthat 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)?
>> > >> >> > > > > >
>> > >> >> > > > > > 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://urldefense.proofpoint.com/v2/url?
>> > >> >> > > > > >
>> > >> >> > > >
>> > >> >> >
>> > u=https-3A__bugs.openjdk.java.net_browse_JDK-2D8202322&d=DwIFaQ&c=jf_iaSHvJObTbx-
>> > >> >> > > > > > siA1ZOg&r=P5m8KWUXJf-
>> > >> >> > > > > >
>> > >> >> > > >
>> > >> >> >
>> > CeVJc0hDGD9AQ2LkcXDC0PMV9ntVw5Ho&m=SD6UdjysISJRBlWUm8pEzF5lRZ5opfbrKzEh_jrOras&s=JAEK6rePGMPinZzOquHBzj5oc7vA3kaFt9x0WIIUzvk&e=
>> > >> >> > > > > >
>> > >> >> > > > > > > ..Thomas
>> > >> >> > > > > > >
>> > >> >> > > > > > > > Best Regards
>> > >> >> > > > > > > >
>> > >> >> > > > > > > > Adam Farley
>> > >> >> > > > > > > > IBM Runtimes
>> > >> >> > > > > > > >
>> > >> >> > > > > > > >
>> > >> >> > > > > > > > "Thomas Stüfe" <thomas.stuefe at gmail.com> wrote on 20/11/
>> > >> >> > 201816:44:07:
>> > >> >> > > > > > > >
>> > >> >> > > > > > > > > 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: 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.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://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
>> > JNIIMPORTnot 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/
>> > >> >> > > > 201818: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 appearstraight-
>> > >> >> > > > 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
>> > >> >> > > > > >
>> > >> >> > > > >
>> > >> >> > > > > Unless stated otherwise above:
>> > >> >> > > > > IBM United Kingdom Limited - Registered in England andWales 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
>> > >>
>>
>> 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