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.

Reply via email to