[Bug 272740] CURRENT with ZFS not bootable when built with LLVM from ports
Date: Wed, 26 Jul 2023 18:58:01 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=272740 Bug ID: 272740 Summary: CURRENT with ZFS not bootable when built with LLVM from ports Product: Base System Version: CURRENT Hardware: amd64 OS: Any Status: New Severity: Affects Only Me Priority: --- Component: kern Assignee: bugs@FreeBSD.org Reporter: bsd@orsolic.org Building -CURRENT (2023-07-17 be4c7f273508) without system compiler (with LLVM16 from ports) results in unbootable system: Preloaded elf kernel "/boot/kernel/kernel" at 0xffffffff82328000. Preloaded elf obj module "/boot/kernel/zfs.ko" at 0xffffffff82329090. Preloaded boot_entropy_cache "/boot/entropy" at 0xffffffff823298f8. Preloaded elf obj module "/boot/kernel/cryptodev.ko" at 0xffffffff82329950. Preloaded hostuuid "/etc/hostid" at 0xffffffff8232a140. kldload: unexpected relocation type 42, symbol index 8662 link_elf_obj: symbol __stack_chk_guard undefined KLD file zfs.ko - could not finalize loading ... Trying to mount root from zfs:builder/ROOT/b4 []... Mounting from zfs:builder/ROOT/b4 failed with error 2: unknown file system. Loader variables: vfs.root.mountfrom=zfs:builder/ROOT/b4 Manual root filesystem specification: <fstype>:<device> [options] Mount <device> using filesystem <fstype> and with the specified (optional) option list. eg. ufs:/dev/da0s1a zfs:zroot/ROOT/default cd9660:/dev/cd0 ro (which is equivalent to: mount -t cd9660 -o ro /dev/cd0 /) ? List valid disk boot devices . Yield 1 second (for background tasks) <empty line> Abort manual input Patching and rebuilding LLVM16 with this patch results in bootable system: --- llvm/lib/CodeGen/TargetLoweringBase.cpp.orig 2023-06-11 00:58:16.000000000 +0200 +++ llvm/lib/CodeGen/TargetLoweringBase.cpp 2023-07-15 14:43:52.151958000 +0200 @@ -1979,8 +1979,7 @@ // FreeBSD has "__stack_chk_guard" defined externally on libc.so if (TM.getRelocationModel() == Reloc::Static && - !TM.getTargetTriple().isWindowsGNUEnvironment() && - !TM.getTargetTriple().isOSFreeBSD()) + !TM.getTargetTriple().isWindowsGNUEnvironment()) GV->setDSOLocal(true); } } Patch was taken from: https://cgit.freebsd.org/src/commit/?h=stable/13&id=e8e5d75e6a9676e76c3bfd6d1d52561ffbb40846 Few months ago it was possible to use LLVM from ports to build kernel and world, but I don't remember the details. This patch was tested in bhyve VM and on real hardware. On real hardware it was possible to boot system without patched compiler when zfs.ko (options ZFS and GEOM_ELI with devices crypto and cryptodev) is built into the kernel. But then other modules (acpi_ibm, iic, drm, i915kms, acpi_video, ... pf, various ng_* and so on) will fail to load with same reason. Didn't try including zfs.ko into the kernel in the VM. -- You are receiving this mail because: You are the assignee for the bug.