[Spice-commits] 4 commits - .gitignore configure.ac m4/virt-linker-no-indirect.m4 m4/virt-linker-relro.m4 m4/warnings.m4 server/Makefile.am server/snd_worker.c

Christophe Fergau teuf at kemper.freedesktop.org
Wed Oct 16 10:19:04 PDT 2013


 .gitignore                    |    6 ++-
 configure.ac                  |    2 +
 m4/virt-linker-no-indirect.m4 |   32 ++++++++++++++++
 m4/virt-linker-relro.m4       |   35 +++++++++++++++++
 m4/warnings.m4                |   82 +++++++++++++++++++++++++++++++-----------
 server/Makefile.am            |    2 +
 server/snd_worker.c           |    2 -
 7 files changed, 139 insertions(+), 22 deletions(-)

New commits:
commit f0336ac8326186fa72fe6a35932617092f6bf07b
Author: Christophe Fergeau <cfergeau at redhat.com>
Date:   Thu Oct 10 11:20:08 2013 +0200

    Use latest warnings.m4 from gnulib
    
    This fixes at least some issues when building with clang

diff --git a/m4/warnings.m4 b/m4/warnings.m4
index 69d05a6..e3d239b 100644
--- a/m4/warnings.m4
+++ b/m4/warnings.m4
@@ -1,5 +1,5 @@
-# warnings.m4 serial 5
-dnl Copyright (C) 2008-2012 Free Software Foundation, Inc.
+# warnings.m4 serial 11
+dnl Copyright (C) 2008-2013 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
@@ -14,24 +14,66 @@ m4_ifdef([AS_VAR_APPEND],
 [m4_define([gl_AS_VAR_APPEND],
 [AS_VAR_SET([$1], [AS_VAR_GET([$1])$2])])])
 
