We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
When cross compile from x86_64 for arm64, zfs_config.h contains those flags:
zfs_config.h
/* Define if host toolchain supports AVX */ #define HAVE_AVX 1 /* Define if host toolchain supports AVX2 */ #define HAVE_AVX2 1 ... /* Define if host toolchain supports SSE */ #define HAVE_SSE 1 /* Define if host toolchain supports SSE2 */ #define HAVE_SSE2 1 /* Define if host toolchain supports SSE3 */ #define HAVE_SSE3 1 /* Define if host toolchain supports SSE4.1 */ #define HAVE_SSE4_1 1 /* Define if host toolchain supports SSE4.2 */ #define HAVE_SSE4_2 1 /* Define if host toolchain supports SSSE3 */ #define HAVE_SSSE3 1
The comment say those flags are for host, not for target
But in (zfs_fletcher.c)[https://github.com/openzfs/zfs/blob/master/module/zcommon/zfs_fletcher.c#L176], those flags are used for kernel code.
zfs_fletcher.c
./configure KERNEL_LLVM=1 KERNEL_ARCH=arm64 KERNEL_CROSS_COMPILE=aarch64-unknown-linux-gnu- --with-config=kernel --enable-linux-builtin ./copy-builtin /usr/src/linux
Then enable CONFIG_ZFS=y and compile kernel
CONFIG_ZFS=y
make ARCH=arm64 CROSS_COMPILE=aarch64-unknown-linux-gnu- LLVM=1 LLVM_IAS=1 -j32
AR built-in.a AR vmlinux.a GEN .tmp_initcalls.lds LD vmlinux.o OBJCOPY modules.builtin.modinfo GEN modules.builtin GEN .vmlinux.objs MODPOST Module.symvers UPD include/generated/utsversion.h CC init/version-timestamp.o KSYMS .tmp_vmlinux0.kallsyms.S AS .tmp_vmlinux0.kallsyms.o LD .tmp_vmlinux1 ld.lld: error: undefined symbol: fletcher_4_sse2_ops >>> referenced by __efistub_vsprintf.c >>> vmlinux.o:(fletcher_4_impls) ld.lld: error: undefined symbol: fletcher_4_ssse3_ops >>> referenced by __efistub_vsprintf.c >>> vmlinux.o:(fletcher_4_impls) ld.lld: error: undefined symbol: fletcher_4_avx2_ops >>> referenced by __efistub_vsprintf.c >>> vmlinux.o:(fletcher_4_impls) ld.lld: warning: <internal>:(.eh_frame) is being placed in '.eh_frame' make[2]: *** [scripts/Makefile.vmlinux:77: vmlinux] Error 1
The text was updated successfully, but these errors were encountered:
No branches or pull requests
System information
Describe the problem you're observing
When cross compile from x86_64 for arm64,
zfs_config.h
contains those flags:The comment say those flags are for host, not for target
But in (
zfs_fletcher.c
)[https://github.com/openzfs/zfs/blob/master/module/zcommon/zfs_fletcher.c#L176], those flags are used for kernel code.Describe how to reproduce the problem
Then enable
CONFIG_ZFS=y
and compile kernelInclude any warning/errors/backtraces from the system logs
The text was updated successfully, but these errors were encountered: