diff mbox

[for-2.0] configure: Make stack-protector test check both compile and link

Message ID 1397232832-32301-1-git-send-email-peter.maydell@linaro.org
State Accepted
Commit 590e5dd98fcc926cc3b63aad35aed79235ca4c2a
Headers show

Commit Message

Peter Maydell April 11, 2014, 4:13 p.m. UTC
Since we use the -fstack-protector argument at both compile and
link time in the build, we must check that it works with both
a compile and a link:
 * MacOSX only fails in the compile step, not linking
 * some gcc cross environments only fail at the link stage (if they
   require a libssp and it's not present for some reason)

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
 configure | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Comments

Alexey Kardashevskiy April 11, 2014, 4:27 p.m. UTC | #1
On 04/12/2014 02:13 AM, Peter Maydell wrote:
> Since we use the -fstack-protector argument at both compile and
> link time in the build, we must check that it works with both
> a compile and a link:
>  * MacOSX only fails in the compile step, not linking
>  * some gcc cross environments only fail at the link stage (if they
>    require a libssp and it's not present for some reason)
> 
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>


yay! thanks!

Tested-by: Alexey Kardashevskiy <aik@ozlabs.ru>


> ---
>  configure | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/configure b/configure
> index c85475f..69b9f56 100755
> --- a/configure
> +++ b/configure
> @@ -1448,7 +1448,10 @@ done
>  if test "$stack_protector" != "no" ; then
>    gcc_flags="-fstack-protector-strong -fstack-protector-all"
>    for flag in $gcc_flags; do
> -    if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC ; then
> +    # We need to check both a compile and a link, since some compiler
> +    # setups fail only on a .c->.o compile and some only at link time
> +    if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
> +       compile_prog "-Werror $flag" ""; then
>        QEMU_CFLAGS="$QEMU_CFLAGS $flag"
>        LIBTOOLFLAGS="$LIBTOOLFLAGS -Wc,$flag"
>        break
>
diff mbox

Patch

diff --git a/configure b/configure
index c85475f..69b9f56 100755
--- a/configure
+++ b/configure
@@ -1448,7 +1448,10 @@  done
 if test "$stack_protector" != "no" ; then
   gcc_flags="-fstack-protector-strong -fstack-protector-all"
   for flag in $gcc_flags; do
-    if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC ; then
+    # We need to check both a compile and a link, since some compiler
+    # setups fail only on a .c->.o compile and some only at link time
+    if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
+       compile_prog "-Werror $flag" ""; then
       QEMU_CFLAGS="$QEMU_CFLAGS $flag"
       LIBTOOLFLAGS="$LIBTOOLFLAGS -Wc,$flag"
       break