diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e27967833dfd16dd863ce47997101064f393df4b..09c59c1546a8127dd59d63e40a56252dfd2b9190 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2003-11-03  Andreas Jaeger  <aj@suse.de>
+	    Zack Weinberg  <zack@codesourcery.com>
+
+	* Makefile.in (GCC_CFLAGS): Allow blacklisting of warnings.
+	(SYSCALLS.c.X-warn): Suppress warnings.
+
 2003-11-02  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
 
 	PR optimization/12845
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 88184f31008a96c170fc2a34c86b78bc70f29e7d..1ef581b29e64cbdbb8eda91e86b727128db881f3 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -187,6 +187,8 @@ gengtype-yacc.o-warn = -Wno-error
 c-parse.o-warn = -Wno-error
 # flex output may yield harmless "no previous prototype" warnings
 gengtype-lex.o-warn = -Wno-error
+# SYSCALLS.c misses prototypes
+SYSCALLS.c.X-warn = -Wno-strict-prototypes -Wno-error
 
 # All warnings have to be shut off in stage1 if the compiler used then
 # isn't gcc; configure determines that.  WARN_CFLAGS will be either
@@ -287,7 +289,7 @@ GCC_FOR_TARGET = $(STAGE_CC_WRAPPER) ./xgcc -B./ -B$(build_tooldir)/bin/ -isyste
 # This is used instead of ALL_CFLAGS when compiling with GCC_FOR_TARGET.
 # It omits XCFLAGS, and specifies -B./.
 # It also specifies -isystem ./include to find, e.g., stddef.h.
-GCC_CFLAGS=$(INTERNAL_CFLAGS) $(X_CFLAGS) $(T_CFLAGS) $(LOOSE_WARN) @WERROR@ -isystem ./include $(TCFLAGS)
+GCC_CFLAGS=$(INTERNAL_CFLAGS) $(X_CFLAGS) $(T_CFLAGS) $(LOOSE_WARN) @WERROR@ $($@-warn) -isystem ./include $(TCFLAGS)
 
 # ---------------------------------------------------
 # Programs which produce files for the target machine