https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125197
Bug ID: 125197
Summary: [16 Regression] -m32 libstdc++ is built incorrectly
for sparc64
Product: gcc
Version: 16.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libstdc++
Assignee: unassigned at gcc dot gnu.org
Reporter: hjl.tools at gmail dot com
CC: jwakely at redhat dot com
Target Milestone: ---
Target: sparc64
libatomic/configure.tgt has
sparc)
case " ${CC} ${CFLAGS} " in
*" -m64 "*)
;;
*)
if test -z "$with_cpu"; then
XCFLAGS="${XCFLAGS} -mcpu=v9"
fi
esac
ARCH=sparc
;;
sparc64|sparcv9)
case " ${CC} ${CFLAGS} " in
*" -m32 "*)
XCFLAGS="${XCFLAGS} -mcpu=v9"
;;
esac
ARCH=sparc
;;
-m32 libatomic for sparc64 is built with -mcpu=v9. But
libstdc++-v3/configure.host
has
# Most can just use generic.
# THIS TABLE IS SORTED. KEEP IT THAT WAY.
case "${host_cpu}" in
cris*)
atomic_word_dir=cpu/cris
;;
i[4567]86 | x86_64)
atomic_flags="-march=native"
;;
sparc* | ultrasparc)
atomic_word_dir=cpu/sparc
atomic_flags="-mcpu=v9"
;;
esac
But -mcpu=v9 isn't used on -m32 libstdc++ for sparc64.