bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: enable -Werror for lib/ in coreutils


From: Jim Meyering
Subject: Re: enable -Werror for lib/ in coreutils
Date: Thu, 29 Oct 2009 11:30:15 +0100

I've pushed the following to coreutils.
While I think the rege* changes are useful and do belong in gnulib,
I'll wait to hear that someone else would benefit from doing something
similar before migrating my gl/lib/*.diff patches into gnulib.


>From e26cb21e6b89b06c8629a44bc6b78b2d46d110c9 Mon Sep 17 00:00:00 2001
From: Jim Meyering <address@hidden>
Date: Tue, 27 Oct 2009 12:12:11 +0100
Subject: [PATCH 1/3] build: allow whitespace violations in gl/lib/*.diff files

* .gitattributes: Exempt gl/lib/*.diff.
* .x-sc_prohibit_tab_based_indentation: Likewise.
* .x-sc_space_tab:Likewise.
---
 .gitattributes                       |    2 ++
 .x-sc_prohibit_tab_based_indentation |    1 +
 .x-sc_space_tab                      |    1 +
 3 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/.gitattributes b/.gitattributes
index 32f18fd..c3b2926 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -5,3 +5,5 @@
 # # Derived from the regexp in emacs' lisp/add-log.el.
 # [diff "texinfo"]
 #         funcname = "address@hidden \t][ \t]*\\([^,][^,]*\\)"
+
+gl/lib/*.diff -whitespace
diff --git a/.x-sc_prohibit_tab_based_indentation 
b/.x-sc_prohibit_tab_based_indentation
index 2f5d921..388f94a 100644
--- a/.x-sc_prohibit_tab_based_indentation
+++ b/.x-sc_prohibit_tab_based_indentation
@@ -4,3 +4,4 @@ Makefile\.am$
 ^tests/pr/
 ChangeLog.*
 ^man/help2man$
+^gl/lib/.*\.c\.diff$
diff --git a/.x-sc_space_tab b/.x-sc_space_tab
index f52ebd0..2ef3428 100644
--- a/.x-sc_space_tab
+++ b/.x-sc_space_tab
@@ -9,3 +9,4 @@ m4/lib-prefix.m4
 m4/po.m4
 aclocal.m4
 src/c99-to-c89.diff
+^gl/lib/.*\.c\.diff$
--
1.6.5.2.375.g164f1


>From 56a66d78ffdaa62426dd5efb57219cb2444ba34c Mon Sep 17 00:00:00 2001
From: Jim Meyering <address@hidden>
Date: Wed, 28 Oct 2009 10:37:43 +0100
Subject: [PATCH 2/3] build: update gnulib submodule to latest

---
 gnulib |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/gnulib b/gnulib
index 82381b9..739294f 160000
--- a/gnulib
+++ b/gnulib
@@ -1 +1 @@
-Subproject commit 82381b9e5b37125305709d412d8322b35e5c4796
+Subproject commit 739294f4aaa7734eb73bed785302dc64626c4ff1
--
1.6.5.2.375.g164f1


>From f2859424cbdf23f6673fd4f3a9d7a5b197e0595e Mon Sep 17 00:00:00 2001
From: Jim Meyering <address@hidden>
Date: Tue, 27 Oct 2009 12:06:43 +0100
Subject: [PATCH 3/3] build (--enable-gcc-warnings): enable gcc's -Werror also 
in lib/

* configure.ac (GNULIB_WARN_CFLAGS): Define.
* lib/Makefile.am (AM_CFLAGS): Use $(GNULIB_WARN_CFLAGS)
rather than $(WARN_CFLAGS) and add $(WERROR_CFLAGS).
* gl/lib/regcomp.c.diff: New file.
* gl/lib/regex_internal.c.diff: New file.
* gl/lib/regexec.c.diff: New file.
---
 configure.ac                 |   10 +++++++++
 gl/lib/regcomp.c.diff        |   23 +++++++++++++++++++++
 gl/lib/regex_internal.c.diff |   25 +++++++++++++++++++++++
 gl/lib/regexec.c.diff        |   45 ++++++++++++++++++++++++++++++++++++++++++
 lib/Makefile.am              |    2 +-
 5 files changed, 104 insertions(+), 1 deletions(-)
 create mode 100644 gl/lib/regcomp.c.diff
 create mode 100644 gl/lib/regex_internal.c.diff
 create mode 100644 gl/lib/regexec.c.diff

diff --git a/configure.ac b/configure.ac
index 3efc819..fb963ee 100644
--- a/configure.ac
+++ b/configure.ac
@@ -114,6 +114,16 @@ if test "$gl_gcc_warnings" = yes; then
   AC_DEFINE([_FORTIFY_SOURCE], [2],
     [enable compile-time and run-time bounds-checking, and some warnings])
   AC_DEFINE([GNULIB_PORTCHECK], [1], [enable some gnulib portability checks])
+
+  # We use a slightly smaller set of warning options for lib/.
+  # Remove the following and save the result in GNULIB_WARN_CFLAGS.
+  nw=
+  nw="$nw -Wuninitialized"
+  nw="$nw -Wunused-macros"
+  nw="$nw -Wmissing-prototypes"
+  nw="$nw -Wold-style-definition"
+  gl_MANYWARN_COMPLEMENT([GNULIB_WARN_CFLAGS], [$WARN_CFLAGS], [$nw])
+  AC_SUBST([GNULIB_WARN_CFLAGS])
 fi

 AC_FUNC_FORK
diff --git a/gl/lib/regcomp.c.diff b/gl/lib/regcomp.c.diff
new file mode 100644
index 0000000..88097a4
--- /dev/null
+++ b/gl/lib/regcomp.c.diff
@@ -0,0 +1,23 @@
+diff --git a/lib/regcomp.c b/lib/regcomp.c
+index 6472ff6..fadf36d 100644
+--- a/lib/regcomp.c
++++ b/lib/regcomp.c
+@@ -18,6 +18,8 @@
+    with this program; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
++#include "intprops.h"
++#include "verify.h"
+ static reg_errcode_t re_compile_internal (regex_t *preg, const char * pattern,
+                                         size_t length, reg_syntax_t syntax);
+ static void re_compile_fastmap_iter (regex_t *bufp,
+@@ -2571,7 +2573,8 @@ parse_dup_op (bin_tree_t *elem, re_string_t *regexp, 
re_dfa_t *dfa,
+   /* This loop is actually executed only when end != REG_MISSING,
+      to rewrite <re>{0,n} as (<re>(<re>...<re>?)?)?...  We have
+      already created the start+1-th copy.  */
+-  if ((Idx) -1 < 0 || end != REG_MISSING)
++  verify (! TYPE_SIGNED (Idx));
++  if (end != REG_MISSING)
+     for (i = start + 2; i <= end; ++i)
+       {
+       elem = duplicate_tree (elem, dfa);
diff --git a/gl/lib/regex_internal.c.diff b/gl/lib/regex_internal.c.diff
new file mode 100644
index 0000000..2cede3c
--- /dev/null
+++ b/gl/lib/regex_internal.c.diff
@@ -0,0 +1,25 @@
+diff --git a/lib/regex_internal.c b/lib/regex_internal.c
+index 904b88e..61c8d9d 100644
+--- a/lib/regex_internal.c
++++ b/lib/regex_internal.c
+@@ -18,6 +18,8 @@
+    with this program; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
++#include "verify.h"
++#include "intprops.h"
+ static void re_string_construct_common (const char *str, Idx len,
+                                       re_string_t *pstr,
+                                       RE_TRANSLATE_TYPE trans, bool icase,
+@@ -1390,7 +1392,10 @@ static void
+ internal_function
+ re_node_set_remove_at (re_node_set *set, Idx idx)
+ {
+-  if (idx < 0 || idx >= set->nelem)
++  verify (! TYPE_SIGNED (Idx));
++  /* if (idx < 0)
++     return; */
++  if (idx >= set->nelem)
+     return;
+   --set->nelem;
+   for (; idx < set->nelem; idx++)
diff --git a/gl/lib/regexec.c.diff b/gl/lib/regexec.c.diff
new file mode 100644
index 0000000..5c985f9
--- /dev/null
+++ b/gl/lib/regexec.c.diff
@@ -0,0 +1,45 @@
+diff --git a/lib/regexec.c b/lib/regexec.c
+index 21a8166..3b0d85c 100644
+--- a/lib/regexec.c
++++ b/lib/regexec.c
+@@ -18,6 +18,8 @@
+    with this program; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
++#include "verify.h"
++#include "intprops.h"
+ static reg_errcode_t match_ctx_init (re_match_context_t *cache, int eflags,
+                                    Idx n) internal_function;
+ static void match_ctx_clean (re_match_context_t *mctx) internal_function;
+@@ -378,8 +380,11 @@ re_search_2_stub (struct re_pattern_buffer *bufp,
+   Idx len = length1 + length2;
+   char *s = NULL;
+
+-  if (BE (length1 < 0 || length2 < 0 || stop < 0 || len < length1, 0))
+-    return -2;
++  verify (! TYPE_SIGNED (Idx));
++  if (BE (len < length1, 0))
++     return -2; */
++  /* if (BE (length1 < 0 || length2 < 0 || stop < 0, 0))
++     return -2; */
+
+   /* Concatenate the strings.  */
+   if (length2 > 0)
+@@ -431,11 +436,14 @@ re_search_stub (struct re_pattern_buffer *bufp,
+   Idx last_start = start + range;
+
+   /* Check for out-of-range.  */
+-  if (BE (start < 0 || start > length, 0))
+-    return -1;
++  verify (! TYPE_SIGNED (Idx));
++  /* if (BE (start < 0, 0))
++     return -1; */
++  if (BE (start > length, 0))
++     return -1;
+   if (BE (length < last_start || (0 <= range && last_start < start), 0))
+     last_start = length;
+-  else if (BE (last_start < 0 || (range < 0 && start <= last_start), 0))
++  else if (BE (/* last_start < 0 || */ (range < 0 && start <= last_start), 0))
+     last_start = 0;
+
+   __libc_lock_lock (dfa->lock);
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 074cc9c..896458f 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -17,7 +17,7 @@

 include gnulib.mk

-AM_CFLAGS += $(WARN_CFLAGS) # $(WERROR_CFLAGS)
+AM_CFLAGS += $(GNULIB_WARN_CFLAGS) $(WERROR_CFLAGS)

 libcoreutils_a_SOURCES += \
   buffer-lcm.c buffer-lcm.h \
--
1.6.5.2.375.g164f1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]