Alexey Sheplyakov 356b7e47c9 Use 2-stage bootstrap
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.
2022-06-05 19:49:24 +04:00
2021-07-29 19:58:37 +04:00
2022-06-05 19:49:24 +04:00

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
GCC based cross-toolchains for arm, riscv, and other architectures
Readme 442 MiB
Languages
Shell 88.9%
Assembly 5.3%
CMake 3.4%
C++ 1.3%
C 1.1%