https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111956
Thomas Schwinge <tschwinge at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |build CC| |egallager at gcc dot gnu.org, | |tschwinge at gcc dot gnu.org Last reconfirmed| |2023-10-31 Ever confirmed|0 |1 Status|UNCONFIRMED |NEW --- Comment #2 from Thomas Schwinge <tschwinge at gcc dot gnu.org> --- While you (Gaius) here report test failure, similar to what Maciej had reported in PR112091 "rs6000: redefinition of 'constexpr long double std::abs(long double)', while building libgm2", I can't even build libgm2 anymore. Similar had reported Eric (CCed here) on GCC IRC, 2023-10-20: <ericgallager> ok now this is an error I haven't seen before <ericgallager> /home/egallager/gcc/.cfarm135_build.build/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/bits/std_abs.h:137:3: error: redefinition of 'constexpr long double std::abs(long double)' <ericgallager> seen on cfarm135 <ericgallager> I think I remember something about __float128 being weird on certain powerpc systems? Is there a configure flag that affects it? <ericgallager> I'll open a bug about it... <ericgallager> although actually wait... I'm not quite sure the component, though... it's an error from a libstdc++ header, but it shows up while building KeyBoardLEDs.lo for libm2cor in libgm2, but only for a specific target... For example, I've got on powerpc64le-unknown-linux-gnu on indeed old Ubuntu 14.04 "trusty": +#define M2C_LONGREAL_FLOAT128 1 +#define M2C_LONGREAL_PPC64LE 1 ..., and this fails to build as follows: libtool: compile: [...]/build-gcc/./gcc/xg++ -B[...]/build-gcc/./gcc/ -nostdinc++ -nostdinc++ -I[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/powerpc64le-unknown-linux-gnu -I[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include -I[...]/source-gcc/libstdc++-v3/libsupc++ -I[...]/source-gcc/libstdc++-v3/include/backward -I[...]/source-gcc/libstdc++-v3/testsuite/util -L[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/src -L[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/src/.libs -L[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs -B/powerpc64le-unknown-linux-gnu/bin/ -B/powerpc64le-unknown-linux-gnu/lib/ -isystem /powerpc64le-unknown-linux-gnu/include -isystem /powerpc64le-unknown-linux-gnu/sys-include -c -I[...]/source-gcc/libgm2/libm2cor -g -O2 -D_GNU_SOURCE -g -O2 -I. -I.. -I[...]/source-gcc/gcc/m2/gm2-libs -I[...]/source-gcc/gcc/m2/gm2-libs-iso -DBUILD_GM2_LIBS -I[...]/source-gcc/libgm2/libm2cor/../ -I[...]/source-gcc/libgm2/libm2cor/../libm2iso -mabi=ieeelongdouble [...]/source-gcc/libgm2/libm2cor/KeyBoardLEDs.cc -fPIC -DPIC -o .libs/KeyBoardLEDs.o cc1plus: warning: Using IEEE extended precision ‘long double’ [-Wpsabi] In file included from [...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/cstdlib:81, from [...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/stdlib.h:36, from [...]/source-gcc/libgm2/libm2cor/KeyBoardLEDs.cc:43: [...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/bits/std_abs.h:137:3: error: redefinition of ‘constexpr long double std::abs(long double)’ 137 | abs(__float128 __x) | ^~~ [...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/bits/std_abs.h:79:3: note: ‘constexpr long double std::abs(long double)’ previously defined here 79 | abs(long double __x) | ^~~ make[5]: *** [KeyBoardLEDs.lo] Error 1 [...] libtool: compile: [...]/build-gcc/./gcc/xg++ -B[...]/build-gcc/./gcc/ -nostdinc++ -nostdinc++ -I[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/powerpc64le-unknown-linux-gnu -I[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include -I[...]/source-gcc/libstdc++-v3/libsupc++ -I[...]/source-gcc/libstdc++-v3/include/backward -I[...]/source-gcc/libstdc++-v3/testsuite/util -L[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/src -L[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/src/.libs -L[...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs -B/powerpc64le-unknown-linux-gnu/bin/ -B/powerpc64le-unknown-linux-gnu/lib/ -isystem /powerpc64le-unknown-linux-gnu/include -isystem /powerpc64le-unknown-linux-gnu/sys-include -c -I[...]/source-gcc/libgm2/libm2pim -g -O2 -D_GNU_SOURCE -g -O2 -I. -I.. -I[...]/source-gcc/gcc/m2/gm2-libs -I[...]/source-gcc/gcc/m2/gm2-libs-iso -DBUILD_GM2_LIBS -I[...]/source-gcc/libgm2/libm2pim/../ -I[...]/source-gcc/libgm2/libm2pim/../libm2iso -mabi=ieeelongdouble [...]/source-gcc/libgm2/libm2pim/wrapc.cc -fPIC -DPIC -o .libs/wrapc.o cc1plus: warning: Using IEEE extended precision ‘long double’ [-Wpsabi] In file included from [...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/cmath:49, from [...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/math.h:36, from [...]/source-gcc/libgm2/libm2pim/wrapc.cc:35: [...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/bits/std_abs.h:137:3: error: redefinition of ‘constexpr long double std::abs(long double)’ 137 | abs(__float128 __x) | ^~~ [...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/bits/std_abs.h:79:3: note: ‘constexpr long double std::abs(long double)’ previously defined here 79 | abs(long double __x) | ^~~ In file included from [...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/bits/stl_pair.h:60, from [...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/bits/stl_algobase.h:64, from [...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/bits/specfun.h:43, from [...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/cmath:3699: [...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/type_traits:514:12: error: redefinition of ‘struct std::__is_floating_point_helper<long double>’ 514 | struct __is_floating_point_helper<__float128> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/type_traits:479:12: note: previous definition of ‘struct std::__is_floating_point_helper<long double>’ 479 | struct __is_floating_point_helper<long double> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/bits/stl_algobase.h:1060:3: error: redefinition of ‘constexpr long long int std::__size_to_integer(long double)’ 1060 | __size_to_integer(__float128 __n) { return (long long)__n; } | ^~~~~~~~~~~~~~~~~ [...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/bits/stl_algobase.h:1057:3: note: ‘constexpr long long int std::__size_to_integer(long double)’ previously defined here 1057 | __size_to_integer(long double __n) { return (long long)__n; } | ^~~~~~~~~~~~~~~~~ In file included from [...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/bits/specfun.h:44: [...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/limits:2089:12: error: redefinition of ‘struct std::numeric_limits<long double>’ 2089 | struct numeric_limits<__float128> | ^~~~~~~~~~~~~~~~~~~~~~~~~~ [...]/build-gcc/powerpc64le-unknown-linux-gnu/libstdc++-v3/include/limits:1820:12: note: previous definition of ‘struct std::numeric_limits<long double>’ 1820 | struct numeric_limits<long double> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ make[5]: *** [wrapc.lo] Error 1 If I to revert commit r14-4149-g81d5ca0b9b8431f1bd7a5ec8a2c94f04bb0cf032 "PR 108143/modula2 LONGREAL and powerpc64le-linux" (..., which by now means resolving conflicts due to subsequent changes), then I get clean build and test results.