Date: Fri, 20 Mar 2020 13:21:43 +0000 (UTC) From: Diane Bruce <db@FreeBSD.org> To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r528777 - head/emulators/qemu-sbruno/files Message-ID: <202003201321.02KDLhqA067240@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: db Date: Fri Mar 20 13:21:43 2020 New Revision: 528777 URL: https://svnweb.freebsd.org/changeset/ports/528777 Log: reated attachment 212362 [details] 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/212362 Submitted by: dim@FreeBSD.org Approved by: Maintainer Modified: head/emulators/qemu-sbruno/files/patch-configure (contents, props changed) Modified: head/emulators/qemu-sbruno/files/patch-configure ============================================================================== --- head/emulators/qemu-sbruno/files/patch-configure Fri Mar 20 13:00:40 2020 (r528776) +++ head/emulators/qemu-sbruno/files/patch-configure Fri Mar 20 13:21:43 2020 (r528777) @@ -1,6 +1,6 @@ ---- configure.orig 2018-02-08 19:22:54 UTC +--- configure.orig 2019-12-12 02:59:10 UTC +++ configure -@@ -3248,10 +3248,10 @@ fi +@@ -3261,10 +3261,10 @@ fi # curses probe if test "$curses" != "no" ; then if test "$mingw32" = "yes" ; then @@ -13,3 +13,62 @@ curses_lib_list="$($pkg_config --libs ncursesw 2>/dev/null):-lncursesw:-lcursesw" fi curses_found=no +@@ -3381,7 +3381,7 @@ for i in $glib_modules; do + glib_libs=$($pkg_config --libs $i) + QEMU_CFLAGS="$glib_cflags $QEMU_CFLAGS" + LIBS="$glib_libs $LIBS" +- libs_qga="$glib_libs $libs_qga" ++ libs_qga="$glib_libs -lintl $libs_qga" + else + error_exit "glib-$glib_req_ver $i is required to compile QEMU" + fi +@@ -5517,27 +5517,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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202003201321.02KDLhqA067240>