Subject: Re: bug#17793: Gentoo gcc 4.8.3 build problem: -fstack-protector [also, Re: bug#17754]

From: Paul Eggert <[email-masked]>
Date: Tue, 17 Jun 2014 12:28:54 -0700

behoffski wrote:

>          In file included from mbsstr.c:32:0:
>          str-kmp.h: In function 'knuth_morris_pratt':
>          str-kmp.h:35:1: error: stack protector not protecting local
> variables: variable length buffer [-Werror=stack-protector]
>           knuth_morris_pratt (const UNIT *haystack,
>           ^

These warnings don't indicate any bugs in the code; they're merely about 
incomplete run-time checking in the underlying implementation.  I was 
particularly amused by a refusal to compile a function on the grounds 
that its code doesn't use the stack!

So let's just disable the warnings.  I pushed the attached patch.

> Valgrind and -fsanitize=address are incompatible

Thanks, I didn't know that.  Too bad, but understandable.  Neither tool 
dominates the other, so I guess we'll have to use them separately.
From 8ade09bf8173b39e42ef3dcbcf75721809541d69 Mon Sep 17 00:00:00 2001
From: Paul Eggert <[email-masked]>
Date: Tue, 17 Jun 2014 12:09:16 -0700
Subject: [PATCH] build: avoid -Wstack-protector

This allows the use of --enable-gcc-warnings on Gentoo and Ubuntu.
See: http://bugs.gnu.org/17793
* configure.ac (WERROR_CFLAGS): Avoid -Wstack-protector.

This can be worked around, but the cure is worse than the disease.
---
 configure.ac | 1 +
 1 file changed, 1 insertion(+)

diff --git a/configure.ac b/configure.ac
index 7ac2937..3315855 100644
--- a/configure.ac
+++ b/configure.ac
@@ -117,6 +117,7 @@ if test "$gl_gcc_warnings" = yes; then
   nw="$nw -Wsystem-headers"         # Don't let system headers trigger warnings
   nw="$nw -Wpadded"                 # Our structs are not padded
   nw="$nw -Wvla"                    # warnings in gettext.h
+  nw="$nw -Wstack-protector"        # generates false alarms for useful code
   nw="$nw -Wswitch-default"         # Too many warnings for now
   nw="$nw -Wunsafe-loop-optimizations" # OK to suppress unsafe optimizations
   nw="$nw -Winline"                 # streq.h's streq4, streq6 and strcaseeq6
-- 
1.9.3