[PATCH 4/7] configure: Always detect -no-pie toolchain support

Richard Henderson posted 7 patches 6 years, 1 month ago
Maintainers: Paolo Bonzini <pbonzini@redhat.com>, Richard Henderson <rth@twiddle.net>
There is a newer version of this series
[PATCH 4/7] configure: Always detect -no-pie toolchain support
Posted by Richard Henderson 6 years, 1 month ago
The CFLAGS_NOPIE and LDFLAGS_NOPIE variables are used
in pc-bios/optionrom/Makefile, which has nothing to do
with the PIE setting of the main qemu executables.

This overrides any operating system default to build
all executables as PIE, which is important for ROMs.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 configure | 18 ++++++++----------
 1 file changed, 8 insertions(+), 10 deletions(-)

diff --git a/configure b/configure
index 2fb4457d7c..972ce7396f 100755
--- a/configure
+++ b/configure
@@ -2012,26 +2012,24 @@ if ! compile_prog "-Werror" "" ; then
 	"Thread-Local Storage (TLS). Please upgrade to a version that does."
 fi
 
-if test "$pie" != "no" ; then
-  cat > $TMPC << EOF
+cat > $TMPC << EOF
 
 #ifdef __linux__
 #  define THREAD __thread
 #else
 #  define THREAD
 #endif
-
 static THREAD int tls_var;
-
 int main(void) { return tls_var; }
-
 EOF
-  # check we support --no-pie first...
-  if compile_prog "-Werror -fno-pie" "-no-pie"; then
-    CFLAGS_NOPIE="-fno-pie"
-    LDFLAGS_NOPIE="-nopie"
-  fi
 
+# Check we support --no-pie first; we will need this for building ROMs.
+if compile_prog "-Werror -fno-pie" "-no-pie"; then
+  CFLAGS_NOPIE="-fno-pie"
+  LDFLAGS_NOPIE="-no-pie"
+fi
+
+if test "$pie" != "no" ; then
   if compile_prog "-fPIE -DPIE" "-pie"; then
     QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
     LDFLAGS="-pie $LDFLAGS"
-- 
2.20.1


Re: [PATCH 4/7] configure: Always detect -no-pie toolchain support
Posted by Thomas Huth 6 years, 1 month ago
On 18/12/2019 04.19, Richard Henderson wrote:
> The CFLAGS_NOPIE and LDFLAGS_NOPIE variables are used
> in pc-bios/optionrom/Makefile, which has nothing to do
> with the PIE setting of the main qemu executables.
> 
> This overrides any operating system default to build
> all executables as PIE, which is important for ROMs.
> 
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>  configure | 18 ++++++++----------
>  1 file changed, 8 insertions(+), 10 deletions(-)

Reviewed-by: Thomas Huth <thuth@redhat.com>


Re: [PATCH 4/7] configure: Always detect -no-pie toolchain support
Posted by Philippe Mathieu-Daudé 6 years, 1 month ago
On 12/18/19 4:19 AM, Richard Henderson wrote:
> The CFLAGS_NOPIE and LDFLAGS_NOPIE variables are used
> in pc-bios/optionrom/Makefile, which has nothing to do
> with the PIE setting of the main qemu executables.
> 
> This overrides any operating system default to build
> all executables as PIE, which is important for ROMs.
> 
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>   configure | 18 ++++++++----------
>   1 file changed, 8 insertions(+), 10 deletions(-)
> 
> diff --git a/configure b/configure
> index 2fb4457d7c..972ce7396f 100755
> --- a/configure
> +++ b/configure
> @@ -2012,26 +2012,24 @@ if ! compile_prog "-Werror" "" ; then
>   	"Thread-Local Storage (TLS). Please upgrade to a version that does."
>   fi
>   
> -if test "$pie" != "no" ; then
> -  cat > $TMPC << EOF
> +cat > $TMPC << EOF
>   
>   #ifdef __linux__
>   #  define THREAD __thread
>   #else
>   #  define THREAD
>   #endif
> -
>   static THREAD int tls_var;
> -
>   int main(void) { return tls_var; }
> -
>   EOF
> -  # check we support --no-pie first...
> -  if compile_prog "-Werror -fno-pie" "-no-pie"; then
> -    CFLAGS_NOPIE="-fno-pie"
> -    LDFLAGS_NOPIE="-nopie"
> -  fi
>   
> +# Check we support --no-pie first; we will need this for building ROMs.
> +if compile_prog "-Werror -fno-pie" "-no-pie"; then
> +  CFLAGS_NOPIE="-fno-pie"
> +  LDFLAGS_NOPIE="-no-pie"
> +fi
> +
> +if test "$pie" != "no" ; then
>     if compile_prog "-fPIE -DPIE" "-pie"; then
>       QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
>       LDFLAGS="-pie $LDFLAGS"
> 

Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>