Apparently GCC 12 needs proper glibc for all-target-libgcc. In particular libatomic fails to build due to missing/incorrect definition of MB_LEN_MAX: make[4]: Entering directory '/usr/src/RPM/BUILD/cross-toolchain-aarch64-linux-gnu-20210831/obj_gcc/aarch64-linux-gnu/libatomic' /bin/sh ./libtool --tag=CC --mode=compile /usr/src/RPM/BUILD/cross-toolchain-aarch64-linux-gnu-20210831/obj_gcc/./gcc/xgcc -B/usr/src/RPM/BUILD/cross-toolchain-aarch64-linux-gnu-20210831/obj_gcc/./gcc/ -B/usr/aarch64-linux-gnu/bin/ -B/usr/aarch64-linux-gnu/lib/ -isystem /usr/aarch64-linux-gnu/include -isystem /usr/aarch64-linux-gnu/sys-include --sysroot=/usr/src/RPM/BUILD/cross-toolchain-aarch64-linux-gnu-20210831/stage/usr/lib/aarch64-linux-gnu/sys-root -DHAVE_CONFIG_H -I../../../gcc/libatomic/config/linux/aarch64 -I../../../gcc/libatomic/config/posix -I../../../gcc/libatomic -I. -Wall -pthread -g -O2 -DN=1 -c -o load_1_.lo ../../../gcc/libatomic/load_n.c libtool: compile: /usr/src/RPM/BUILD/cross-toolchain-aarch64-linux-gnu-20210831/obj_gcc/./gcc/xgcc -B/usr/src/RPM/BUILD/cross-toolchain-aarch64-linux-gnu-20210831/obj_gcc/./gcc/ -B/usr/aarch64-linux-gnu/bin/ -B/usr/aarch64-linux-gnu/lib/ -isystem /usr/aarch64-linux-gnu/include -isystem /usr/aarch64-linux-gnu/sys-include --sysroot=/usr/src/RPM/BUILD/cross-toolchain-aarch64-linux-gnu-20210831/stage/usr/lib/aarch64-linux-gnu/sys-root -DHAVE_CONFIG_H -I../../../gcc/libatomic/config/linux/aarch64 -I../../../gcc/libatomic/config/posix -I../../../gcc/libatomic -I. -Wall -pthread -g -O2 -DN=1 -c ../../../gcc/libatomic/load_n.c -fPIC -DPIC -o .libs/load_1_.o In file included from /usr/src/RPM/BUILD/cross-toolchain-aarch64-linux-gnu-20210831/stage/usr/lib/aarch64-linux-gnu/sys-root/usr/include/stdlib.h:1035, from ../../../gcc/libatomic/config/linux/aarch64/host-config.h:25, from ../../../gcc/libatomic/libatomic_i.h:232, from ../../../gcc/libatomic/load_n.c:25: /usr/src/RPM/BUILD/cross-toolchain-aarch64-linux-gnu-20210831/stage/usr/lib/aarch64-linux-gnu/sys-root/usr/include/bits/stdlib.h: In function 'wctomb': /usr/src/RPM/BUILD/cross-toolchain-aarch64-linux-gnu-20210831/stage/usr/lib/aarch64-linux-gnu/sys-root/usr/include/bits/stdlib.h:86:3: error: #error "Assumed value of MB_LEN_MAX wrong" 86 | # error "Assumed value of MB_LEN_MAX wrong" | ^~~~~ make[4]: *** [Makefile:859: load_1_.lo] Error 1 Therefore use the (slow) 2 stage bootstrap, i.e. build C-only toolchain without libc, and use that one to cross-compile the complete target glibc.
This repo contains a spec file for building aarch64 targeted GCC cross-toolchain. The actual sources are in gcc-source, binutils-source, glibc-source, and kernel-source-5.4 packages.
Description
Languages
Shell
88.9%
Assembly
5.3%
CMake
3.4%
C++
1.3%
C
1.1%