> I see tons of exports listed, most of which do not have the static > keyword. So, I would expect them to be exported from their compilation > unit, but not from the linked shared library? Am I making a thinking > error here?
Hi Thomas , I see "a ton" of exported symbols as well when looking into it (e.g. libjvm.so) with dump . More than one would like to have . However for now I think we should progress with the suggested patch as it is. Once we switch to xlc 13 (or some follow up release of xlc) that supports the visibility attributes ( as decribed in https://www.ibm.com/developerworks/aix/library/au-aix-symbol-visibility/index.html ) we can open a follow up item with compiler flag adjustment and adjust src/java.base/unix/native/include/jni_md.h , I think this file misses a proper JNIEXPORT definition for AIX / xlc 13.1 ). Best regards, Matthias > -----Original Message----- > From: Thomas Stüfe [mailto:thomas.stu...@gmail.com] > Sent: Freitag, 27. April 2018 10:04 > To: Langer, Christoph <christoph.lan...@sap.com> > Cc: Volker Simonis <volker.simo...@gmail.com>; Baesken, Matthias > <matthias.baes...@sap.com>; Simonis, Volker <volker.simo...@sap.com>; > ppc-aix-port-...@openjdk.java.net; core-libs-...@openjdk.java.net; build- > d...@openjdk.java.net > Subject: Re: RFR : 8202322: AIX: symbol visibility flags not support on xlc > 12.1 > > On Fri, Apr 27, 2018 at 9:27 AM, Langer, Christoph > <christoph.lan...@sap.com> wrote: > > Hi Thomas, > > > > let me cite one section from the article: > > > > ---------------------------------------------- > > > > Visibility attribute and backward compatibility on AIX > > > > As we know from the previous article, on AIX, symbols are not visible by > default unless we export them at the linking stage, either manually or with > the help of CreateExportList. However, on Linux, symbols are, by default, > with export (namely default) visibility. This brings a gap between the AIX > visibility attribute and the GNU visibility attribute. To be backward > compatible, on AIX, XL C/C++ would not set all the symbols to be exported > like Linux. It might consider symbol without any visibility setting to be an > unspecific visibility, which aligns with an old AIX implementation. For such > symbols, AIX compiler, linker, and related tools would handle it as before. > However, unspecific visibility does not mean that the symbol is internal or > invisible at all. It is just a visibility that is specially designed to keep > the > compatibility. > > > > ... > > > > ---------------------------------------------- > > > > It says in the first sentence: " As we know from the previous article, on > > AIX, > symbols are not visible by default unless we export them at the linking stage, > either manually or with the help of CreateExportList". I guess that is why I > was under the impression that with xlc12 symbols would not be visible... > > > > :) Thanks for that pointer. > > I did read: > > "Consequently, as we have mentioned at the beginning of this article, > if the programmer does not explicitly specify the visibility attribute > for a symbol, on Linux, the visibility of the symbol could be > thedefault. But on AIX, the visibility would be unspecified." > > So I thought, default is "unspecified", which is not hidden. > > I just had a look at the libjvm.so from our nightly fastdebug build, > using "nm -g". > > I see tons of exports listed, most of which do not have the static > keyword. So, I would expect them to be exported from their compilation > unit, but not from the linked shared library? Am I making a thinking > error here? > > Anyway. I do not want to hold up this patch if you guys think it is > okay to ignore the compiler warning, so it is okay by me. > > Best Regards, Thomas > > > > Best regards > > Christoph > > > >> -----Original Message----- > >> From: Thomas Stüfe [mailto:thomas.stu...@gmail.com] > >> Sent: Freitag, 27. April 2018 09:21 > >> To: Langer, Christoph <christoph.lan...@sap.com> > >> Cc: Volker Simonis <volker.simo...@gmail.com>; Baesken, Matthias > >> <matthias.baes...@sap.com>; Simonis, Volker > <volker.simo...@sap.com>; > >> ppc-aix-port-...@openjdk.java.net; core-libs-...@openjdk.java.net; > build- > >> d...@openjdk.java.net > >> Subject: Re: RFR : 8202322: AIX: symbol visibility flags not support on xlc > 12.1 > >> > >> Hi Christoph > >> > >> On Fri, Apr 27, 2018 at 8:07 AM, Langer, Christoph > >> <christoph.lan...@sap.com> wrote: > >> > Hi Thomas, > >> > > >> > Look at this blog: > https://www.ibm.com/developerworks/aix/library/au- > >> aix-symbol-visibility-part2/index.html > >> > > >> > if I understand it correctly, the xlc 12 default behavior should be like > what > >> we'd expect from -qvisibility=hidden. > >> > > >> > >> Where in this article do you read this? > >> > >> ..Thomas > >> > >> > Best regards > >> > Christoph > >> > > >> >> -----Original Message----- > >> >> From: build-dev [mailto:build-dev-boun...@openjdk.java.net] On > Behalf > >> Of > >> >> Thomas Stüfe > >> >> Sent: Freitag, 27. April 2018 06:55 > >> >> To: Volker Simonis <volker.simo...@gmail.com>; Baesken, Matthias > >> >> <matthias.baes...@sap.com> > >> >> Cc: Simonis, Volker <volker.simo...@sap.com>; ppc-aix-port- > >> >> d...@openjdk.java.net; core-libs-...@openjdk.java.net; build- > >> >> d...@openjdk.java.net > >> >> Subject: Re: RFR : 8202322: AIX: symbol visibility flags not support on > >> >> xlc > >> 12.1 > >> >> > >> >> Hi, > >> >> > >> >> This was added by "8200178: Remove mapfiles for JDK native libraries". > >> >> But if the flag is not accepted, what is the default behavior? Do we > >> >> now export everything? > >> >> > >> >> I'd like to understand this first before removing the flag to get rid > >> >> of the warnings. > >> >> > >> >> Best Regards, Thomas > >> >> > >> >> On Thu, Apr 26, 2018 at 5:16 PM, Volker Simonis > >> >> <volker.simo...@gmail.com> wrote: > >> >> > Hi Matthias, > >> >> > > >> >> > after Bhaktavatsal Reddy's report about the problems with > >> >> > "-qvisibility" with xlC 13 and taking into account that we can't test > >> >> > this anyway because we don't currently have xlC 13 > >> >> > on our machines I think it would be best to completely remove this > >> >> > option for now on AIX. Once we get xlC 13 we can revisit the issue. > >> >> > > >> >> > Thanks, > >> >> > Volker > >> >> > > >> >> > > >> >> > On Thu, Apr 26, 2018 at 4:59 PM, Bhaktavatsal R Maram > >> >> > <bhama...@in.ibm.com> wrote: > >> >> >> Hi Matthias, > >> >> >> > >> >> >> At this point, I think we can remove the flag as you found that it is > not > >> >> supported in XLC < 13. And with XLC 13, it require more work to use > this > >> flag. > >> >> >> > >> >> >> Thanks, > >> >> >> Bhaktavatsal Reddy > >> >> >> > >> >> >> > >> >> >> > >> >> >> -----"Baesken, Matthias" <matthias.baes...@sap.com> wrote: ---- > - > >> >> >> To: "Langer, Christoph" <christoph.lan...@sap.com>, "'build- > >> >> d...@openjdk.java.net'" <build-dev@openjdk.java.net>, "ppc-aix- > port- > >> >> d...@openjdk.java.net" <ppc-aix-port-...@openjdk.java.net>, "core- > >> libs- > >> >> d...@openjdk.java.net" <core-libs-...@openjdk.java.net> > >> >> >> From: "Baesken, Matthias" <matthias.baes...@sap.com> > >> >> >> Date: 04/26/2018 08:23PM > >> >> >> Cc: "Simonis, Volker" <volker.simo...@sap.com>, Bhaktavatsal R > >> Maram > >> >> <bhama...@in.ibm.com> > >> >> >> Subject: RE: RFR : 8202322: AIX: symbol visibility flags not support > >> >> >> on > xlc > >> >> 12.1 > >> >> >> > >> >> >> > >> >> >> Hello Christoph, I think all XLC versions < 12.1 are > >> >> >> unsupported > >> (and > >> >> probably not working anyway) for the OpenJDK build . > >> >> >> I am only aware of XLC versions 12.1 and 13.1 which work > >> >> >> / in > case > >> of > >> >> 13.1 “might” work for OpenJDK compilation . > >> >> >> And for 12.1 I want to remove the flags . > >> >> >> > >> >> >> ( waiting for the feedback of Bhaktavatsal Reddy , in case he > prefers > >> it > >> >> I remove them for all xlC versions including 13.1 ) > >> >> >> > >> >> >> Best regards, Matthias > >> >> >> > >> >> >> > >> >> >> > >> >> >> > >> >> >> > >> >> >> > >> >> >> From: Langer, Christoph > >> >> >> Sent: Donnerstag, 26. April 2018 16:38 > >> >> >> To: Baesken, Matthias <matthias.baes...@sap.com>; 'build- > >> >> d...@openjdk.java.net' <build-dev@openjdk.java.net>; ppc-aix-port- > >> >> d...@openjdk.java.net; core-libs-...@openjdk.java.net > >> >> >> Cc: Simonis, Volker <volker.simo...@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@openjdk.java.net' <build-dev@openjdk.java.net>; > >> ppc- > >> >> aix-port-...@openjdk.java.net; core-libs-...@openjdk.java.net > >> >> >> Cc: Langer, Christoph <christoph.lan...@sap.com>; Simonis, > Volker > >> >> <volker.simo...@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 sizeof_aixxlc > >> >> >> 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 sizeof_aixxlc > >> >> >> bash-3.00$ xlC -qvisibility=hidden sizeof.c -o sizeof_aixxlc > >> >> >> > >> >> >> > >> >> >> 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 > >> >> >> > >> >> >> > >> >> >> > >> >> >>