Torvald, The error is a link failure in stage2 configure due to the missing _ITM_xxx and related symbols. I don't have the failed build any more. Maybe Jonathan can reply with the specific failures.
There is an AIX system in the GNU Compile Farm: gcc111. - David On Sat, Jan 16, 2016 at 3:12 PM, Torvald Riegel <trie...@redhat.com> wrote: > On Sat, 2016-01-16 at 14:35 +0100, Jakub Jelinek 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. > > David, if you can tell me what AIX supports and whether it defines > __GXX_WEAK__ with the semantics we assume here, I can see what a fix > would be. As Jakub says, the point of all what's below is to actually > make it work when there's no TM support. > > Also, knowing the actual error that AIX fails with would be helpful. I > have no access to AIX, so can't check. Thanks. > >> #if __GXX_WEAK__ >> // Declare all libitm symbols we rely on, but make them weak so that we do >> // not depend on libitm. >> extern void* _ZGTtnaX (size_t sz) __attribute__((weak)); >> extern void _ZGTtdlPv (void* ptr) __attribute__((weak)); >> extern uint8_t _ITM_RU1(const uint8_t *p) >> ITM_REGPARM __attribute__((weak)); >> extern uint32_t _ITM_RU4(const uint32_t *p) >> ITM_REGPARM __attribute__((weak)); >> extern uint64_t _ITM_RU8(const uint64_t *p) >> ITM_REGPARM __attribute__((weak)); >> extern void _ITM_memcpyRtWn(void *, const void *, size_t) >> ITM_REGPARM __attribute__((weak)); >> extern void _ITM_memcpyRnWt(void *, const void *, size_t) >> ITM_REGPARM __attribute__((weak)); >> extern void _ITM_addUserCommitAction(void (*)(void *), uint64_t, void *) >> ITM_REGPARM __attribute__((weak)); >> >> #else >> // If there is no support for weak symbols, create dummies. The exceptions >> // will not be declared transaction_safe in this case. >> void* _ZGTtnaX (size_t) { return NULL; } >> void _ZGTtdlPv (void*) { } >> uint8_t _ITM_RU1(const uint8_t *) { return 0; } >> uint32_t _ITM_RU4(const uint32_t *) { return 0; } >> uint64_t _ITM_RU8(const uint64_t *) { return 0; } >> void _ITM_memcpyRtWn(void *, const void *, size_t) { } >> void _ITM_memcpyRnWt(void *, const void *, size_t) { } >> void _ITM_addUserCommitAction(void (*)(void *), uint64_t, void *) { }; >> #endif >> >> Jakub > > >