public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* sparcv9 build failure with GCC mainline
@ 2023-12-07  1:14 Joseph Myers
  2023-12-07 12:35 ` Adhemerval Zanella Netto
  0 siblings, 1 reply; 3+ messages in thread
From: Joseph Myers @ 2023-12-07  1:14 UTC (permalink / raw)
  To: libc-alpha

Since GCC commit f31a019d1161ec78846473da743aedf49cca8c27 "Emit funcall 
external declarations only if actually used.", the glibc testsuite has 
failed to build for 32-bit SPARC with GCC mainline.

/scratch/jmyers/glibc-bot/install/compilers/sparc64-linux-gnu/lib/gcc/sparc64-glibc-linux-gnu/14.0.0/../../../../sparc64-glibc-linux-gnu/bin/ld: /scratch/jmyers/glibc-bot/install/compilers/sparc64-linux-gnu/lib/gcc/sparc64-glibc-linux-gnu/14.0.0/32/libgcc.a(_divsi3.o): in function `.div':
/scratch/jmyers/glibc-bot/src/gcc/libgcc/config/sparc/lb1spc.S:138: multiple definition of `.div'; /scratch/jmyers/glibc-bot/build/glibcs/sparcv9-linux-gnu/glibc/libc.a(sdiv.o):/scratch/jmyers/glibc-bot/src/glibc/gnulib/../sysdeps/sparc/sparc32/sparcv9/sdiv.S:13: first defined here
/scratch/jmyers/glibc-bot/install/compilers/sparc64-linux-gnu/lib/gcc/sparc64-glibc-linux-gnu/14.0.0/../../../../sparc64-glibc-linux-gnu/bin/ld: disabling relaxation; it will not work with multiple definitions
collect2: error: ld returned 1 exit status
make[3]: *** [../Rules:298: /scratch/jmyers/glibc-bot/build/glibcs/sparcv9-linux-gnu/glibc/nptl/tst-cancel24-static] Error 1

https://sourceware.org/pipermail/libc-testresults/2023q4/012154.html

I'm not sure of the exact sequence of undefined references that cause 
first the glibc object file defining .div and then the libgcc object file 
defining both .div and .udiv to be pulled in (which must have been 
perturbed by that GCC change in a way that introduced the build failure), 
but I think the failure illustrates that it's inherently fragile for glibc 
to define symbols in separate object files that libgcc defines in the same 
object file.

Should this be fixed by making glibc also define .udiv and .div together, 
or is there some better approach for fixing this build failure?  It's 
unfortunate that the division of libgcc functions into object files is 
part of the libgcc interface that glibc needs to know about (in this case, 
when glibc also defines some of the same functions), but it seems that it 
is (for static linking).

-- 
Joseph S. Myers
joseph@codesourcery.com

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2023-12-07 15:17 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-12-07  1:14 sparcv9 build failure with GCC mainline Joseph Myers
2023-12-07 12:35 ` Adhemerval Zanella Netto
2023-12-07 15:17   ` Joseph Myers

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).