https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122429
Bug ID: 122429
Summary: [16 Regression] libatomic vs glibc build issue
Product: gcc
Version: 16.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: driver
Assignee: unassigned at gcc dot gnu.org
Reporter: law at gcc dot gnu.org
Target Milestone: ---
So this change:
commit e63cf4b130b86dd7dde1bf499d3d40faca10ea2e
Author: Prathamesh Kulkarni <[email protected]>
Date: Thu Oct 9 07:07:24 2025 +0000
PR81358: Enable automatic linking of libatomic.
ChangeLog:
PR driver/81358
* Makefile.def: Add no_atomic=true for libraries that don't depend
on
libatomic.
* Makefile.tpl: Export TARGET_CONFIGDIRS and create rule to
add dependencies for libatomic.
* configure.ac: Add libatomic to bootstrap_target_libs.
* Makefile.in: Regenerate.
* configure: Regenerate.
[ ... ]
Appears to leave us in a bit of a bind.
We can't build libatomic as a cross if we don't have glibc already built. And
we can't build glibc without libatomic being built.
During the glibc build without having built & installed libatomic we get
something like this:
csky-linux-gnu-gcc -shared -static-libgcc
-Wl,-dynamic-linker=/home/jlaw/jenkins/workspace/csky-linux-gnu/csky-linux-gnu-obj/glibc/../../csky-linux-gnu-installed/csky-linux-gnu/lib/ld-linux-cskyv2.so.1
-Wl,-z,defs
-B/home/jlaw/jenkins/workspace/csky-linux-gnu/csky-linux-gnu-obj/glibc/csu/
-Wl,-z,relro
-L/home/jlaw/jenkins/workspace/csky-linux-gnu/csky-linux-gnu-obj/glibc
-L/home/jlaw/jenkins/workspace/csky-linux-gnu/csky-linux-gnu-obj/glibc/math
-L/home/jlaw/jenkins/workspace/csky-linux-gnu/csky-linux-gnu-obj/glibc/elf
-L/home/jlaw/jenkins/workspace/csky-linux-gnu/csky-linux-gnu-obj/glibc/dlfcn
-L/home/jlaw/jenkins/workspace/csky-linux-gnu/csky-linux-gnu-obj/glibc/nss
-L/home/jlaw/jenkins/workspace/csky-linux-gnu/csky-linux-gnu-obj/glibc/nis
-L/home/jlaw/jenkins/workspace/csky-linux-gnu/csky-linux-gnu-obj/glibc/rt
-L/home/jlaw/jenkins/workspace/csky-linux-gnu/csky-linux-gnu-obj/glibc/resolv
-L/home/jlaw/jenkins/workspace/csky-linux-gnu/csky-linux-gnu-obj/glibc/mathvec
-L/home/jlaw/jenkins/workspace/csky-linux-gnu/csky-linux-gnu-obj/glibc/support
-L/home/jlaw/jenkins/workspace/csky-linux-gnu/csky-linux-gnu-obj/glibc/misc
-L/home/jlaw/jenkins/workspace/csky-linux-gnu/csky-linux-gnu-obj/glibc/debug
-L/home/jlaw/jenkins/workspace/csky-linux-gnu/csky-linux-gnu-obj/glibc/nptl
-L./
-Wl,-rpath-link=/home/jlaw/jenkins/workspace/csky-linux-gnu/csky-linux-gnu-obj/glibc:/home/jlaw/jenkins/workspace/csky-linux-gnu/csky-linux-gnu-obj/glibc/math:/home/jlaw/jenkins/workspace/csky-linux-gnu/csky-linux-gnu-obj/glibc/elf:/home/jlaw/jenkins/workspace/csky-linux-gnu/csky-linux-gnu-obj/glibc/dlfcn:/home/jlaw/jenkins/workspace/csky-linux-gnu/csky-linux-gnu-obj/glibc/nss:/home/jlaw/jenkins/workspace/csky-linux-gnu/csky-linux-gnu-obj/glibc/nis:/home/jlaw/jenkins/workspace/csky-linux-gnu/csky-linux-gnu-obj/glibc/rt:/home/jlaw/jenkins/workspace/csky-linux-gnu/csky-linux-gnu-obj/glibc/resolv:/home/jlaw/jenkins/workspace/csky-linux-gnu/csky-linux-gnu-obj/glibc/mathvec:/home/jlaw/jenkins/workspace/csky-linux-gnu/csky-linux-gnu-obj/glibc/support:/home/jlaw/jenkins/workspace/csky-linux-gnu/csky-linux-gnu-obj/glibc/misc:/home/jlaw/jenkins/workspace/csky-linux-gnu/csky-linux-gnu-obj/glibc/debug:/home/jlaw/jenkins/workspace/csky-linux-gnu/csky-linux-gnu-obj/glibc/nptl:./
-o
/home/jlaw/jenkins/workspace/csky-linux-gnu/csky-linux-gnu-obj/glibc/elf/sotruss-lib.so
/home/jlaw/jenkins/workspace/csky-linux-gnu/csky-linux-gnu-obj/glibc/csu/abi-note.o
-Wl,--as-needed
/home/jlaw/jenkins/workspace/csky-linux-gnu/csky-linux-gnu-obj/glibc/elf/sotruss-lib.os
-Wl,--no-as-needed -Wl,--start-group
/home/jlaw/jenkins/workspace/csky-linux-gnu/csky-linux-gnu-obj/glibc/libc.so
/home/jlaw/jenkins/workspace/csky-linux-gnu/csky-linux-gnu-obj/glibc/libc_nonshared.a
-Wl,--as-needed
/home/jlaw/jenkins/workspace/csky-linux-gnu/csky-linux-gnu-obj/glibc/elf/ld.so
-Wl,--no-as-needed -Wl,--end-group
/home/jlaw/jenkins/workspace/csky-linux-gnu/csky-linux-gnu-installed/bin/../lib/gcc/csky-linux-gnu/16.0.0/../../../../csky-linux-gnu/bin/ld:
cannot find -latomic: No such file or directory
collect2: error: ld returned 1 exit status
My tester has observed this on csky-linux-gnu, microblaze-linux, sh3-linux-gnu,
sh3eb-linux-gnu. Essentially every target where my tester builds cross glibc.
If we try to build libatomic it fails during the configure step:
/home/jlaw/jenkins/workspace/csky-linux-gnu/csky-linux-gnu-obj/gcc/../../csky-linux-gnu-installed/csky-linux-gnu/bin/ld:
cannot find crt1.o: No such file or directory
/home/jlaw/jenkins/workspace/csky-linux-gnu/csky-linux-gnu-obj/gcc/../../csky-linux-gnu-installed/csky-linux-gnu/bin/ld:
cannot find -lc: No such file or directory
collect2: error: ld returned 1 exit status
Prathamesh, I'm not sure how this is expected to work in a cross configuration.
I'm certainly open to the possibility that procedures for building cross
toolchains using glibc may need to change.