Building rpi armv6 toolchain on macOS

Etan Kissling kissling@oberon.ch
Thu Mar 9 12:15:00 GMT 2017


Hi,

I'm trying to build a toolchain that supports cross compilation for the Raspberry Pi Zero W.
This requires building for ARMv6 (same as for the old Raspberry Pi 1).

The official repository contains a crosstool-ng config file here:
https://github.com/raspberrypi/tools/blob/master/configs/arm-rpi-4.9.3-linux-gnueabihf.config
Unfortunately, only Linux binaries are provided in the repo. So for macOS I need to start from this config.

The changes I did to the config file so far are:
Undefine CT_CONFIGURE_has_xz
Set CT_LOCAL_TARBALLS_DIR / CT_WORK_DIR / CT_PREFIX_DIR to reside on case-sensitive file systems
CT_EXTRA_CFLAGS_FOR_HOST="-fbracket-depth=512"
This fixes "[ERROR] /tmp/ct-ng/fs/.build/src/gcc-4.9.3/gcc/config/arm/neon.md:3486:10917: fatal error: bracket nesting level exceeded maximum of 256".
CT_WANTS_STATIC_LINK=n
CT_CC_GCC_STATIC_LIBSTDCXX=n
These two fix errors during initial sanity checking.
I'm currently stuck at the step "Installing C library headers & start files" where I get these errors during assembly of ../ports/sysdeps/unix/sysv/linux/arm/libc-aeabi_read_tp.S:
ccL1wvil.s: Assembler messages:
ccL1wvil.s:70: Error: invalid constant (ae) after fixup
ccL1wvil.s:143: Error: invalid constant (ff) after fixup

I tried with -mthumb (which leads to "conftest.c:14:1: sorry, unimplemented: Thumb-1 hard-float VFP ABI")
and with -nostartfiles (which lets assembly work for this file but doesn't work on the next one (../ports/sysdeps/unix/sysv/linux/arm/libc-do-syscall.S)

The complete build logs can be found here:
https://scriptreactor.com/rpi1-fixup-error.build.log
https://scriptreactor.com/rpi1-fixup-error-nostartfiles.build.log (with -nostartfiles)

Any idea on what could be tried next?

Xcode version: 8.2.1 (8C1002)
maxOS version: 10.12.3 (16D32)
crosstool-ng installed via "brew install crosstool-ng --with-grep"

Thanks for any input!

Etan





More information about the crossgcc mailing list