# git rev-parse -q --verify 60ecfddd7a092f9cbd2398dbc55da3abbb803ff0^{commit} # git fetch -q -n -f git://gitlab.ozlabs.ibm.com/mirror/linux-kbuild.git for-next # git rev-parse -q --verify 60ecfddd7a092f9cbd2398dbc55da3abbb803ff0^{commit} 60ecfddd7a092f9cbd2398dbc55da3abbb803ff0 # git checkout -q -f -B kisskb 60ecfddd7a092f9cbd2398dbc55da3abbb803ff0 # git clean -qxdf # < git log -1 # commit 60ecfddd7a092f9cbd2398dbc55da3abbb803ff0 # Author: Masahiro Yamada # Date: Fri Sep 16 15:29:53 2022 +0900 # # linux/export: use inline assembler to populate symbol CRCs # # Since commit 7b4537199a4a ("kbuild: link symbol CRCs at final link, # removing CONFIG_MODULE_REL_CRCS"), the module versioning on the # (non-upstreamed-yet) kvx Linux port is broken due to unexpected padding # for __crc_* symbols. The kvx GCC adds padding so u32 gets 8-byte # alignment instead of 4. # # I do not know if this happens for upstream architectures in general, # but any compiler has the freedom to insert padding for faster access. # # Use the inline assembler to directly specify the wanted data layout. # This is how we previously did before the breakage. # # Link: https://lore.kernel.org/lkml/20220817161438.32039-1-ysionneau@kalray.eu/ # Link: https://lore.kernel.org/linux-kbuild/31ce5305-a76b-13d7-ea55-afca82c46cf2@kalray.eu/ # Fixes: 7b4537199a4a ("kbuild: link symbol CRCs at final link, removing CONFIG_MODULE_REL_CRCS") # Reported-by: Yann Sionneau # Signed-off-by: Masahiro Yamada # Tested-by: Yann Sionneau # < /opt/cross/kisskb/korg/gcc-11.1.0-nolibc/aarch64-linux/bin/aarch64-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-11.1.0-nolibc/aarch64-linux/bin/aarch64-linux-ld --version # < git log --format=%s --max-count=1 60ecfddd7a092f9cbd2398dbc55da3abbb803ff0 # < make -s -j 48 ARCH=arm64 O=/kisskb/build/kbuild_arm64-defconfig_arm64-gcc11 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-11.1.0-nolibc/aarch64-linux/bin/aarch64-linux- defconfig # < make -s -j 48 ARCH=arm64 O=/kisskb/build/kbuild_arm64-defconfig_arm64-gcc11 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-11.1.0-nolibc/aarch64-linux/bin/aarch64-linux- help # make -s -j 48 ARCH=arm64 O=/kisskb/build/kbuild_arm64-defconfig_arm64-gcc11 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-11.1.0-nolibc/aarch64-linux/bin/aarch64-linux- olddefconfig # make -s -j 48 ARCH=arm64 O=/kisskb/build/kbuild_arm64-defconfig_arm64-gcc11 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-11.1.0-nolibc/aarch64-linux/bin/aarch64-linux- Completed OK # rm -rf /kisskb/build/kbuild_arm64-defconfig_arm64-gcc11 # Build took: 0:10:02.241509