This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH v2] libstdc++: Make certain exceptions transaction_safe.
- From: David Edelsohn <dje dot gcc at gmail dot com>
- To: Jakub Jelinek <jakub at redhat dot com>, Torvald Riegel <triegel at redhat dot com>
- Cc: Jonathan Wakely <jwakely at redhat dot com>, GCC Patches <gcc-patches at gcc dot gnu dot org>, "libstdc++ at gcc dot gnu dot org" <libstdc++ at gcc dot gnu dot org>, Jason Merrill <jason at redhat dot com>
- Date: Sat, 16 Jan 2016 15:38:13 -0500
- Subject: Re: [PATCH v2] libstdc++: Make certain exceptions transaction_safe.
- Authentication-results: sourceware.org; auth=none
- References: <CAGWvnymZpixht_LqsS6ZEDLPnrymcb_sm0zU_pPFDYsjwpQqbA at mail dot gmail dot com> <20160116124323 dot GM15084 at redhat dot com> <CAGWvnynBY3Zh+43Heu0Wkea5P3164XV=09+QOKqUUBGgREGR4Q at mail dot gmail dot com> <20160116133521 dot GN3017 at tucnak dot redhat dot com>
On Sat, Jan 16, 2016 at 8:35 AM, Jakub Jelinek <jakub@redhat.com> wrote:
> On Sat, Jan 16, 2016 at 07:47:33AM -0500, David Edelsohn wrote:
>> stage1 libstdc++ builds just fine. the problem is stage2 configure
>> fails due to missing ITM_xxx symbols when configure tries to compile
>> and run conftest programs.
>
> On x86_64-linux, the _ITM_xxx symbols are undef weak ones and thus it is
> fine to load libstdc++ without libitm and libstdc++ doesn't depend on
> libitm.
>
> So, is AIX defining __GXX_WEAK__ or not? Perhaps some other macro or
> configure check needs to be used to determine if undefined weak symbols
> work the way libstdc++ needs them to.
__GXX_WEAK__ appears to be defined by gcc/c-family/c-cppbuiltin.c
based on SUPPORTS_ONE_ONLY. gcc/defaults.h defines SUPPORTS_ONE_ONLY
if the target supports MAKE_DECL_ONE_ONLY and link-once semantics.
AIX weak correctly supports link-once semantics. AIX also supports
the definition of __GXX_WEAK__ in gcc/doc/cpp.texi, namely collapsing
symbols with vague linkage in multiple translation units.
libstdc++/src/c++11/cow-stdexcept.cc appears to be using __GXX_WEAK__
and __attribute__ ((weak)) for references to symbols that may not be
defined at link time or run time. AIX does not allow undefined symbol
errors by default. And the libstdc++ inference about the semantics of
__GXX_WEAK__ are different than the documentation.
AIX supports MAKE_DECL_ONE_ONLY and the documented meaning of
__GXX_WEAK__. AIX does not support extension of the meaning to
additional SVR4 semantics not specified in the documentation.
Thanks, David