diff options
author | Diane Bruce <db@FreeBSD.org> | 2020-03-20 00:47:58 +0000 |
---|---|---|
committer | Diane Bruce <db@FreeBSD.org> | 2020-03-20 00:47:58 +0000 |
commit | 488a0f974e3fcdb702115673eff9dbd88876732b (patch) | |
tree | 2a60d1621418bf940cf2237a89f13521e3bb08fb /emulators/qemu-user-static-devel/files | |
parent | x11-servers/xwayland-devel: update to 1.20.0.626 (diff) |
Fix emulators/qemu-sbruno build with lld 10.0.0
As reported in bug 244251, with clang and lld 10.0.0 the emulators/qemu-sbruno port fails in the configure stage:
===> Configuring for qemu-user-static-2.11.50.g20191211_3
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 emulation@FreeBSD.org [maintainer] and attach
the
"/wrkdirs/usr/ports/emulators/qemu-user-static/work/qemu-bsd-user-d587db6/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.
PR: ports/244772
Submitted by: dim@FreeBSD.org
Approved by: Maintainer
Notes
Notes:
svn path=/head/; revision=528752
Diffstat (limited to 'emulators/qemu-user-static-devel/files')
-rw-r--r-- | emulators/qemu-user-static-devel/files/patch-configure | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/emulators/qemu-user-static-devel/files/patch-configure b/emulators/qemu-user-static-devel/files/patch-configure new file mode 100644 index 000000000000..683beb48437e --- /dev/null +++ b/emulators/qemu-user-static-devel/files/patch-configure @@ -0,0 +1,52 @@ +--- configure.orig 2019-12-12 02:59:17 UTC ++++ configure +@@ -5954,27 +5954,30 @@ if ( [ "$linux_user" = yes ] || [ "$bsd_user" = yes ] + cat > $TMPC <<EOF + int main(void) { return 0; } + EOF +- textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr" ++ textseg_ldflags="-Wl,--image-base=$textseg_addr" + if ! compile_prog "" "$textseg_ldflags"; then +- # In case ld does not support -Ttext-segment, edit the default linker +- # script via sed to set the .text start addr. This is needed on FreeBSD +- # at least. +- if ! $ld --verbose >/dev/null 2>&1; then +- error_exit \ +- "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." +- fi ++ textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr" ++ if ! compile_prog "" "$textseg_ldflags"; then ++ # In case ld does not support -Ttext-segment, edit the default linker ++ # script via sed to set the .text start addr. This is needed on FreeBSD ++ # at least. ++ if ! $ld --verbose >/dev/null 2>&1; then ++ error_exit \ ++ "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." ++ fi + +- $ld --verbose | sed \ +- -e '1,/==================================================/d' \ +- -e '/==================================================/,$d' \ +- -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \ +- -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld +- textseg_ldflags="-Wl,-T../config-host.ld" ++ $ld --verbose | sed \ ++ -e '1,/==================================================/d' \ ++ -e '/==================================================/,$d' \ ++ -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \ ++ -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld ++ textseg_ldflags="-Wl,-T../config-host.ld" ++ fi + fi + fi + fi |