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

            Bug ID: 113888
           Summary: libm2pim/target.c doesn't assemble on 32-bit
                    Linux/sparc64
           Product: gcc
           Version: 14.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: modula2
          Assignee: gaius at gcc dot gnu.org
          Reporter: ro at gcc dot gnu.org
  Target Milestone: ---
            Target: sparc64-unknown-linux-gnu

When doing a multilib build of trunk on Linux/sparc64, the 32-bit
libm2pim/target.c
fails to assemble:

libtool: compile: 
/var/gcc/regression/master/6.6.15-gcc-gas-gld/build/./gcc/xgcc
-B/var/gcc/regression/master/6.6.15-gcc-gas-gld/build/./gcc/
-B/vol/gcc/sparc64-unknown-linux-gnu/bin/
-B/vol/gcc/sparc64-unknown-linux-gnu/lib/ -isystem
/vol/gcc/sparc64-unknown-linux-gnu/include -isystem
/vol/gcc/sparc64-unknown-linux-gnu/sys-include -fchecking=1 -m32
-DHAVE_CONFIG_H -I. -I/vol/gcc/src/hg/master/local/libgm2/libm2pim -I.. -I.
-I.. -I/vol/gcc/src/hg/master/local/gcc/m2/gm2-libs
-I/vol/gcc/src/hg/master/local/gcc/m2/gm2-libs-iso -DBUILD_GM2_LIBS
-I/vol/gcc/src/hg/master/local/libgm2/libm2pim/../
-I/vol/gcc/src/hg/master/local/libgm2/libm2pim/../libm2iso -g -O2 -m32 -MT
libm2pim_la-target.lo -MD -MP -MF .deps/libm2pim_la-target.Tpo -c
/vol/gcc/src/hg/master/local/libgm2/libm2pim/target.c  -fPIC -DPIC -o
.libs/libm2pim_la-target.o
/tmp/ccoaQS64.s: Assembler messages:
/tmp/ccoaQS64.s:110: Error: symbol `exp10' is already defined
make[9]: *** [Makefile:676: libm2pim_la-target.lo] Error 1

while 64-bit compilation works.

The issue turns out to be multifold:

* The preprocessed input has

extern long double exp10l (long double __x) __asm__ ("" "exp10") __attribute__
((__nothrow__ , __leaf__));

* This leads to both the exp10 and exp10l fallback definitions end up with
  same name (exp10), causing the redefinition error from gas.

* Ultimately, the error is different, though: none of HAVE_EXP10 and
HAVE_EXP10L
  are ever checked for, otherwise the fallsbacks wouldn't be used at all.
  The same applies to a couple of other autoconf macros used inside the
  libgm2 tree.

I'm going to provide a patch to fix all that.

Reply via email to