You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
231 lines
8.8 KiB
231 lines
8.8 KiB
commit a4ecc9eb9b15bc51a1dc4726c06d35eaea74e162 |
|
Author: Joseph Myers <joseph@codesourcery.com> |
|
Date: Wed Dec 10 01:14:48 2014 +0000 |
|
|
|
Use -Werror by default, add --disable-werror. |
|
|
|
As discussed starting at |
|
<https://sourceware.org/ml/libc-alpha/2014-11/msg00323.html>, this |
|
patch makes the glibc build use -Werror by default to avoid |
|
accidentally adding new warnings to the build. The configure option |
|
--disable-werror can be used to disable this. |
|
|
|
-Wno-error=undef is temporarily used because the build isn't clean |
|
regarding -Wundef warnings. The idea is that once the remaining |
|
-Wundef warnings have been cleaned up (in at least one configuration), |
|
-Wno-error=undef will be removed. |
|
|
|
I get a clean build and test on x86_64 (GCC 4.9 branch) with this |
|
patch. The expectation is that this may well break the build for some |
|
other configurations, and people seeing such breakage should make |
|
appropriate fixes to fix or suppress the warnings for their |
|
configurations. In some cases that may involve using pragmas as the |
|
right fix (I think that will be right for the -Wno-inline issue for |
|
MIPS I referred to in |
|
<https://sourceware.org/ml/libc-alpha/2012-11/msg00798.html>, for |
|
example), in some cases -Wno-error in sysdeps makefiles (__restore_rt |
|
in MIPS sigaction, for example), in some cases substantive fixes for |
|
the warnings. |
|
|
|
Note that if, with a view to listing all the warnings then fixing them |
|
all, you just look for "warning:" in output from building and testing |
|
with --disable-werror, you'll see lots of warnings from the linker |
|
about functions such as tmpnam. Those warnings can be ignored - only |
|
compiler warnings are relevant to -Werror, not linker warnings. |
|
|
|
* configure.ac (--disable-werror): New configure option. |
|
(enable_werror): New AC_SUBST. |
|
* configure: Regenerated. |
|
* config.make.in (enable-werror): New variable. |
|
* Makeconfig [$(enable-werror) = yes] (+gccwarn): Add -Werror |
|
-Wno-error=undef. |
|
(+gccwarn-c): Do not use -Werror=implicit-function-declaration. |
|
* manual/install.texi (Configuring and compiling): Document |
|
--disable-werror. |
|
* INSTALL: Regenerated. |
|
* debug/Makefile (CFLAGS-tst-chk1.c): Add -Wno-error. |
|
(CFLAGS-tst-chk2.c): Likewise. |
|
(CFLAGS-tst-chk3.c): Likewise. |
|
(CFLAGS-tst-chk4.cc): Likewise. |
|
(CFLAGS-tst-chk5.cc): Likewise. |
|
(CFLAGS-tst-chk6.cc): Likewise. |
|
(CFLAGS-tst-lfschk1.c): Likewise. |
|
(CFLAGS-tst-lfschk2.c): Likewise. |
|
(CFLAGS-tst-lfschk3.c): Likewise. |
|
(CFLAGS-tst-lfschk4.cc): Likewise. |
|
(CFLAGS-tst-lfschk5.cc): Likewise. |
|
(CFLAGS-tst-lfschk6.cc): Likewise. |
|
|
|
Conflicts: |
|
INSTALL |
|
manual/install.texi |
|
(Textual conflicts due to elision backport; |
|
glibc-rh841653-0.patch and others) |
|
configure.ac |
|
(Change applied to configure.in instead.) |
|
|
|
diff --git a/INSTALL b/INSTALL |
|
index 264e57bc5f0316f7..82b29f5d8746f929 100644 |
|
--- a/INSTALL |
|
+++ b/INSTALL |
|
@@ -143,6 +143,13 @@ will be used, and CFLAGS sets optimization options for the compiler. |
|
`--enable-lock-elision=yes' |
|
Enable lock elision for pthread mutexes by default. |
|
|
|
+`--disable-werror' |
|
+ By default, the GNU C Library is built with `-Werror'. If you wish |
|
+ to build without this option (for example, if building with a newer |
|
+ version of GCC than this version of the GNU C Library was tested |
|
+ with, so new warnings cause the build with `-Werror' to fail), you |
|
+ can configure with `--disable-werror'. |
|
+ |
|
`--build=BUILD-SYSTEM' |
|
`--host=HOST-SYSTEM' |
|
These options are for cross-compiling. If you specify both |
|
diff --git a/Makeconfig b/Makeconfig |
|
index 02f1cc1255c5ac07..6f61e4835c0a7770 100644 |
|
--- a/Makeconfig |
|
+++ b/Makeconfig |
|
@@ -644,7 +644,10 @@ else |
|
+gccwarn := -Wall -Wwrite-strings -Winline |
|
endif |
|
+gccwarn += -Wundef |
|
-+gccwarn-c = -Wstrict-prototypes -Werror=implicit-function-declaration |
|
+ifeq ($(enable-werror),yes) |
|
++gccwarn += -Werror -Wno-error=undef |
|
+endif |
|
++gccwarn-c = -Wstrict-prototypes |
|
|
|
# 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/config.make.in b/config.make.in |
|
index d5490f61cd3faeba..3c65c9f03ab65a74 100644 |
|
--- a/config.make.in |
|
+++ b/config.make.in |
|
@@ -49,6 +49,7 @@ sysheaders = @sysheaders@ |
|
sysincludes = @SYSINCLUDES@ |
|
c++-sysincludes = @CXX_SYSINCLUDES@ |
|
all-warnings = @all_warnings@ |
|
+enable-werror = @enable_werror@ |
|
|
|
have-z-combreloc = @libc_cv_z_combreloc@ |
|
have-z-execstack = @libc_cv_z_execstack@ |
|
diff --git a/configure b/configure |
|
index b185b400dfbc21de..769f0fa149d0ef9c 100755 |
|
--- a/configure |
|
+++ b/configure |
|
@@ -660,6 +660,7 @@ build_pt_chown |
|
build_nscd |
|
link_obsolete_rpc |
|
libc_cv_nss_crypt |
|
+enable_werror |
|
all_warnings |
|
force_install |
|
bindnow |
|
@@ -758,6 +759,7 @@ enable_static_nss |
|
enable_force_install |
|
enable_kernel |
|
enable_all_warnings |
|
+enable_werror |
|
enable_multi_arch |
|
enable_nss_crypt |
|
enable_obsolete_rpc |
|
@@ -1419,6 +1421,7 @@ Optional Features: |
|
--enable-kernel=VERSION compile for compatibility with kernel not older than |
|
VERSION |
|
--enable-all-warnings enable all useful warnings gcc can issue |
|
+ --disable-werror do not build with -Werror |
|
--enable-multi-arch enable single DSO with optimizations for multiple |
|
architectures |
|
--enable-nss-crypt enable libcrypt to use nss |
|
@@ -3803,6 +3806,15 @@ fi |
|
|
|
|
|
|
|
+# Check whether --enable-werror was given. |
|
+if test "${enable_werror+set}" = set; then : |
|
+ enableval=$enable_werror; enable_werror=$enableval |
|
+else |
|
+ enable_werror=yes |
|
+fi |
|
+ |
|
+ |
|
+ |
|
# Check whether --enable-multi-arch was given. |
|
if test "${enable_multi_arch+set}" = set; then : |
|
enableval=$enable_multi_arch; multi_arch=$enableval |
|
diff --git a/configure.in b/configure.in |
|
index f8c36ba306e01f59..9feb463ddfed2a27 100644 |
|
--- a/configure.in |
|
+++ b/configure.in |
|
@@ -234,6 +234,13 @@ AC_ARG_ENABLE([all-warnings], |
|
[]) |
|
AC_SUBST(all_warnings) |
|
|
|
+AC_ARG_ENABLE([werror], |
|
+ AC_HELP_STRING([--disable-werror], |
|
+ [do not build with -Werror]), |
|
+ [enable_werror=$enableval], |
|
+ [enable_werror=yes]) |
|
+AC_SUBST(enable_werror) |
|
+ |
|
AC_ARG_ENABLE([multi-arch], |
|
AC_HELP_STRING([--enable-multi-arch], |
|
[enable single DSO with optimizations for multiple architectures]), |
|
diff --git a/debug/Makefile b/debug/Makefile |
|
index e4efd9bcc687e562..6588b6327ae01205 100644 |
|
--- a/debug/Makefile |
|
+++ b/debug/Makefile |
|
@@ -89,19 +89,21 @@ CFLAGS-tst-longjmp_chk2.c = -fexceptions -fasynchronous-unwind-tables |
|
CPPFLAGS-tst-longjmp_chk2.c = -D_FORTIFY_SOURCE=1 |
|
|
|
# We know these tests have problems with format strings, this is what |
|
-# we are testing. Disable that warning. |
|
-CFLAGS-tst-chk1.c = -Wno-format |
|
-CFLAGS-tst-chk2.c = -Wno-format |
|
-CFLAGS-tst-chk3.c = -Wno-format |
|
-CFLAGS-tst-chk4.cc = -Wno-format |
|
-CFLAGS-tst-chk5.cc = -Wno-format |
|
-CFLAGS-tst-chk6.cc = -Wno-format |
|
-CFLAGS-tst-lfschk1.c = -Wno-format |
|
-CFLAGS-tst-lfschk2.c = -Wno-format |
|
-CFLAGS-tst-lfschk3.c = -Wno-format |
|
-CFLAGS-tst-lfschk4.cc = -Wno-format |
|
-CFLAGS-tst-lfschk5.cc = -Wno-format |
|
-CFLAGS-tst-lfschk6.cc = -Wno-format |
|
+# we are testing. Disable that warning. They also generate warnings |
|
+# from warning attributes, which cannot be disabled via pragmas, so |
|
+# require -Wno-error to be used. |
|
+CFLAGS-tst-chk1.c = -Wno-format -Wno-error |
|
+CFLAGS-tst-chk2.c = -Wno-format -Wno-error |
|
+CFLAGS-tst-chk3.c = -Wno-format -Wno-error |
|
+CFLAGS-tst-chk4.cc = -Wno-format -Wno-error |
|
+CFLAGS-tst-chk5.cc = -Wno-format -Wno-error |
|
+CFLAGS-tst-chk6.cc = -Wno-format -Wno-error |
|
+CFLAGS-tst-lfschk1.c = -Wno-format -Wno-error |
|
+CFLAGS-tst-lfschk2.c = -Wno-format -Wno-error |
|
+CFLAGS-tst-lfschk3.c = -Wno-format -Wno-error |
|
+CFLAGS-tst-lfschk4.cc = -Wno-format -Wno-error |
|
+CFLAGS-tst-lfschk5.cc = -Wno-format -Wno-error |
|
+CFLAGS-tst-lfschk6.cc = -Wno-format -Wno-error |
|
LDLIBS-tst-chk4 = -lstdc++ |
|
LDLIBS-tst-chk5 = -lstdc++ |
|
LDLIBS-tst-chk6 = -lstdc++ |
|
diff --git a/manual/install.texi b/manual/install.texi |
|
index 7fe6e005c3fdd5fb..3799cee621ddc4f9 100644 |
|
--- a/manual/install.texi |
|
+++ b/manual/install.texi |
|
@@ -177,6 +177,13 @@ you understand and accept those risks. |
|
@item --enable-lock-elision=yes |
|
Enable lock elision for pthread mutexes by default. |
|
|
|
+@item --disable-werror |
|
+By default, @theglibc{} is built with @option{-Werror}. If you wish |
|
+to build without this option (for example, if building with a newer |
|
+version of GCC than this version of @theglibc{} was tested with, so |
|
+new warnings cause the build with @option{-Werror} to fail), you can |
|
+configure with @option{--disable-werror}. |
|
+ |
|
@item --build=@var{build-system} |
|
@itemx --host=@var{host-system} |
|
These options are for cross-compiling. If you specify both options and
|
|
|