[libvirt] [PATCHv2] build: prefer -fstack-protector-strong to -all

2014-06-11 Thread Ján Tomko
Try -fstack-protector-strong first on Linux. If that fails,
fall back to -fstack-protector-all.
---
 m4/virt-compile-warnings.m4 | 22 ++
 1 file changed, 18 insertions(+), 4 deletions(-)

diff --git a/m4/virt-compile-warnings.m4 b/m4/virt-compile-warnings.m4
index 196afa7..532a777 100644
--- a/m4/virt-compile-warnings.m4
+++ b/m4/virt-compile-warnings.m4
@@ -164,13 +164,14 @@ AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[
dnl error: -fstack-protector not supported for this target [-Werror]
;;
*-*-linux*)
-   dnl Fedora only uses -fstack-protector, but doesn't seem to
-   dnl be great overhead in adding -fstack-protector-all instead
+   dnl Prefer -fstack-protector-strong if it's available.
+   dnl There doesn't seem to be great overhead in adding
+   dnl -fstack-protector-all instead of -fstack-protector.
dnl
-   dnl We also don't need ssp-buffer-size with -all,
+   dnl We also don't need ssp-buffer-size with -all or -strong,
dnl since functions are protected regardless of buffer size.
dnl wantwarn=$wantwarn --param=ssp-buffer-size=4
-   wantwarn=$wantwarn -fstack-protector-all
+   wantwarn=$wantwarn -fstack-protector-strong
;;
*-*-freebsd*)
dnl FreeBSD ships old gcc 4.2.1 which doesn't handle
@@ -201,6 +202,19 @@ AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[
   gl_WARN_ADD([$w])
 done
 
+case $host in
+*-*-linux*)
+dnl Fall back to -fstack-protector-all if -strong is not available
+case $WARN_CFLAGS in
+*-fstack-protector-strong*)
+;;
+*)
+gl_WARN_ADD([-fstack-protector-all])
+;;
+esac
+;;
+esac
+
 # Silence certain warnings in gnulib, and use improved glibc headers
 AC_DEFINE([lint], [1],
   [Define to 1 if the compiler is checking for lint.])
-- 
1.8.5.5

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list


Re: [libvirt] [PATCHv2] build: prefer -fstack-protector-strong to -all

2014-06-11 Thread Daniel P. Berrange
On Wed, Jun 11, 2014 at 02:11:46PM +0200, Ján Tomko wrote:
 Try -fstack-protector-strong first on Linux. If that fails,
 fall back to -fstack-protector-all.
 ---
  m4/virt-compile-warnings.m4 | 22 ++
  1 file changed, 18 insertions(+), 4 deletions(-)
 
 diff --git a/m4/virt-compile-warnings.m4 b/m4/virt-compile-warnings.m4
 index 196afa7..532a777 100644
 --- a/m4/virt-compile-warnings.m4
 +++ b/m4/virt-compile-warnings.m4
 @@ -164,13 +164,14 @@ AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[
 dnl error: -fstack-protector not supported for this target [-Werror]
 ;;
 *-*-linux*)
 -   dnl Fedora only uses -fstack-protector, but doesn't seem to
 -   dnl be great overhead in adding -fstack-protector-all instead
 +   dnl Prefer -fstack-protector-strong if it's available.
 +   dnl There doesn't seem to be great overhead in adding
 +   dnl -fstack-protector-all instead of -fstack-protector.
 dnl
 -   dnl We also don't need ssp-buffer-size with -all,
 +   dnl We also don't need ssp-buffer-size with -all or -strong,
 dnl since functions are protected regardless of buffer size.
 dnl wantwarn=$wantwarn --param=ssp-buffer-size=4
 -   wantwarn=$wantwarn -fstack-protector-all
 +   wantwarn=$wantwarn -fstack-protector-strong
 ;;
 *-*-freebsd*)
 dnl FreeBSD ships old gcc 4.2.1 which doesn't handle
 @@ -201,6 +202,19 @@ AC_DEFUN([LIBVIRT_COMPILE_WARNINGS],[
gl_WARN_ADD([$w])
  done
  
 +case $host in
 +*-*-linux*)
 +dnl Fall back to -fstack-protector-all if -strong is not available
 +case $WARN_CFLAGS in
 +*-fstack-protector-strong*)
 +;;
 +*)
 +gl_WARN_ADD([-fstack-protector-all])
 +;;
 +esac
 +;;
 +esac
 +
  # Silence certain warnings in gnulib, and use improved glibc headers
  AC_DEFINE([lint], [1],
[Define to 1 if the compiler is checking for lint.])

ACK


Regards,
Daniel
-- 
|: http://berrange.com  -o-http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org  -o- http://virt-manager.org :|
|: http://autobuild.org   -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org   -o-   http://live.gnome.org/gtk-vnc :|

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list