From 944a4eb089b33241b21979253e0a373ce0bdf984 Mon Sep 17 00:00:00 2001 From: Ryan Libby Date: Thu, 7 May 2026 10:30:05 -0700 Subject: stand/libsa/zfs: disable ZSTD_TRACE and DYNAMIC_BMI2 code paths Enabling ZSTD_TRACE leaves behind undefined weak symbols, which causes a problem for gcc builds. The bfd linker emits an obscure error about overlapping FDEs. We don't need ZSTD_TRACE for libsa, so just disable it. Also disable BMI2 instruction optimizations. The addition of the optional BMI2 code paths caused the boot loader binaries to grow larger (28 KiB for clang, 32 KiB for gcc). The boot loader binaries are size constrained, and this pushed the gcc-generated lua_loader.bin over the 500000 byte limit, and the clang one to within 4k of the limit. Fixes: 8a62a2a5659d ("zfs: merge openzfs/zfs@f8e5af53e") Reviewed by: delphij, imp, mm Differential Revision: https://reviews.freebsd.org/D56866 --- stand/libsa/zfs/Makefile.inc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'stand') diff --git a/stand/libsa/zfs/Makefile.inc b/stand/libsa/zfs/Makefile.inc index 3df6779559c9..540635d144ef 100644 --- a/stand/libsa/zfs/Makefile.inc +++ b/stand/libsa/zfs/Makefile.inc @@ -75,9 +75,13 @@ CFLAGS.zfs.c+= -DHAS_ZSTD_ZFS \ # # ZSTD coding style has some issues, so suppress clang's warnings. Also, zstd's # use of BMI instrucitons is broken in this environment, so avoid them. +# Avoid generating the DYNAMIC_BMI2 code paths because the code duplication +# inflates the resulting binaries. Disable ZSTD_TRACE because we don't need it +# and the bfd linker trips over the weak undefined symbols it generates. # .for i in ${ZSTD_SRC} -CFLAGS.$i+= -U__BMI__ ${NO_WBITWISE_INSTEAD_OF_LOGICAL} +CFLAGS.$i+= -U__BMI__ -DDYNAMIC_BMI2=0 -DZSTD_TRACE=0 \ + ${NO_WBITWISE_INSTEAD_OF_LOGICAL} .endfor CFLAGS.zfs_zstd.c+= -DIN_BASE -DIN_LIBSA -- cgit v1.3