https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90542

            Bug ID: 90542
           Summary: Build with --enable-libstdcxx-debug fails on Solaris
                    due to symbol conflicts
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Keywords: build
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: redi at gcc dot gnu.org
                CC: ro at gcc dot gnu.org
  Target Milestone: ---

/bin/sh ../../libtool --tag CXX   --mode=link
/export/home/jwakely/build/./gcc/xgcc -shared-libgcc
-B/export/home/jwakely/build/./gcc -nostdinc++
-L/export/home/jwakely/build/sparc-sun-solaris2.11/libstdc++-v3/src
-L/export/home/jwakely/build/sparc-sun-solaris2.11/libstdc++-v3/src/.libs
-L/export/home/jwakely/build/sparc-sun-solaris2.11/libstdc++-v3/libsupc++/.libs
-B/export/home/jwakely/gcc/9.1.0/sparc-sun-solaris2.11/bin/
-B/export/home/jwakely/gcc/9.1.0/sparc-sun-solaris2.11/lib/ -isystem
/export/home/jwakely/gcc/9.1.0/sparc-sun-solaris2.11/include -isystem
/export/home/jwakely/gcc/9.1.0/sparc-sun-solaris2.11/sys-include  
-fno-checking    -std=gnu++98 -fPIC -DPIC -fno-implicit-templates  -Wall
-Wextra -Wwrite-strings -Wcast-qual -Wabi=2  -fdiagnostics-show-location=once  
-ffunction-sections -fdata-sections  -frandom-seed=libstdc++.la  -o
libstdc++.la -version-info 6:26:0 -Wl,-M,libstdc++-symbols.ver-sun -lm -rpath
/export/home/jwakely/gcc/9.1.0/lib/debug compatibility.lo
compatibility-debug_list.lo compatibility-debug_list-2.lo 
compatibility-c++0x.lo compatibility-atomic-c++0x.lo
compatibility-thread-c++0x.lo compatibility-chrono.lo compatibility-condvar.lo
-lrt ../../libsupc++/libsupc++convenience.la
../../src/debug/c++98/libc++98convenience.la
../../src/debug/c++11/libc++11convenience.la
../../src/debug/c++17/libc++17convenience.la 
libtool: link:  /export/home/jwakely/build/./gcc/xgcc -shared-libgcc
-B/export/home/jwakely/build/./gcc -nostdinc++
-L/export/home/jwakely/build/sparc-sun-solaris2.11/libstdc++-v3/src
-L/export/home/jwakely/build/sparc-sun-solaris2.11/libstdc++-v3/src/.libs
-L/export/home/jwakely/build/sparc-sun-solaris2.11/libstdc++-v3/libsupc++/.libs
-B/export/home/jwakely/gcc/9.1.0/sparc-sun-solaris2.11/bin/
-B/export/home/jwakely/gcc/9.1.0/sparc-sun-solaris2.11/lib/ -isystem
/export/home/jwakely/gcc/9.1.0/sparc-sun-solaris2.11/include -isystem
/export/home/jwakely/gcc/9.1.0/sparc-sun-solaris2.11/sys-include  
-fno-checking -shared -nostdlib  /usr/lib/crti.o
/export/home/jwakely/build/./gcc/crtbegin.o  .libs/compatibility.o
.libs/compatibility-debug_list.o .libs/compatibility-debug_list-2.o
.libs/compatibility-c++0x.o .libs/compatibility-atomic-c++0x.o
.libs/compatibility-thread-c++0x.o .libs/compatibility-chrono.o
.libs/compatibility-condvar.o  -Wl,-z -Wl,allextract
../../libsupc++/.libs/libsupc++convenience.a
../../src/debug/c++98/.libs/libc++98convenience.a
../../src/debug/c++11/.libs/libc++11convenience.a
../../src/debug/c++17/.libs/libc++17convenience.a -Wl,-z -Wl,defaultextract 
-L/export/home/jwakely/build/sparc-sun-solaris2.11/libstdc++-v3/libsupc++/.libs
-L/export/home/jwakely/build/sparc-sun-solaris2.11/libstdc++-v3/src
-L/export/home/jwakely/build/sparc-sun-solaris2.11/libstdc++-v3/src/.libs -lm
-lrt -L/export/home/jwakely/build/./gcc -lgcc_s -lc -lgcc_s -lc
/export/home/jwakely/build/./gcc/crtend.o /usr/lib/crtn.o  -Wl,-M
-Wl,libstdc++-symbols.ver-sun   -Wl,-h -Wl,libstdc++.so.6 -o
.libs/libstdc++.so.6.0.26
ld: fatal: libstdc++-symbols.ver-sun: 5381: symbol
'std::enable_if<std::__and_<std::is_convertible<std::basic_string_view<char,
std::char_traits<char> > const&, std::basic_string_view<char,
std::char_traits<char> > >,
std::__not_<std::is_convertible<std::basic_string_view<char,
std::char_traits<char> > const*, std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const*> >,
std::__not_<std::is_convertible<std::basic_string_view<char,
std::char_traits<char> > const&, char const*> > >::value,
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
>&>::type std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >::append<std::basic_string_view<char,
std::char_traits<char> > >(std::basic_string_view<char, std::char_traits<char>
> const&)': symbol version conflict
ld: fatal: libstdc++-symbols.ver-sun: 5382: symbol
'std::enable_if<std::__and_<std::is_convertible<std::basic_string_view<char,
std::char_traits<char> > const&, std::basic_string_view<char,
std::char_traits<char> > >,
std::__not_<std::is_convertible<std::basic_string_view<char,
std::char_traits<char> > const*, std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const*> >,
std::__not_<std::is_convertible<std::basic_string_view<char,
std::char_traits<char> > const&, char const*> > >::value,
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
>&>::type std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >::append<std::basic_string_view<char,
std::char_traits<char> > >(std::basic_string_view<char, std::char_traits<char>
> const&)': symbol version conflict
ld: fatal: libstdc++-symbols.ver-sun: 5399: symbol
'std::enable_if<std::__and_<std::is_convertible<std::basic_string_view<char,
std::char_traits<char> > const&, std::basic_string_view<char,
std::char_traits<char> > >,
std::__not_<std::is_convertible<std::basic_string_view<char,
std::char_traits<char> > const*, std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const*> >,
std::__not_<std::is_convertible<std::basic_string_view<char,
std::char_traits<char> > const&, char const*> > >::value,
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
>&>::type std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >::assign<std::basic_string_view<char,
std::char_traits<char> > >(std::basic_string_view<char, std::char_traits<char>
> const&)': symbol version conflict
ld: fatal: libstdc++-symbols.ver-sun: 5400: symbol
'std::enable_if<std::__and_<std::is_convertible<std::basic_string_view<char,
std::char_traits<char> > const&, std::basic_string_view<char,
std::char_traits<char> > >,
std::__not_<std::is_convertible<std::basic_string_view<char,
std::char_traits<char> > const*, std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const*> >,
std::__not_<std::is_convertible<std::basic_string_view<char,
std::char_traits<char> > const&, char const*> > >::value,
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
>&>::type std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >::assign<std::basic_string_view<char,
std::char_traits<char> > >(std::basic_string_view<char, std::char_traits<char>
> const&)': symbol version conflict
ld: fatal: libstdc++-symbols.ver-sun: 5413: symbol
'std::enable_if<std::__and_<std::is_convertible<std::basic_string_view<char,
std::char_traits<char> > const&, std::basic_string_view<char,
std::char_traits<char> > >,
std::__not_<std::is_convertible<std::basic_string_view<char,
std::char_traits<char> > const*, std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const*> >,
std::__not_<std::is_convertible<std::basic_string_view<char,
std::char_traits<char> > const&, char const*> > >::value,
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
>&>::type std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >::insert<std::basic_string_view<char,
std::char_traits<char> > >(unsigned int, std::basic_string_view<char,
std::char_traits<char> > const&)': symbol version conflict
ld: fatal: libstdc++-symbols.ver-sun: 5414: symbol
'std::enable_if<std::__and_<std::is_convertible<std::basic_string_view<char,
std::char_traits<char> > const&, std::basic_string_view<char,
std::char_traits<char> > >,
std::__not_<std::is_convertible<std::basic_string_view<char,
std::char_traits<char> > const*, std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const*> >,
std::__not_<std::is_convertible<std::basic_string_view<char,
std::char_traits<char> > const&, char const*> > >::value,
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
>&>::type std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >::insert<std::basic_string_view<char,
std::char_traits<char> > >(unsigned int, std::basic_string_view<char,
std::char_traits<char> > const&)': symbol version conflict
ld: fatal: libstdc++-symbols.ver-sun: 5609: symbol
'std::enable_if<std::__and_<std::is_convertible<std::basic_string_view<char,
std::char_traits<char> > const&, std::basic_string_view<char,
std::char_traits<char> > >,
std::__not_<std::is_convertible<std::basic_string_view<char,
std::char_traits<char> > const*, std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const*> >,
std::__not_<std::is_convertible<std::basic_string_view<char,
std::char_traits<char> > const&, char const*> > >::value,
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
>&>::type std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >::operator=<std::basic_string_view<char,
std::char_traits<char> > >(std::basic_string_view<char, std::char_traits<char>
> const&)': symbol version conflict
ld: fatal: libstdc++-symbols.ver-sun: 5610: symbol
'std::enable_if<std::__and_<std::is_convertible<std::basic_string_view<char,
std::char_traits<char> > const&, std::basic_string_view<char,
std::char_traits<char> > >,
std::__not_<std::is_convertible<std::basic_string_view<char,
std::char_traits<char> > const*, std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const*> >,
std::__not_<std::is_convertible<std::basic_string_view<char,
std::char_traits<char> > const&, char const*> > >::value,
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
>&>::type std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >::operator=<std::basic_string_view<char,
std::char_traits<char> > >(std::basic_string_view<char, std::char_traits<char>
> const&)': symbol version conflict
ld: fatal: libstdc++-symbols.ver-sun: 5616: symbol
'std::enable_if<std::__and_<std::is_convertible<std::basic_string_view<char,
std::char_traits<char> > const&, std::basic_string_view<char,
std::char_traits<char> > >,
std::__not_<std::is_convertible<std::basic_string_view<char,
std::char_traits<char> > const*, std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const*> >,
std::__not_<std::is_convertible<std::basic_string_view<char,
std::char_traits<char> > const&, char const*> > >::value,
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
>&>::type std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >::operator+=<std::basic_string_view<char,
std::char_traits<char> > >(std::basic_string_view<char, std::char_traits<char>
> const&)': symbol version conflict
ld: fatal: libstdc++-symbols.ver-sun: 5617: symbol
'std::enable_if<std::__and_<std::is_convertible<std::basic_string_view<char,
std::char_traits<char> > const&, std::basic_string_view<char,
std::char_traits<char> > >,
std::__not_<std::is_convertible<std::basic_string_view<char,
std::char_traits<char> > const*, std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const*> >,
std::__not_<std::is_convertible<std::basic_string_view<char,
std::char_traits<char> > const&, char const*> > >::value,
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
>&>::type std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >::operator+=<std::basic_string_view<char,
std::char_traits<char> > >(std::basic_string_view<char, std::char_traits<char>
> const&)': symbol version conflict
ld: fatal: libstdc++-symbols.ver-sun: 5685: symbol
'std::enable_if<std::__and_<std::is_convertible<std::basic_string_view<char,
std::char_traits<char> > const&, std::basic_string_view<char,
std::char_traits<char> > >,
std::__not_<std::is_convertible<std::basic_string_view<char,
std::char_traits<char> > const*, std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const*> >,
std::__not_<std::is_convertible<std::basic_string_view<char,
std::char_traits<char> > const&, char const*> > >::value, int>::type
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
>::compare<std::basic_string_view<char, std::char_traits<char> >
>(std::basic_string_view<char, std::char_traits<char> > const&) const': symbol
version conflict
ld: fatal: libstdc++-symbols.ver-sun: 5686: symbol
'std::enable_if<std::__and_<std::is_convertible<std::basic_string_view<char,
std::char_traits<char> > const&, std::basic_string_view<char,
std::char_traits<char> > >,
std::__not_<std::is_convertible<std::basic_string_view<char,
std::char_traits<char> > const*, std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const*> >,
std::__not_<std::is_convertible<std::basic_string_view<char,
std::char_traits<char> > const&, char const*> > >::value, int>::type
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>
>::compare<std::basic_string_view<char, std::char_traits<char> >
>(std::basic_string_view<char, std::char_traits<char> > const&) const': symbol
version conflict
collect2: error: ld returned 1 exit status


These symbols are present in the src/debug/.libs library, because it's built
without optimization so there are additional template instantiations that
aren't inlined away.

The conflicts are all due to "std::enable_if" in a return type matching the
pattern std::e[a-q]* (line 83).

This is probably wrong on all targets, but the linker only gives an error on
Solaris.

Reply via email to