configure: Improve usermode relocation linker option probe
The probe we do to determine what flags to use to make the usermode executables use a non-default text address has some flaws: * we run it even if we're not building the user binaries * we don't expect "ld --verbose" to fail The combination of these two results in a harmless but ugly "ld: unknown option: --verbose" message when running configure on OSX. Improve the probe to only run when we need it and to fail nicely when even the backstop 'ld --verbose' approach fails. Reported-by: Stefan Weil <sw@weilnetz.de> Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Stefan Weil <sw@weilnetz.de> Message-id: 1466287502-18730-2-git-send-email-pmaydell@chiark.greenend.org.uk
This commit is contained in:
parent
b7a511248d
commit
92fe2ba8b0
12
configure
vendored
12
configure
vendored
@ -4703,7 +4703,7 @@ if test "$cpu" = "s390x" ; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Probe for the need for relocating the user-only binary.
|
# Probe for the need for relocating the user-only binary.
|
||||||
if test "$pie" = "no" ; then
|
if ( [ "$linux_user" = yes ] || [ "$bsd_user" = yes ] ) && [ "$pie" = no ]; then
|
||||||
textseg_addr=
|
textseg_addr=
|
||||||
case "$cpu" in
|
case "$cpu" in
|
||||||
arm | i386 | ppc* | s390* | sparc* | x86_64 | x32)
|
arm | i386 | ppc* | s390* | sparc* | x86_64 | x32)
|
||||||
@ -4725,6 +4725,16 @@ EOF
|
|||||||
# In case ld does not support -Ttext-segment, edit the default linker
|
# 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
|
# script via sed to set the .text start addr. This is needed on FreeBSD
|
||||||
# at least.
|
# 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 \
|
$ld --verbose | sed \
|
||||||
-e '1,/==================================================/d' \
|
-e '1,/==================================================/d' \
|
||||||
-e '/==================================================/,$d' \
|
-e '/==================================================/,$d' \
|
||||||
|
Loading…
Reference in New Issue
Block a user