qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] qemu-user: fix build with LLVM lld 10
@ 2020-03-26 13:43 Roger Pau Monne
  2020-03-26 16:56 ` Richard Henderson
  0 siblings, 1 reply; 10+ messages in thread
From: Roger Pau Monne @ 2020-03-26 13:43 UTC (permalink / raw)
  To: qemu-devel
  Cc: Daniel P. Berrangé, Dimitry Andric, Richard Henderson,
	Laurent Vivier, Paolo Bonzini, Philippe Mathieu-Daudé,
	Roger Pau Monne

lld 10.0.0 introduced a new linker option --image-base equivalent to
the GNU -Ttext-segment one, hence use it when available.

This fixes the build of QEMU on systems using lld 10 or greater.

Signed-off-by: Dimitry Andric <dim@FreeBSD.org>
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
Cc: Laurent Vivier <laurent@vivier.eu>
Cc: Richard Henderson <richard.henderson@linaro.org>
Cc: "Philippe Mathieu-Daudé" <philmd@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: "Daniel P. Berrangé" <berrange@redhat.com>
---
 configure | 42 +++++++++++++++++++++++-------------------
 1 file changed, 23 insertions(+), 19 deletions(-)

diff --git a/configure b/configure
index da09c35895..92d57d84fa 100755
--- a/configure
+++ b/configure
@@ -6514,27 +6514,31 @@ if ( [ "$linux_user" = yes ] || [ "$bsd_user" = yes ] ) && [ "$pie" = no ]; then
     cat > $TMPC <<EOF
     int main(void) { return 0; }
 EOF
-    textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
+    # Test with image-base first, which appeared in lld 10.0.0
+    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 --image-base or -Ttext-segment" \
+              "options 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
-- 
2.26.0



^ permalink raw reply related	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2020-03-27 23:01 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-03-26 13:43 [PATCH] qemu-user: fix build with LLVM lld 10 Roger Pau Monne
2020-03-26 16:56 ` Richard Henderson
2020-03-27 10:16   ` Roger Pau Monné
2020-03-27 11:28     ` Alex Bennée
2020-03-27 14:08       ` Roger Pau Monné
2020-03-27 15:44         ` Alex Bennée
2020-03-27 15:48           ` Daniel P. Berrangé
2020-03-27 15:57             ` Alex Bennée
2020-03-27 10:51   ` Laurent Vivier
2020-03-27 23:00     ` Richard Henderson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).