Message ID | 20191218031920.6414-7-richard.henderson@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | configure: Improve PIE and other linkage | expand |
On 18/12/2019 04.19, Richard Henderson wrote: > Some distributions, e.g. Ubuntu 19.10, enable PIE by default. > If for some reason one wishes to build a non-pie binary, we > must provide additional options to override. > > At the same time, reorg the code to an elif chain. > > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > --- > configure | 25 ++++++++++++------------- > 1 file changed, 12 insertions(+), 13 deletions(-) > > diff --git a/configure b/configure > index f8981eec15..1645a58b3a 100755 > --- a/configure > +++ b/configure > @@ -2029,19 +2029,18 @@ if compile_prog "-Werror -fno-pie" "-no-pie"; then > 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" > - pie="yes" > - else > - if 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" > - fi > - fi > +if test "$pie" = "no"; then > + QEMU_CFLAGS="$CFLAGS_NOPIE $QEMU_CFLAGS" > + LDFLAGS="$LDFLAGS_NOPIE $LDFLAGS" > +elif compile_prog "-fPIE -DPIE" "-pie"; then > + QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS" > + LDFLAGS="-pie $LDFLAGS" > + 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" > fi > > # Detect support for DT_BIND_NOW. > Reviewed-by: Thomas Huth <thuth@redhat.com>
On 12/18/19 4:19 AM, Richard Henderson wrote: > Some distributions, e.g. Ubuntu 19.10, enable PIE by default. > If for some reason one wishes to build a non-pie binary, we > must provide additional options to override. > > At the same time, reorg the code to an elif chain. > > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > --- > configure | 25 ++++++++++++------------- > 1 file changed, 12 insertions(+), 13 deletions(-) > > diff --git a/configure b/configure > index f8981eec15..1645a58b3a 100755 > --- a/configure > +++ b/configure > @@ -2029,19 +2029,18 @@ if compile_prog "-Werror -fno-pie" "-no-pie"; then > 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" > - pie="yes" > - else > - if 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" > - fi > - fi > +if test "$pie" = "no"; then > + QEMU_CFLAGS="$CFLAGS_NOPIE $QEMU_CFLAGS" > + LDFLAGS="$LDFLAGS_NOPIE $LDFLAGS" > +elif compile_prog "-fPIE -DPIE" "-pie"; then > + QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS" > + LDFLAGS="-pie $LDFLAGS" > + 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" > fi > > # Detect support for DT_BIND_NOW. > Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
diff --git a/configure b/configure index f8981eec15..1645a58b3a 100755 --- a/configure +++ b/configure @@ -2029,19 +2029,18 @@ if compile_prog "-Werror -fno-pie" "-no-pie"; then 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" - pie="yes" - else - if 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" - fi - fi +if test "$pie" = "no"; then + QEMU_CFLAGS="$CFLAGS_NOPIE $QEMU_CFLAGS" + LDFLAGS="$LDFLAGS_NOPIE $LDFLAGS" +elif compile_prog "-fPIE -DPIE" "-pie"; then + QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS" + LDFLAGS="-pie $LDFLAGS" + 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" fi # Detect support for DT_BIND_NOW.
Some distributions, e.g. Ubuntu 19.10, enable PIE by default. If for some reason one wishes to build a non-pie binary, we must provide additional options to override. At the same time, reorg the code to an elif chain. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> --- configure | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-)