RFR : 8202322: AIX: symbol visibility flags not support on xlc 12.1 (original) (raw)
Langer, Christoph christoph.langer at sap.com
Thu Jun 7 11:43:54 UTC 2018
- Previous message (by thread): RFR : 8202322: AIX: symbol visibility flags not support on xlc 12.1
- Next message (by thread): RFR: JDK-8202384: Introduce altserver jvm variant with speculative execution disabled
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hi Ichiroh,
your proposal seems to make sense. I have created a bug for this: https://bugs.openjdk.java.net/browse/JDK-8204541
Can you please generate a webrev (referencing this bug, -c option of webrev.ksh) and mail it over to me. Then I'll upload it and you can post an official RFR mail.
Best regards Christoph
-----Original Message----- From: Ichiroh Takiguchi [mailto:takiguc at linux.vnet.ibm.com] Sent: Dienstag, 5. Juni 2018 08:59 To: Baesken, Matthias <matthias.baesken at sap.com> Cc: Langer, Christoph <christoph.langer at sap.com>; 'build- dev at openjdk.java.net' <build-dev at openjdk.java.net>; ppc-aix-port- dev at openjdk.java.net; core-libs-dev at openjdk.java.net; Lindenmaier, Goetz <goetz.lindenmaier at sap.com> Subject: RE: RFR : 8202322: AIX: symbol visibility flags not support on xlc 12.1
Hello Matthias and Christoph. Thank you for your explanations. I did not have enough knowledge about "visibility". I created following patches. ================================ diff -r 02934b0d661b src/java.base/share/native/libjimage/NativeImageBuffer.cpp --- a/src/java.base/share/native/libjimage/NativeImageBuffer.cpp Wed May 30 14:46:28 2018 +0200 +++ b/src/java.base/share/native/libjimage/NativeImageBuffer.cpp Tue Jun 05 12:10:41 2018 +0900 @@ -39,7 +39,9 @@ #include "imageFile.hpp" #include "inttypes.hpp" #include "jimage.hpp" +#if !defined(AIX) #include "osSupport.hpp" +#endif #include "jdkinternaljimageNativeImageBuffer.h" diff -r 02934b0d661b src/java.base/unix/native/include/jnimd.h --- a/src/java.base/unix/native/include/jnimd.h Wed May 30 14:46:28 2018 +0200 +++ b/src/java.base/unix/native/include/jnimd.h Tue Jun 05 12:10:41 2018 +0900 @@ -29,7 +29,8 @@ _#ifndef hasattribute _#define hasattribute(x) 0 #endif -#if (defined(GNUC) && ((GNUC > 4) || (GNUC == 4) && _(GNUCMINOR > 2))) || hasattribute(visibility) +#if (defined(GNUC) && ((GNUC > 4) || (GNUC == 4) && _(GNUCMINOR > 2))) || _hasattribute(visibility) _ + || (defined(AIX) && (defined(xlC) && (xlC >= 0xD01))) #ifdef ARM #define JNIEXPORT attribute((externallyvisible,visibility("default"))) #define JNIIMPORT attribute((externallyvisible,visibility("default"))) ================================ If "osSupport.hpp" was included, XLC++ compiler complained. I could not understand, which part was invalid... I'm not sure, "osSupport.hpp" is really required on NativeImageBuffer.cpp or not... I added xlC macro to determine XLC/C++'s version# into jnimd.h. [1] 0xD01 means 13.1 by hexadecimal. I checked symbol table by "dump -Tv -X64". [2] It seemed it was fine, some symbols were hidden. Does someone review my code? [1] https://www.ibm.com/support/knowledgecenter/en/SSGH2K13.1.3/com.i bm.xlc1313.aix.doc/compilerref/xlmacros.html [2] https://www.ibm.com/developerworks/aix/library/au-aix-symbol- visibility/index.html On 2018-06-01 21:12, Baesken, Matthias wrote: > Hi , my change 8202322 just handled the fact that the > visibility - flags are not supported with xlc 12.1 , so setting > them generated a TON of compile - time warnings . > > The introduction of the "-qvisibility=hidden" came with the > mapfile removal changes : > > 8200358: Remove mapfiles for JDK executables > http://hg.openjdk.java.net/jdk/jdk/rev/210cf224b690 > > 8200178: Remove mapfiles for JDK native libraries > http://hg.openjdk.java.net/jdk/jdk/rev/396ea30afbd5 > > I guess it might need further testing+adjustments to make the > "visibility hiding" work nicely with XLC13 , but currently we > build only with XLC12 . > > As a workaround you might want to remove the "-qvisibility=hidden" > setting for XLC 13 as well , like I did for XLC12 with the change > 8202322 . > > > Best regards, Matthias > > > > >> -----Original Message----- >> From: Langer, Christoph >> Sent: Freitag, 1. Juni 2018 10:57 >> To: Ichiroh Takiguchi <takiguc at linux.vnet.ibm.com> >> Cc: Baesken, Matthias <matthias.baesken at sap.com>; 'build- >> dev at openjdk.java.net' <build-dev at openjdk.java.net>; ppc-aix-port- >> dev at openjdk.java.net; core-libs-dev at openjdk.java.net; Lindenmaier, >> Goetz <goetz.lindenmaier at sap.com> >> Subject: RE: RFR : 8202322: AIX: symbol visibility flags not support >> on xlc 12.1 >> >> Hi Ichiroh, >> >> we do not use the XLC 13 compiler on AIX yet here at SAP and I believe >> nobody of my colleagues has played with it yet. So you are on a new >> playground here 😊 >> >> However, I believe the idea in OpenJDK with the abolition of map files >> is that >> symbols should be invisible externally unless they are declared >> exported, >> e.g. JNIEXPORT. So I would think "-qvisibility=hidden" should be the >> correct >> default and whatever JNIEXPORT expands to should contain the right >> attributes to get that symbol visible. >> >> Can you check if either my assumption is completely wrong, JNIEXPORT >> does >> not expand to the right thing, XLC 13 has a bug or maybe just sume >> specific >> required symbols are not declared correctly? >> >> Best regards >> Christoph >> >> > -----Original Message----- >> > From: Ichiroh Takiguchi [mailto:takiguc at linux.vnet.ibm.com] >> > Sent: Donnerstag, 31. Mai 2018 09:55 >> > To: Langer, Christoph <christoph.langer at sap.com> >> > Cc: Baesken, Matthias <matthias.baesken at sap.com>; 'build- >> > dev at openjdk.java.net' <build-dev at openjdk.java.net>; ppc-aix-port- >> > dev at openjdk.java.net; core-libs-dev at openjdk.java.net; Lindenmaier, >> > Goetz <goetz.lindenmaier at sap.com> >> > Subject: RE: RFR : 8202322: AIX: symbol visibility flags not support on xlc 12.1 >> > >> > Hello. >> > 8202322 was integrated into jdk-11+15. >> > I'm using XLC 13.1.3 on AIX 7.1.4. >> > Build was failed because of "-qvisibility=hidden" on >> > make/lib/LibCommon.gmk. >> > According to "XL C/C++ for AIX 13.1.3" documentation [1], >> > "-qvisibility=hidden" cannot create shared libraries entry points. >> > For example, libverify.so was there, but entry points were not resolved >> > by "-lverify" option. >> > I think it should be "-qvisibility=default" (I tried, it worked) >> > or "-qvisibility=protected" (I had not tried) ? >> > I'm not familiar with -qvisibility option, but I'd like to find out >> > right way. >> > >> > [1] >> > >> https://www.ibm.com/support/knowledgecenter/SSGH3R13.1.3/com.ibm. >> > xlcpp1313.aix.doc/compilerref/optvisibility.html >> > >> > On 2018-05-16 16:08, Langer, Christoph wrote: >> > > Hi Matthias, >> > > >> > > yes, reviewed. >> > > >> > > Best regards >> > > Christoph >> > > >> > > From: Baesken, Matthias >> > > Sent: Mittwoch, 16. Mai 2018 09:06 >> > > To: Langer, Christoph <christoph.langer at sap.com>; >> > > 'build-dev at openjdk.java.net' <build-dev at openjdk.java.net>; >> > > ppc-aix-port-dev at openjdk.java.net; core-libs-dev at openjdk.java.net >> > > Cc: Lindenmaier, Goetz <goetz.lindenmaier at sap.com> >> > > Subject: RE: RFR : 8202322: AIX: symbol visibility flags not support on >> > > xlc 12.1 >> > > >> > > Hi Christoph can I add you as second reviewer (other reviewer was >> > > Erik Joelsson) can push the change ? >> > > >> > > Best regards, Matthias >> > > >> > > >> > > >> > > From: Langer, Christoph >> > > Sent: Donnerstag, 26. April 2018 16:38 >> > > To: Baesken, Matthias >> > > <matthias.baesken at sap.com<mailto:matthias.baesken at sap.com>>; >> > > 'build-dev at openjdk.java.net' >> > > <build-dev at openjdk.java.net<mailto:build-_ _dev at openjdk.java.net>>; >> > > ppc-aix-port-dev at openjdk.java.net<mailto:ppc-aix-port-_ _>> > dev at openjdk.java.net>; >> > > core-libs-dev at openjdk.java.net<mailto:core-libs-_ _>> dev at openjdk.java.net> >> > > Cc: Simonis, Volker >> > > <volker.simonis at sap.com<mailto:volker.simonis at sap.com>> >> > > Subject: RE: RFR : 8202322: AIX: symbol visibility flags not support on >> > > xlc 12.1 >> > > >> > > Hi Matthias, >> > > >> > > to me the change in principal looks good. >> > > >> > > I'm wondering if it is possible to do a comparison like xlc < 13 (e.g._ _>> > > extract major number before the first dot, then compare numerically) - >> > > but maybe it is too complicated and the current single version compare >> > > suits our needs ? >> > > >> > > Best regards >> > > Christoph >> > > >> > > From: Baesken, Matthias >> > > Sent: Donnerstag, 26. April 2018 16:14 >> > > To: 'build-dev at openjdk.java.net' >> > > <build-dev at openjdk.java.net<mailto:build-_ _dev at openjdk.java.net>>; >> > > ppc-aix-port-dev at openjdk.java.net<mailto:ppc-aix-port-_ _>> > dev at openjdk.java.net>; >> > > core-libs-dev at openjdk.java.net<mailto:core-libs-_ _>> dev at openjdk.java.net> >> > > Cc: Langer, Christoph >> > > <christoph.langer at sap.com<mailto:christoph.langer at sap.com>>; >> Simonis, >> > > Volker <volker.simonis at sap.com<mailto:volker.simonis at sap.com>> >> > > Subject: RFR : 8202322: AIX: symbol visibility flags not support on xlc >> > > 12.1 >> > > >> > > Hello , could you please review this small adjustment to the symbol >> > > visibility compilation settings on AIX ? >> > > Currently we use XLC 12.1 to compile JDK on AIX . >> > > >> > > However XLC 12.1 does not support the "-qvisibility=hidden" >> > > setting currently set on AIX. >> > > It was introduced with XLC 13.1 . Christoph found some info about it >> > > here : >> > > >> > > https://www.ibm.com/developerworks/aix/library/au-aix-symbol- >> > visibility-part2/index.html >> > > >> > > Setting it only generates hundreds of warnings in the build log , >> > > warnings look like this : >> > > XlC12.1 >> > > >> > > bash-4.4$ xlC -qversion >> > > IBM XL C/C++ for AIX, V12.1 (5765-J02, 5725-C72) >> > > Version: 12.01.0000.0019 >> > > >> > > bash-4.4$ xlC -qvisibility=hidden sizeof.c -o sizeofaixxlc >> > > 1506-173 (W) Option visibility=hidden is not valid. Enter xlC for list >> > > of valid options. >> > > >> > > Compare to XLC13.1 >> > > >> > > bash-3.00$ xlC -qversion >> > > IBM XL C/C++ for AIX, V13.1 (5725-C72, 5765-J07) >> > > Version: 13.01.0000.0008 >> > > bash-3.00$ xlC -qvisibility=default sizeof.c -o sizeofaixxlc >> > > bash-3.00$ xlC -qvisibility=hidden sizeof.c -o sizeofaixxlc >> > > >> > > >> > > So it is better to avoid setting these flags when using xlc12.1 . >> > > Please review : >> > > >> > > Bug : >> > > >> > > https://bugs.openjdk.java.net/browse/JDK-8202322 >> > > >> > > Change : >> > > >> > > http://cr.openjdk.java.net/~mbaesken/webrevs/8202322/ >> > > >> > > >> > > Best regards, Matthias
- Previous message (by thread): RFR : 8202322: AIX: symbol visibility flags not support on xlc 12.1
- Next message (by thread): RFR: JDK-8202384: Introduce altserver jvm variant with speculative execution disabled
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]