https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118280
Bug ID: 118280 Summary: undefined symbol __atomic_test_and_set in libstdc++.so on Microblaze Product: gcc Version: 14.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: thomas.petazz...@free-electrons.com Target Milestone: --- Since gcc 14.x, the libstdc++ library uses __atomic_test_and_set, and this symbol isn't available on Microblaze, causing build failures such as: configure:2557: checking for C++ compiler default output file name configure:2579: /home/thomas/buildroot/buildroot/outputs/gcc14-microblaze/host/bin/microblazeel-buildroot-linux-gnu-g++ -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g0 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 conftest.cpp >&5 /home/thomas/buildroot/buildroot/outputs/gcc14-microblaze/host/lib/gcc/microblazeel-buildroot-linux-gnu/14.2.0/../../../../microblazeel-buildroot-linux-gnu/bin/ld: /home/thomas/buildroot/buildroot/outputs/gcc14-microblaze/host/lib/gcc/microblazeel-buildroot-linux-gnu/14.2.0/../../../../microblazeel-buildroot-linux-gnu/lib/libstdc++.so: undefined reference to `__atomic_test_and_set' collect2: error: ld returned 1 exit status configure:2583: $? = 1 configure:2621: result: configure: failed program was: | /* confdefs.h. */ | #define PACKAGE_NAME "" | #define PACKAGE_TARNAME "" | #define PACKAGE_VERSION "" | #define PACKAGE_STRING "" | #define PACKAGE_BUGREPORT "" | #define PACKAGE "acpitool" | #define VERSION "0.5.1" | /* end confdefs.h. */ | | int | main () | { | | ; | return 0; The exact same code builds fine with gcc 13.x. Reproducer: $ git clone https://gitlab.com/buildroot.org/buildroot.git $ cat > .config<<EOF BR2_microblazeel=y BR2_GCC_VERSION_14_X=y BR2_TOOLCHAIN_BUILDROOT_CXX=y BR2_PACKAGE_ACPITOOL=y EOF $ make olddefconfig $ make