-# gl_WARN_ADD(PARAMETER, [VARIABLE = WARN_CFLAGS])
-# ------------------------------------------------
-# Adds parameter to WARN_CFLAGS if the compiler supports it.  For example,
-# gl_WARN_ADD([-Wparentheses]).
-AC_DEFUN([gl_WARN_ADD],
-dnl FIXME: gl_Warn must be used unquoted until we can assume
-dnl autoconf 2.64 or newer.
-[AS_VAR_PUSHDEF([gl_Warn], [gl_cv_warn_$1])dnl
-AC_CACHE_CHECK([whether compiler handles $1], m4_defn([gl_Warn]), [
-  gl_save_CPPFLAGS="$CPPFLAGS"
-  CPPFLAGS="${CPPFLAGS} $1"
-  AC_PREPROC_IFELSE([AC_LANG_PROGRAM([])],
-                    [AS_VAR_SET(gl_Warn, [yes])],
-                    [AS_VAR_SET(gl_Warn, [no])])
-  CPPFLAGS="$gl_save_CPPFLAGS"
+
+# gl_COMPILER_OPTION_IF(OPTION, [IF-SUPPORTED], [IF-NOT-SUPPORTED],
+#                       [PROGRAM = AC_LANG_PROGRAM()])
+# -----------------------------------------------------------------
+# Check if the compiler supports OPTION when compiling PROGRAM.
+#
+# FIXME: gl_Warn must be used unquoted until we can assume Autoconf
+# 2.64 or newer.
+AC_DEFUN([gl_COMPILER_OPTION_IF],
+[AS_VAR_PUSHDEF([gl_Warn], [gl_cv_warn_[]_AC_LANG_ABBREV[]_$1])dnl
+AS_VAR_PUSHDEF([gl_Flags], [_AC_LANG_PREFIX[]FLAGS])dnl
+AS_LITERAL_IF([$1],
+  [m4_pushdef([gl_Positive], m4_bpatsubst([$1], [^-Wno-], [-W]))],
+  [gl_positive="$1"
+case $gl_positive in
+  -Wno-*) gl_positive=-W`expr "X$gl_positive" : 'X-Wno-\(.*\)'` ;;
+esac
+m4_pushdef([gl_Positive], [$gl_positive])])dnl
+AC_CACHE_CHECK([whether _AC_LANG compiler handles $1], m4_defn([gl_Warn]), [
+  gl_save_compiler_FLAGS="$gl_Flags"
+  gl_AS_VAR_APPEND(m4_defn([gl_Flags]),
+    [" $gl_unknown_warnings_are_errors ]m4_defn([gl_Positive])["])
+  AC_LINK_IFELSE([m4_default([$4], [AC_LANG_PROGRAM([])])],
+                 [AS_VAR_SET(gl_Warn, [yes])],
+                 [AS_VAR_SET(gl_Warn, [no])])
+  gl_Flags="$gl_save_compiler_FLAGS"
 ])
-AS_VAR_IF(gl_Warn, [yes],
-  [gl_AS_VAR_APPEND(m4_if([$2], [], [[WARN_CFLAGS]], [[$2]]), [" $1"])])
+AS_VAR_IF(gl_Warn, [yes], [$2], [$3])
+m4_popdef([gl_Positive])dnl
+AS_VAR_POPDEF([gl_Flags])dnl
 AS_VAR_POPDEF([gl_Warn])dnl
-m4_ifval([$2], [AS_LITERAL_IF([$2], [AC_SUBST([$2])], [])])dnl
 ])
+
+# gl_UNKNOWN_WARNINGS_ARE_ERRORS
+# ------------------------------
+# Clang doesn't complain about unknown warning options unless one also
+# specifies -Wunknown-warning-option -Werror.  Detect this.
+AC_DEFUN([gl_UNKNOWN_WARNINGS_ARE_ERRORS],
+[gl_COMPILER_OPTION_IF([-Werror -Wunknown-warning-option],
+   [gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'],
+   [gl_unknown_warnings_are_errors=])])
+
+# gl_WARN_ADD(OPTION, [VARIABLE = WARN_CFLAGS],
+#             [PROGRAM = AC_LANG_PROGRAM()])
+# ---------------------------------------------
+# Adds parameter to WARN_CFLAGS if the compiler supports it when
+# compiling PROGRAM.  For example, gl_WARN_ADD([-Wparentheses]).
+#
+# If VARIABLE is a variable name, AC_SUBST it.
+AC_DEFUN([gl_WARN_ADD],
+[AC_REQUIRE([gl_UNKNOWN_WARNINGS_ARE_ERRORS])
+gl_COMPILER_OPTION_IF([$1],
+  [gl_AS_VAR_APPEND(m4_if([$2], [], [[WARN_CFLAGS]], [[$2]]), [" $1"])],
+  [],
+  [$3])
+m4_ifval([$2],
+         [AS_LITERAL_IF([$2], [AC_SUBST([$2])])],
+         [AC_SUBST([WARN_CFLAGS])])dnl
+])
+
+# Local Variables:
+# mode: autoconf
+# End:
commit ceb672bf85f99af9290e0576224072ff6c7533c9
Author: Christophe Fergeau <cfergeau at redhat.com>
Date:   Thu Oct 10 11:17:52 2013 +0200

    Use hardened linker flags if available
    
    This commit reuse several macros from libvirt to test for
    support for "-Wl,-z -Wl,relro", "-Wl,-z -Wl,now" and
    "-Wl,--no-copy-dt-needed-entries", and use them if available.

diff --git a/configure.ac b/configure.ac
index fa1ba31..b781d34 100644
--- a/configure.ac
+++ b/configure.ac
@@ -434,6 +434,8 @@ dnl ===========================================================================
 dnl check compiler flags
 
 SPICE_COMPILE_WARNINGS
+LIBVIRT_LINKER_RELRO
+LIBVIRT_LINKER_NO_INDIRECT
 
 # use ximage.h for win32 build if it is found (no package for mingw32 atm)
 if test $os_win32 == "yes" ; then
diff --git a/m4/virt-linker-no-indirect.m4 b/m4/virt-linker-no-indirect.m4
new file mode 100644
index 0000000..b344f70
--- /dev/null
+++ b/m4/virt-linker-no-indirect.m4
@@ -0,0 +1,32 @@
+dnl
+dnl Check for --no-copy-dt-needed-entries
+dnl
+dnl Copyright (C) 2013 Guido Günther <agx at sigxcpu.org>
+dnl
+dnl This library is free software; you can redistribute it and/or
+dnl modify it under the terms of the GNU Lesser General Public
+dnl License as published by the Free Software Foundation; either
+dnl version 2.1 of the License, or (at your option) any later version.
+dnl
+dnl This library is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+dnl Lesser General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU Lesser General Public
+dnl License along with this library.  If not, see
+dnl <http://www.gnu.org/licenses/>.
+dnl
+
+AC_DEFUN([LIBVIRT_LINKER_NO_INDIRECT],[
+    AC_MSG_CHECKING([for how to avoid indirect lib deps])
+
+    NO_INDIRECT_LDFLAGS=
+    case `$LD --help 2>&1` in
+        *"--no-copy-dt-needed-entries"*)
+		NO_INDIRECT_LDFLAGS="-Wl,--no-copy-dt-needed-entries" ;;
+    esac
+    AC_SUBST([NO_INDIRECT_LDFLAGS])
+
+    AC_MSG_RESULT([$NO_INDIRECT_LDFLAGS])
+])
diff --git a/m4/virt-linker-relro.m4 b/m4/virt-linker-relro.m4
new file mode 100644
index 0000000..079a095
--- /dev/null
+++ b/m4/virt-linker-relro.m4
@@ -0,0 +1,35 @@
+dnl
+dnl Check for -z now and -z relro linker flags
+dnl
+dnl Copyright (C) 2013 Red Hat, Inc.
+dnl
+dnl This library is free software; you can redistribute it and/or
+dnl modify it under the terms of the GNU Lesser General Public
+dnl License as published by the Free Software Foundation; either
+dnl version 2.1 of the License, or (at your option) any later version.
+dnl
+dnl This library is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+dnl Lesser General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU Lesser General Public
+dnl License along with this library.  If not, see
+dnl <http://www.gnu.org/licenses/>.
+dnl
+
+AC_DEFUN([LIBVIRT_LINKER_RELRO],[
+    AC_MSG_CHECKING([for how to force completely read-only GOT table])
+
+    RELRO_LDFLAGS=
+    ld_help=`$LD --help 2>&1`
+    case $ld_help in
+        *"-z relro"*) RELRO_LDFLAGS="-Wl,-z -Wl,relro" ;;
+    esac
+    case $ld_help in
+        *"-z now"*) RELRO_LDFLAGS="$RELRO_LDFLAGS -Wl,-z -Wl,now" ;;
+    esac
+    AC_SUBST([RELRO_LDFLAGS])
+
+    AC_MSG_RESULT([$RELRO_LDFLAGS])
+])
diff --git a/server/Makefile.am b/server/Makefile.am
index 8cbd87b..0f8888d 100644
--- a/server/Makefile.am
+++ b/server/Makefile.am
@@ -21,6 +21,8 @@ lib_LTLIBRARIES = libspice-server.la
 libspice_server_la_LDFLAGS =			\
 	-version-info $(SPICE_LT_VERSION)	\
 	-no-undefined				\
+	$(RELRO_LDFLAGS)			\
+	$(NO_INDIRECT_LDFLAGS)			\
 	$(NULL)
 
 if HAVE_LD_VERSION_SCRIPT
commit f78f1ae61b6af9262b1a8d1ffbf162b323549b83
Author: Christophe Fergeau <cfergeau at redhat.com>
Date:   Thu Oct 10 11:17:17 2013 +0200

    Don't ignore all of m4/ in .gitignore
    
    m4/ contains several files tracked in git, so we should not ignore
    the whole directory.

diff --git a/.gitignore b/.gitignore
index 6318a83..8e73162 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,7 +17,11 @@ depcomp
 install-sh
 libtool
 ltmain.sh
-m4/
+m4/libtool.m4
+m4/lt~obsolete.m4
+m4/ltoptions.m4
+m4/ltsugar.m4
+m4/ltversion.m4
 missing
 Makefile
 Makefile.in
commit c9ea4538e25654865f15c5afd35b7f413890b615
Author: Christophe Fergeau <cfergeau at redhat.com>
Date:   Mon Apr 29 14:29:35 2013 +0200

    Fix PlaybackeCommand typo

diff --git a/server/snd_worker.c b/server/snd_worker.c
index 5346d96..9156bf5 100644
--- a/server/snd_worker.c
+++ b/server/snd_worker.c
@@ -52,7 +52,7 @@
 
 #define RECORD_SAMPLES_SIZE (SND_RECEIVE_BUF_SIZE >> 2)
 
-enum PlaybackeCommand {
+enum PlaybackCommand {
     SND_PLAYBACK_MIGRATE,
     SND_PLAYBACK_MODE,
     SND_PLAYBACK_CTRL,


More information about the Spice-commits mailing list