configure: Support -static-pie if requested

Recent toolchains support static and pie at the same time.

As with normal dynamic builds, allow --static to default to PIE
if supported by the toolchain. Allow --enable/--disable-pie to
override the default.

Backports commit 127814629b32d5e0de2873d742e08cb9bd412af7 from qemu
This commit is contained in:
Richard Henderson 2020-04-30 07:09:32 -04:00 committed by Lioncash
parent f08ba73e78
commit 224f35b48e

20
qemu/configure vendored
View file

@ -556,7 +556,6 @@ for opt do
;;
--static)
static="yes"
LDFLAGS="-static $LDFLAGS"
;;
--enable-debug-tcg) debug_tcg="yes"
;;
@ -841,10 +840,8 @@ fi
# Static linking is not possible with modules or PIE
if test "$static" = "yes" ; then
if test "$pie" = "yes" ; then
error_exit "static and pie are mutually incompatible"
else
pie="no"
if test "$modules" = "yes" ; then
error_exit "static and modules are mutually incompatible"
fi
fi
@ -865,7 +862,18 @@ if compile_prog "-Werror -fno-pie" "-no-pie"; then
LDFLAGS_NOPIE="-no-pie"
fi
if test "$pie" = "no"; then
if test "$static" = "yes"; then
if test "$pie" != "no" && compile_prog "-fPIE -DPIE" "-static-pie"; then
QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
QEMU_LDFLAGS="-static-pie $QEMU_LDFLAGS"
pie="yes"
elif test "$pie" = "yes"; then
error_exit "-static-pie not available due to missing toolchain support"
else
QEMU_LDFLAGS="-static $QEMU_LDFLAGS"
pie="no"
fi
elif test "$pie" = "no"; then
QEMU_CFLAGS="$CFLAGS_NOPIE $QEMU_CFLAGS"
QEMU_LDFLAGS="$LDFLAGS_NOPIE $QEMU_LDFLAGS"
elif compile_prog "-fPIE -DPIE" "-pie"; then