configure: clean up PIE option handling

Keep together all the conditions that lead to disabling PIE.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Paolo Bonzini 2023-09-28 10:41:29 +02:00
parent 39fb3cfc28
commit 2e938a9a61
1 changed files with 14 additions and 21 deletions

33
configure vendored
View File

@ -373,17 +373,6 @@ else
targetos=bogus
fi
# OS specific
case $targetos in
windows)
pie="no"
;;
haiku)
pie="no"
;;
esac
if test ! -z "$cpu" ; then
# command line argument
:
@ -1088,19 +1077,23 @@ static THREAD int tls_var;
int main(void) { return tls_var; }
EOF
if test "$targetos" = windows || test "$targetos" = haiku; then
if test "$pie" = "yes"; then
error_exit "PIE not available due to missing OS support"
fi
pie=no
fi
if test "$pie" != "no"; then
if test "$static" = "yes"; then
if test "$pie" != "no" && compile_prog "-Werror -fPIE -DPIE" "-static-pie"; then
pie_ldflags=-static-pie
else
pie_ldflags=-pie
fi
if compile_prog "-Werror -fPIE -DPIE" "$pie_ldflags"; then
pie="yes"
elif test "$pie" = "yes"; then
error_exit "-static-pie not available due to missing toolchain support"
else
pie="no"
fi
elif test "$pie" != "no"; then
if compile_prog "-Werror -fPIE -DPIE" "-pie"; then
pie="yes"
elif test "$pie" = "yes"; then
error_exit "PIE not available due to missing toolchain support"
else
echo "Disabling PIE due to missing toolchain support"
pie="no"