Skip to content

Support CROSS_COMPILE_COMPAT

The arm64 Linux kernel provides a 32-bit compat vDSO, which is built when CROSS_COMPILE_COMPAT is passed via the command line:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm64/Kconfig?h=v5.12#n1279

TuxSuite currently does not handle this:

$ cat arm64-compat-vdso.yml
sets:
  - name: defconfigs
    builds:
    - git_repo: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
      git_ref: master
      target_arch: arm64
      toolchain: clang-nightly
      kconfig: defconfig
      targets:
      - config
      - kernel
      - modules
      make_variables:
        CROSS_COMPILE_COMPAT: arm-linux-gnueabihf-
        LLVM: 1
        LLVM_IAS: 1

$ tuxsuite build-set --set-name defconfigs --tux-config arm64-compat-vdso.yml
Building Linux Kernel build set defconfigs
Error: Unhandled make variable specified: 'CROSS_COMPILE_COMPAT:arm-linux-gnueabihf-'

Clang builds should work fine without any changes on the TuxMake side of things due to https://git.kernel.org/linus/ef94340583eec5cb1544dc41a87baa4f684b3fe1 but GCC builds will need gcc-arm-linux-gnueabihf and binutils-arm-linux-gnueabihf added to the arm64 images to be able to use this effectively. Adding binutils-arm-linux-gnueabihf to the arm64 clang images will allow us to test older kernels that do not have that commit in it.

cc @nickdesaulniers