Created attachment 212360 [details]
Fix emulators/qemu build with lld 10.0.0
As reported in bug 244251, with clang and lld 10.0.0 the emulators/qemu port fails in the configure stage:
===> Configuring for qemu-4.1.1_1
ERROR: We need to link the QEMU user mode binaries at a
specific text address. Unfortunately your linker
doesn't support either the -Ttext-segment option or
printing the default linker script with --verbose.
If you don't want the user mode binaries, pass the
--disable-user option to configure.
===> Script "configure" failed unexpectedly.
Please report the problem to bofh@FreeBSD.org [maintainer] and attach the
"/wrkdirs/usr/ports/emulators/qemu/work/qemu-4.1.1/config.log" including the
output of the failure of your make command. Also, it might be a good idea to
provide an overview of all packages installed on your system (e.g. a
/usr/local/sbin/pkg-static info -g -Ea).
*** Error code 1
This is because lld 10.0.0 no longer supports the -Ttext-segment option, and uses --image-base for similar functionality.
I am proposing a patch that makes the configure script check for the --image-base option first, then the -Ttext-segment option.
works for me!
% clang -v && uname -Kmr
FreeBSD clang version 10.0.0 (email@example.com:llvm/llvm-project.git llvmorg-10.0.0-rc3-1-gc290cb61fdc)
Thread model: posix
13.0-CURRENT amd64 1300084
Btw, the important part here is if people can check whether the qemu user mode binaries work as they should.
I did some light testing of qemu-static-mips64, with the binaries provided on https://wiki.freebsd.org/QemuUserModeHowTo, and that seemed to work.
A commit references this bug:
Date: Fri Mar 20 17:29:32 UTC 2020
New revision: 528790
emulators/qemu: Fix build with lld 10.0.0
Submitted by: dim
Sorry for the delay. Messed up my builder while upgrading. Will take care of the rest of the qemu* soon. They are already being built when I write.