-
-
Notifications
You must be signed in to change notification settings - Fork 2.8k
Description
Which feature would you like to have?
It turns out that 64-bit aarch64 kernel does not include 32-bit vDSO for ARMv7 applications, requiring additional CROSS_COMPILE_COMPAT make variable to point to 32-bit compiler upon kernel compilation.
This is because aarch64 GCC does not support 32-bit mode, requiring separate cross-compiler targeting 32-bit arm specifically. Clang does not have this drawback.
Without vDSO in 64-bit kernel, 32-bit applications with heavy use of gettimeofday system call will have quite a performance penalty.
More information: https://sigma-star.at/blog/2024/02/aarch64-32-bit-compat-pitfall/
Somewhere here CROSS_COMPILE_COMPAT=arm-linux-gnueabi- should be added.
build/lib/functions/compilation/kernel-make.sh
Lines 48 to 54 in e172058
| common_make_params_quoted=( | |
| # @TODO: introduce O=path/to/binaries, so sources and bins are not in the same dir; this has high impact in headers packaging though. | |
| "${DISTCC_MAKE_J_PARALLEL[@]}" # Parallel compile, "-j X" for X cpus; determined by distcc, or is just "$CTHREADS" if distcc is not enabled. | |
| "ARCH=${ARCHITECTURE}" # Key param. Everything depends on this. | |
| "LOCALVERSION=-${BRANCH}-${LINUXFAMILY}" # Change the internal kernel version to include the family. Changing this causes recompiles # @TODO change hack at .config; that might handles mtime better |