Turn implict-function-declaration warnings into errors

Message ID 540D9E47.6020904@redhat.com
State Committed
Headers

Commit Message

Florian Weimer Sept. 8, 2014, 12:17 p.m. UTC
  GCC 4.4, the minimum compiler version, supports this option.  Unlike
other warnings, -Wimplicit-function-declaration warnings should be
independent of compiler versions, so this change should not cause
compiler-specific build failures (the usual trouble with -Werror).

Testing this change revealed one missing #include file in a test case.
  

Comments

Roland McGrath Sept. 9, 2014, 9:06 p.m. UTC | #1
Seems fine.
  
Stefan Liebler Sept. 12, 2014, 8:28 a.m. UTC | #2
Hi,

turning implicit-function-declaration warnings into errors leads to 
build failure on 31bit s390 due to several usages of macro udiv_qrnnd 
declared in file stdlib/longlong.h, e.g.:
"gcc elf-init.c ...

../sysdeps/wordsize-32/divdi3.c: In function '__udivmoddi4':
../sysdeps/wordsize-32/divdi3.c:82:4: error: implicit declaration of 
function '__udiv_w_sdiv' [-Werror=implicit-function-declaration]
     udiv_qrnnd (q0, n0, n1, n0, d0);
     ^
"

Andreas Krebbel had proposed a patch for fixing the warning/error on 
glibc-list (https://sourceware.org/ml/libc-alpha/2014-01/msg00280.html), 
which was then forwarded to gcc-list 
(https://gcc.gnu.org/ml/gcc-patches/2014-02/msg00194.html), but without 
any response.
I will ping on the gcc list. The stdlib/longlong.h file in glibc needs 
to be updated from gcc source after commit in gcc.

Bye
Stefan

On 09/08/2014 02:17 PM, Florian Weimer wrote:
> GCC 4.4, the minimum compiler version, supports this option.  Unlike
> other warnings, -Wimplicit-function-declaration warnings should be
> independent of compiler versions, so this change should not cause
> compiler-specific build failures (the usual trouble with -Werror).
>
> Testing this change revealed one missing #include file in a test case.
>
  

Patch

From 842685f0c3f38d81474e809ff0b112099ed11e1c Mon Sep 17 00:00:00 2001
From: Florian Weimer <fweimer@redhat.com>
Date: Mon, 8 Sep 2014 13:49:36 +0200
Subject: [PATCH 1/2] Turn on -Werror=implicit-function-declaration

GCC 4.4, the minimum compiler version, supports this option.  Unlike
other warnings, -Wimplicit-function-declaration warnings should be
independent of compiler versions, so this change should not cause
compiler-specific build failures.
---
 ChangeLog                   | 8 ++++++++
 Makeconfig                  | 2 +-
 stdlib/tst-tls-atexit-lib.c | 2 ++
 3 files changed, 11 insertions(+), 1 deletion(-)

2014-09-08  Florian Weimer  <fweimer@redhat.com>

	* Makeconfig (gccwarn-c): Turn implicit-function-declaration
	warnings into errors.

	* stdlib/tst-tls-atexit-lib.c: Include <stdlib.h>, for the
	__cxa_thread_atexit_impl prototype.


diff --git a/Makeconfig b/Makeconfig
index cef0f06..0f8069b 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -717,7 +717,7 @@  else
 +gccwarn := -Wall -Wwrite-strings -Winline
 endif
 +gccwarn += -Wundef
-+gccwarn-c = -Wstrict-prototypes
++gccwarn-c = -Wstrict-prototypes -Werror=implicit-function-declaration
 
 # We do not depend on the address of constants in different files to be
 # actually different, so allow the compiler to merge them all.
diff --git a/stdlib/tst-tls-atexit-lib.c b/stdlib/tst-tls-atexit-lib.c
index 964f94b..b67d62f 100644
--- a/stdlib/tst-tls-atexit-lib.c
+++ b/stdlib/tst-tls-atexit-lib.c
@@ -16,6 +16,8 @@ 
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
+#include <stdlib.h>
+
 extern void *__dso_handle;
 
 typedef struct
-- 
1.9.3