On 18/12/2019 04.19, Richard Henderson wrote:
> There is nothing about these options that is related to PIE.
> Nor is there anything that specifically ties them to each other.
> Use them unconditionally.
> 
> Signed-off-by: Richard Henderson <richard.hender...@linaro.org>
> ---
>  configure | 13 ++++++++++---
>  1 file changed, 10 insertions(+), 3 deletions(-)
> 
> diff --git a/configure b/configure
> index 972ce7396f..f8981eec15 100755
> --- a/configure
> +++ b/configure
> @@ -2034,9 +2034,6 @@ if test "$pie" != "no" ; then
>      QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
>      LDFLAGS="-pie $LDFLAGS"
>      pie="yes"
> -    if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
> -      LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
> -    fi
>    else
>      if test "$pie" = "yes"; then
>        error_exit "PIE not available due to missing toolchain support"
> @@ -2047,6 +2044,16 @@ if test "$pie" != "no" ; then
>    fi
>  fi
>  
> +# Detect support for DT_BIND_NOW.
> +if compile_prog "" "-Wl,-z,now" ; then
> +  LDFLAGS="-Wl,-z,now $LDFLAGS"
> +fi
> +
> +# Detect support for PT_GNU_RELRO.
> +if compile_prog "" "-Wl,-z,relro" ; then
> +  LDFLAGS="-Wl,-z,relro $LDFLAGS"
> +fi

Looking at
https://mudongliang.github.io/2016/07/11/relro-a-not-so-well-known-memory-corruption-mitigation-technique.html
the idea of specifying these two options together was likely to get
"Full RELRO" instead of only "Partial RELRO".
Thus, does it make sense to have "-Wl,-z,now" without "-Wl,-z,relro" in
QEMU? Or should this rather check whether both are possible, then use
both, otherwise just try to use "relro" alone?

 Thomas


Reply via email to