[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-ppc-aix-port-dev
Subject:    Re: RFR : 8202322: AIX: symbol visibility flags not support on xlc 12.1
From:       Thomas_Stüfe <thomas.stuefe () gmail ! com>
Date:       2018-04-27 15:58:53
Message-ID: CAA-vtUyC+4_1i73YekPPkPg6Uxc86A4B_nQKOVBY6S8jQp4cYQ () mail ! gmail ! com
[Download RAW message or body]

On Fri, Apr 27, 2018 at 5:01 PM, Baesken, Matthias
<matthias.baesken@sap.com> wrote:
> > 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 .
> 

Okay, thanks for confirming this! I was not sure if I was using nm
correctly, or if it was lying to me.

> However  for now I think we  should progress with the suggested patch as it is.
> 

I agree, patch is fine. Thanks for fixing this.

> 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  ). 

Okay, fine with me.

Best Regards, Thomas

> 
> Best regards, Matthias
> 
> 
> 
> > -----Original Message-----
> > From: Thomas Stüfe [mailto:thomas.stuefe@gmail.com]
> > Sent: Freitag, 27. April 2018 10:04
> > To: Langer, Christoph <christoph.langer@sap.com>
> > Cc: Volker Simonis <volker.simonis@gmail.com>; Baesken, Matthias
> > <matthias.baesken@sap.com>; Simonis, Volker <volker.simonis@sap.com>;
> > ppc-aix-port-dev@openjdk.java.net; core-libs-dev@openjdk.java.net; build-
> > dev@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@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@gmail.com]
> > > > Sent: Freitag, 27. April 2018 09:21
> > > > To: Langer, Christoph <christoph.langer@sap.com>
> > > > Cc: Volker Simonis <volker.simonis@gmail.com>; Baesken, Matthias
> > > > <matthias.baesken@sap.com>; Simonis, Volker
> > <volker.simonis@sap.com>;
> > > > ppc-aix-port-dev@openjdk.java.net; core-libs-dev@openjdk.java.net;
> > build-
> > > > dev@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@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@openjdk.java.net] On
> > Behalf
> > > > Of
> > > > > > Thomas Stüfe
> > > > > > Sent: Freitag, 27. April 2018 06:55
> > > > > > To: Volker Simonis <volker.simonis@gmail.com>; Baesken, Matthias
> > > > > > <matthias.baesken@sap.com>
> > > > > > Cc: Simonis, Volker <volker.simonis@sap.com>; ppc-aix-port-
> > > > > > dev@openjdk.java.net; core-libs-dev@openjdk.java.net; build-
> > > > > > dev@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@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@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@sap.com> wrote: ----
> > -
> > > > > > > > To: "Langer, Christoph" <christoph.langer@sap.com>, "'build-
> > > > > > dev@openjdk.java.net'" <build-dev@openjdk.java.net>, "ppc-aix-
> > port-
> > > > > > dev@openjdk.java.net" <ppc-aix-port-dev@openjdk.java.net>, "core-
> > > > libs-
> > > > > > dev@openjdk.java.net" <core-libs-dev@openjdk.java.net>
> > > > > > > > From: "Baesken, Matthias" <matthias.baesken@sap.com>
> > > > > > > > Date: 04/26/2018 08:23PM
> > > > > > > > Cc: "Simonis, Volker" <volker.simonis@sap.com>, Bhaktavatsal R
> > > > Maram
> > > > > > <bhamaram@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@sap.com>; 'build-
> > > > > > dev@openjdk.java.net' <build-dev@openjdk.java.net>; ppc-aix-port-
> > > > > > dev@openjdk.java.net; core-libs-dev@openjdk.java.net
> > > > > > > > Cc: Simonis, Volker <volker.simonis@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-dev@openjdk.java.net; core-libs-dev@openjdk.java.net
> > > > > > > > Cc: Langer, Christoph <christoph.langer@sap.com>; Simonis,
> > Volker
> > > > > > <volker.simonis@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
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 
> > > > > > > > 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic