https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118977
Bug ID: 118977 Summary: m68k mcf5282 undefined symbol __atomic_test_and_set from atomic_base.h Product: gcc Version: 14.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: joel at gcc dot gnu.org Target Milestone: --- Target m68k-rtems but likely repeatable on m68k-elf GCC version: m68k-rtems7-gcc (GCC) 14.2.0 20240801 (RTEMS 7, RSB d5d9d1a4470134ea9292514c43d6a57402564578-modified, Newlib 1b3dcfd) This is the error from compiling and linking an RTEMS C++ test that targets "-mcpu=5282". Looking at a manual for that, it appears to be "ISA A" which doesn't include a test and set instruction. : /home/joel/rtems-work/tools/7/lib/gcc/m68k-rtems7/14.2.0/include/c++/bits/atomic_base.h:226:(.text.Init+0x19a): undefined reference to `__atomic_test_and_set' collect2: error: ld returned 1 exit status Looking at the file ./libstdc++-v3/include/bits/atomic_base.h, I see a couple of calls to that method. The test is located at https://gitlab.rtems.org/rtems/rtos/rtems/-/blob/main/testsuites/sptests/spcxx01/init.cc?ref_type=heads. We do have libatomic.a installed and a grep shows it has variants of __atomic_test_and_set. $ m68k-rtems7-nm -g /home/joel/rtems-work/tools/7/lib/gcc/m68k-rtems7/14.2.0/m5208/libatomic.a | grep atomic_test_and_ U __atomic_test_and_set 00000000 T __atomic_test_and_set_1 00000000 T __atomic_test_and_set_2 00000000 T __atomic_test_and_set_4 00000000 T __atomic_test_and_set_8 This set of symbols matches what is in an arm-rtems version of the library. And our test compiles and links fine on that.