RFR : 8202322: AIX: symbol visibility flags not support on xlc 12.1
Baesken, Matthias
matthias.baesken at sap.com
Fri Apr 27 15:01:32 UTC 2018
> 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.stuefe at gmail.com]
> Sent: Freitag, 27. April 2018 10:04
> To: Langer, Christoph <christoph.langer at sap.com>
> Cc: Volker Simonis <volker.simonis at gmail.com>; Baesken, Matthias
> <matthias.baesken at sap.com>; Simonis, Volker <volker.simonis at sap.com>;
> ppc-aix-port-dev at openjdk.java.net; core-libs-dev at openjdk.java.net; build-
> dev at 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.langer at 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.stuefe at gmail.com]
> >> Sent: Freitag, 27. April 2018 09:21
> >> To: Langer, Christoph <christoph.langer at sap.com>
> >> Cc: Volker Simonis <volker.simonis at gmail.com>; Baesken, Matthias
> >> <matthias.baesken at sap.com>; Simonis, Volker
> <volker.simonis at sap.com>;
> >> ppc-aix-port-dev at openjdk.java.net; core-libs-dev at openjdk.java.net;
> build-
> >> dev at 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.langer at 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-bounces at openjdk.java.net] On
> Behalf
> >> Of
> >> >> Thomas Stüfe
> >> >> Sent: Freitag, 27. April 2018 06:55
> >> >> To: Volker Simonis <volker.simonis at gmail.com>; Baesken, Matthias
> >> >> <matthias.baesken at sap.com>
> >> >> Cc: Simonis, Volker <volker.simonis at sap.com>; ppc-aix-port-
> >> >> dev at openjdk.java.net; core-libs-dev at openjdk.java.net; build-
> >> >> dev at 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.simonis at 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
> >> >> > <bhamaram at 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.baesken at sap.com> wrote: ----
> -
> >> >> >> 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" <ppc-aix-port-dev at openjdk.java.net>, "core-
> >> libs-
> >> >> dev at openjdk.java.net" <core-libs-dev at openjdk.java.net>
> >> >> >> From: "Baesken, Matthias" <matthias.baesken at sap.com>
> >> >> >> Date: 04/26/2018 08:23PM
> >> >> >> Cc: "Simonis, Volker" <volker.simonis at sap.com>, Bhaktavatsal R
> >> Maram
> >> >> <bhamaram at 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.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
> >> >> >> Cc: Simonis, Volker <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>;
> >> ppc-
> >> >> aix-port-dev at openjdk.java.net; core-libs-dev at openjdk.java.net
> >> >> >> Cc: Langer, Christoph <christoph.langer at sap.com>; Simonis,
> Volker
> >> >> <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 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
> >> >> >>
> >> >> >>
> >> >> >>
> >> >> >>
More information about the build-dev
mailing list