diff --git a/argp/Makefile b/argp/Makefile
index ecb7bbb45c..936e3c49ff 100644
--- a/argp/Makefile
+++ b/argp/Makefile
@@ -28,9 +28,9 @@ routines	= $(addprefix argp-, ba fmtstream fs-xinl help parse pv \
 
 tests		= argp-test tst-argp1 bug-argp1 tst-argp2 bug-argp2
 
-CFLAGS-argp-help.c = $(uses-callbacks) -fexceptions
-CFLAGS-argp-parse.c = $(uses-callbacks)
-CFLAGS-argp-fmtstream.c = -fexceptions
+CFLAGS-argp-help.c += $(uses-callbacks) -fexceptions
+CFLAGS-argp-parse.c += $(uses-callbacks)
+CFLAGS-argp-fmtstream.c += -fexceptions
 
 bug-argp1-ARGS = -- --help
 bug-argp2-ARGS = -- -d 111 --dstaddr 222 -p 333 --peer 444
diff --git a/crypt/Makefile b/crypt/Makefile
index 8bbbf2a121..0ed88b893e 100644
--- a/crypt/Makefile
+++ b/crypt/Makefile
@@ -39,9 +39,9 @@ endif
 ifeq ($(nss-crypt),yes)
 nss-cpp-flags := -DUSE_NSS \
   -I$(shell nss-config --includedir) -I$(shell nspr-config --includedir)
-CPPFLAGS-sha256-crypt.c = $(nss-cpp-flags)
-CPPFLAGS-sha512-crypt.c = $(nss-cpp-flags)
-CPPFLAGS-md5-crypt.c = $(nss-cpp-flags)
+CPPFLAGS-sha256-crypt.c += $(nss-cpp-flags)
+CPPFLAGS-sha512-crypt.c += $(nss-cpp-flags)
+CPPFLAGS-md5-crypt.c += $(nss-cpp-flags)
 LDLIBS-crypt.so = -lfreebl3
 else
 libcrypt-routines += md5 sha256 sha512
diff --git a/debug/Makefile b/debug/Makefile
index a9ac779c58..dc12b5d838 100644
--- a/debug/Makefile
+++ b/debug/Makefile
@@ -60,69 +60,69 @@ elide-routines.o := stack_chk_fail_local
 # Building the stack-protector failure routines with stack protection
 # makes no sense.
 
-CFLAGS-stack_chk_fail.c = $(no-stack-protector)
-CFLAGS-stack_chk_fail_local.c = $(no-stack-protector)
-
-CFLAGS-backtrace.c = -fno-omit-frame-pointer -funwind-tables
-CFLAGS-sprintf_chk.c = $(libio-mtsafe)
-CFLAGS-snprintf_chk.c = $(libio-mtsafe)
-CFLAGS-vsprintf_chk.c = $(libio-mtsafe)
-CFLAGS-vsnprintf_chk.c = $(libio-mtsafe)
-CFLAGS-asprintf_chk.c = $(libio-mtsafe)
-CFLAGS-vasprintf_chk.c = $(libio-mtsafe)
-CFLAGS-obprintf_chk.c = $(libio-mtsafe)
-CFLAGS-dprintf_chk.c = $(libio-mtsafe) -fexceptions
-CFLAGS-vdprintf_chk.c = $(libio-mtsafe) -fexceptions
-CFLAGS-printf_chk.c = $(libio-mtsafe) -fexceptions
-CFLAGS-fprintf_chk.c = $(libio-mtsafe) -fexceptions
-CFLAGS-vprintf_chk.c = $(libio-mtsafe) -fexceptions
-CFLAGS-vfprintf_chk.c = $(libio-mtsafe) -fexceptions
-CFLAGS-gets_chk.c = $(libio-mtsafe) -fexceptions
-CFLAGS-fgets_chk.c = $(libio-mtsafe) -fexceptions
-CFLAGS-fgets_u_chk.c = $(libio-mtsafe) -fexceptions
-CFLAGS-fread_chk.c = $(libio-mtsafe) -fexceptions
-CFLAGS-fread_u_chk.c = $(libio-mtsafe) -fexceptions
-CFLAGS-swprintf_chk.c = $(libio-mtsafe)
-CFLAGS-vswprintf_chk.c = $(libio-mtsafe)
-CFLAGS-wprintf_chk.c = $(libio-mtsafe) -fexceptions
-CFLAGS-fwprintf_chk.c = $(libio-mtsafe) -fexceptions
-CFLAGS-vwprintf_chk.c = $(libio-mtsafe) -fexceptions
-CFLAGS-vfwprintf_chk.c = $(libio-mtsafe) -fexceptions
-CFLAGS-fgetws_chk.c = $(libio-mtsafe) -fexceptions
-CFLAGS-fgetws_u_chk.c = $(libio-mtsafe) -fexceptions
-CFLAGS-read_chk.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-pread_chk.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-pread64_chk.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-recv_chk.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-recvfrom_chk.c = -fexceptions -fasynchronous-unwind-tables
+CFLAGS-stack_chk_fail.c += $(no-stack-protector)
+CFLAGS-stack_chk_fail_local.c += $(no-stack-protector)
+
+CFLAGS-backtrace.c += -fno-omit-frame-pointer -funwind-tables
+CFLAGS-sprintf_chk.c += $(libio-mtsafe)
+CFLAGS-snprintf_chk.c += $(libio-mtsafe)
+CFLAGS-vsprintf_chk.c += $(libio-mtsafe)
+CFLAGS-vsnprintf_chk.c += $(libio-mtsafe)
+CFLAGS-asprintf_chk.c += $(libio-mtsafe)
+CFLAGS-vasprintf_chk.c += $(libio-mtsafe)
+CFLAGS-obprintf_chk.c += $(libio-mtsafe)
+CFLAGS-dprintf_chk.c += $(libio-mtsafe) -fexceptions
+CFLAGS-vdprintf_chk.c += $(libio-mtsafe) -fexceptions
+CFLAGS-printf_chk.c += $(libio-mtsafe) -fexceptions
+CFLAGS-fprintf_chk.c += $(libio-mtsafe) -fexceptions
+CFLAGS-vprintf_chk.c += $(libio-mtsafe) -fexceptions
+CFLAGS-vfprintf_chk.c += $(libio-mtsafe) -fexceptions
+CFLAGS-gets_chk.c += $(libio-mtsafe) -fexceptions
+CFLAGS-fgets_chk.c += $(libio-mtsafe) -fexceptions
+CFLAGS-fgets_u_chk.c += $(libio-mtsafe) -fexceptions
+CFLAGS-fread_chk.c += $(libio-mtsafe) -fexceptions
+CFLAGS-fread_u_chk.c += $(libio-mtsafe) -fexceptions
+CFLAGS-swprintf_chk.c += $(libio-mtsafe)
+CFLAGS-vswprintf_chk.c += $(libio-mtsafe)
+CFLAGS-wprintf_chk.c += $(libio-mtsafe) -fexceptions
+CFLAGS-fwprintf_chk.c += $(libio-mtsafe) -fexceptions
+CFLAGS-vwprintf_chk.c += $(libio-mtsafe) -fexceptions
+CFLAGS-vfwprintf_chk.c += $(libio-mtsafe) -fexceptions
+CFLAGS-fgetws_chk.c += $(libio-mtsafe) -fexceptions
+CFLAGS-fgetws_u_chk.c += $(libio-mtsafe) -fexceptions
+CFLAGS-read_chk.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-pread_chk.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-pread64_chk.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-recv_chk.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-recvfrom_chk.c += -fexceptions -fasynchronous-unwind-tables
 
 # Need to make sure the settings here override what configure might have
 # set up for us, so keep the CFLAGS/CPPFLAGS split logical as the order is:
 # <user CFLAGS> <test CFLAGS> <user CPPFLAGS> <test CPPFLAGS>
-CFLAGS-tst-longjmp_chk.c = -fexceptions -fasynchronous-unwind-tables
-CPPFLAGS-tst-longjmp_chk.c = -D_FORTIFY_SOURCE=1
-CFLAGS-tst-longjmp_chk2.c = -fexceptions -fasynchronous-unwind-tables
-CPPFLAGS-tst-longjmp_chk2.c = -D_FORTIFY_SOURCE=1
-CFLAGS-tst-longjmp_chk3.c = -fexceptions -fasynchronous-unwind-tables
-CPPFLAGS-tst-longjmp_chk3.c = -D_FORTIFY_SOURCE=1
+CFLAGS-tst-longjmp_chk.c += -fexceptions -fasynchronous-unwind-tables
+CPPFLAGS-tst-longjmp_chk.c += -D_FORTIFY_SOURCE=1
+CFLAGS-tst-longjmp_chk2.c += -fexceptions -fasynchronous-unwind-tables
+CPPFLAGS-tst-longjmp_chk2.c += -D_FORTIFY_SOURCE=1
+CFLAGS-tst-longjmp_chk3.c += -fexceptions -fasynchronous-unwind-tables
+CPPFLAGS-tst-longjmp_chk3.c += -D_FORTIFY_SOURCE=1
 
 # We know these tests have problems with format strings, this is what
 # we are testing.  Disable that warning.  They are also testing
 # deprecated functions (notably gets) so disable that warning as well.
 # And 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-deprecated-declarations -Wno-error
-CFLAGS-tst-chk2.c = -Wno-format -Wno-deprecated-declarations -Wno-error
-CFLAGS-tst-chk3.c = -Wno-format -Wno-deprecated-declarations -Wno-error
-CFLAGS-tst-chk4.cc = -Wno-format -Wno-deprecated-declarations -Wno-error
-CFLAGS-tst-chk5.cc = -Wno-format -Wno-deprecated-declarations -Wno-error
-CFLAGS-tst-chk6.cc = -Wno-format -Wno-deprecated-declarations -Wno-error
-CFLAGS-tst-lfschk1.c = -Wno-format -Wno-deprecated-declarations -Wno-error
-CFLAGS-tst-lfschk2.c = -Wno-format -Wno-deprecated-declarations -Wno-error
-CFLAGS-tst-lfschk3.c = -Wno-format -Wno-deprecated-declarations -Wno-error
-CFLAGS-tst-lfschk4.cc = -Wno-format -Wno-deprecated-declarations -Wno-error
-CFLAGS-tst-lfschk5.cc = -Wno-format -Wno-deprecated-declarations -Wno-error
-CFLAGS-tst-lfschk6.cc = -Wno-format -Wno-deprecated-declarations -Wno-error
+CFLAGS-tst-chk1.c += -Wno-format -Wno-deprecated-declarations -Wno-error
+CFLAGS-tst-chk2.c += -Wno-format -Wno-deprecated-declarations -Wno-error
+CFLAGS-tst-chk3.c += -Wno-format -Wno-deprecated-declarations -Wno-error
+CFLAGS-tst-chk4.cc += -Wno-format -Wno-deprecated-declarations -Wno-error
+CFLAGS-tst-chk5.cc += -Wno-format -Wno-deprecated-declarations -Wno-error
+CFLAGS-tst-chk6.cc += -Wno-format -Wno-deprecated-declarations -Wno-error
+CFLAGS-tst-lfschk1.c += -Wno-format -Wno-deprecated-declarations -Wno-error
+CFLAGS-tst-lfschk2.c += -Wno-format -Wno-deprecated-declarations -Wno-error
+CFLAGS-tst-lfschk3.c += -Wno-format -Wno-deprecated-declarations -Wno-error
+CFLAGS-tst-lfschk4.cc += -Wno-format -Wno-deprecated-declarations -Wno-error
+CFLAGS-tst-lfschk5.cc += -Wno-format -Wno-deprecated-declarations -Wno-error
+CFLAGS-tst-lfschk6.cc += -Wno-format -Wno-deprecated-declarations -Wno-error
 LDLIBS-tst-chk4 = -lstdc++
 LDLIBS-tst-chk5 = -lstdc++
 LDLIBS-tst-chk6 = -lstdc++
@@ -143,7 +143,7 @@ LDFLAGS-tst-backtrace4 = -rdynamic
 LDFLAGS-tst-backtrace5 = -rdynamic
 LDFLAGS-tst-backtrace6 = -rdynamic
 
-CFLAGS-tst-ssp-1.c = -fstack-protector-all
+CFLAGS-tst-ssp-1.c += -fstack-protector-all
 
 tests = backtrace-tst tst-longjmp_chk tst-chk1 tst-chk2 tst-chk3 \
 	tst-lfschk1 tst-lfschk2 tst-lfschk3 test-strcpy_chk test-stpcpy_chk \
diff --git a/dirent/Makefile b/dirent/Makefile
index 1648bf42d2..c537dd2102 100644
--- a/dirent/Makefile
+++ b/dirent/Makefile
@@ -33,10 +33,10 @@ routines	:= opendir closedir readdir readdir_r rewinddir \
 tests	   := list tst-seekdir opendir-tst1 bug-readdir1 tst-fdopendir \
 	      tst-fdopendir2 tst-scandir tst-scandir64
 
-CFLAGS-scandir.c = $(uses-callbacks)
-CFLAGS-scandir64.c = $(uses-callbacks)
-CFLAGS-scandir-tail.c = $(uses-callbacks)
-CFLAGS-scandir64-tail.c = $(uses-callbacks)
+CFLAGS-scandir.c += $(uses-callbacks)
+CFLAGS-scandir64.c += $(uses-callbacks)
+CFLAGS-scandir-tail.c += $(uses-callbacks)
+CFLAGS-scandir64-tail.c += $(uses-callbacks)
 
 include ../Rules
 
diff --git a/elf/Makefile b/elf/Makefile
index d49fd4673d..7b8f325ccf 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -40,12 +40,12 @@ endif
 ifneq (no,$(have-tunables))
 dl-routines += dl-tunables
 tunables-type = $(addprefix TUNABLES_FRONTEND_,$(have-tunables))
-CPPFLAGS-dl-tunables.c = -DTUNABLES_FRONTEND=$(tunables-type)
+CPPFLAGS-dl-tunables.c += -DTUNABLES_FRONTEND=$(tunables-type)
 
 # Make sure that the compiler does not insert any library calls in tunables
 # code paths.
 ifeq (yes,$(have-loop-to-function))
-CFLAGS-dl-tunables.c = -fno-tree-loop-distribute-patterns
+CFLAGS-dl-tunables.c += -fno-tree-loop-distribute-patterns
 endif
 endif
 
@@ -61,9 +61,9 @@ rtld-routines	= rtld $(all-dl-routines) dl-sysdep dl-environ dl-minimal \
   dl-error-minimal dl-conflict
 all-rtld-routines = $(rtld-routines) $(sysdep-rtld-routines)
 
-CFLAGS-dl-runtime.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-dl-lookup.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-dl-iterate-phdr.c = $(uses-callbacks)
+CFLAGS-dl-runtime.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-dl-lookup.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-dl-iterate-phdr.c += $(uses-callbacks)
 
 # Compile rtld itself without stack protection.
 # Also compile all routines in the static library that are elided from
@@ -300,7 +300,7 @@ tests-pie += tst-pie1 tst-pie2
 ifeq (yes,$(have-protected-data))
 tests += vismain
 tests-pie += vismain
-CFLAGS-vismain.c = $(PIE-ccflag)
+CFLAGS-vismain.c += $(PIE-ccflag)
 endif
 endif
 modules-execstack-yes = tst-execstack-mod
@@ -386,12 +386,12 @@ endif
 
 # By default tst-linkall-static should try to use crypt routines to test
 # static libcrypt use.
-CFLAGS-tst-linkall-static.c = -DUSE_CRYPT=1
+CFLAGS-tst-linkall-static.c += -DUSE_CRYPT=1
 # However, if we are using NSS crypto and we don't have a static
 # library, then we exclude the use of crypt functions in the test.
 # We similarly exclude libcrypt.a from the static link (see below).
 ifeq (yesno,$(nss-crypt)$(static-nss-crypt))
-CFLAGS-tst-linkall-static.c = -DUSE_CRYPT=0
+CFLAGS-tst-linkall-static.c += -DUSE_CRYPT=0
 endif
 
 include ../Rules
@@ -509,7 +509,7 @@ $(objpfx)trusted-dirs.st: Makefile $(..)Makeconfig
 	echo '#define DL_DST_LIB "$(notdir $(slibdir))"' >> ${@:st=T}
 	$(move-if-change) ${@:st=T} ${@:st=h}
 	touch $@
-CPPFLAGS-dl-load.c = -I$(objpfx). -I$(csu-objpfx).
+CPPFLAGS-dl-load.c += -I$(objpfx). -I$(csu-objpfx).
 
 ifeq (yes,$(build-shared))
 $(inst_slibdir)/$(rtld-version-installed-name): $(objpfx)ld.so $(+force)
@@ -559,12 +559,12 @@ $(objpfx)sln: $(sln-modules:%=$(objpfx)%.o)
 $(objpfx)ldconfig: $(ldconfig-modules:%=$(objpfx)%.o)
 
 SYSCONF-FLAGS := -D'SYSCONFDIR="$(sysconfdir)"'
-CFLAGS-ldconfig.c = $(SYSCONF-FLAGS) -D'LIBDIR="$(libdir)"' \
+CFLAGS-ldconfig.c += $(SYSCONF-FLAGS) -D'LIBDIR="$(libdir)"' \
 		    -D'SLIBDIR="$(slibdir)"'
 libof-ldconfig = ldconfig
-CFLAGS-dl-cache.c = $(SYSCONF-FLAGS)
-CFLAGS-cache.c = $(SYSCONF-FLAGS)
-CFLAGS-rtld.c = $(SYSCONF-FLAGS)
+CFLAGS-dl-cache.c += $(SYSCONF-FLAGS)
+CFLAGS-cache.c += $(SYSCONF-FLAGS)
+CFLAGS-rtld.c += $(SYSCONF-FLAGS)
 
 cpp-srcs-left := $(all-rtld-routines:=.os)
 lib := rtld
@@ -759,7 +759,7 @@ $(objpfx)loadfail.out: $(objpfx)failobj.so
 
 $(objpfx)multiload: $(libdl)
 LDFLAGS-multiload = -rdynamic
-CFLAGS-multiload.c = -DOBJDIR=\"$(elf-objpfx)\"
+CFLAGS-multiload.c += -DOBJDIR=\"$(elf-objpfx)\"
 
 $(objpfx)multiload.out: $(objpfx)testobj1.so
 
@@ -827,7 +827,7 @@ $(objpfx)filtmod1.so: $(objpfx)filtmod1.os $(objpfx)filtmod2.so
 $(objpfx)filter: $(objpfx)filtmod1.so
 
 # This does not link against libc.
-CFLAGS-filtmod1.c = $(no-stack-protector)
+CFLAGS-filtmod1.c += $(no-stack-protector)
 
 $(objpfx)unload: $(libdl)
 $(objpfx)unload.out: $(objpfx)unloadmod.so
@@ -954,10 +954,10 @@ $(patsubst %,$(objpfx)%.so,$(tlsmod18a-modules)): $(objpfx)tst-tlsmod18a%.so: $(
 $(objpfx)tst-tls19: $(libdl)
 $(objpfx)tst-tls19.out: $(objpfx)tst-tls19mod1.so
 
-CFLAGS-tst-align.c = $(stack-align-test-flags)
-CFLAGS-tst-align2.c = $(stack-align-test-flags)
-CFLAGS-tst-alignmod.c = $(stack-align-test-flags)
-CFLAGS-tst-alignmod2.c = $(stack-align-test-flags)
+CFLAGS-tst-align.c += $(stack-align-test-flags)
+CFLAGS-tst-align2.c += $(stack-align-test-flags)
+CFLAGS-tst-alignmod.c += $(stack-align-test-flags)
+CFLAGS-tst-alignmod2.c += $(stack-align-test-flags)
 $(objpfx)tst-align: $(libdl)
 $(objpfx)tst-align.out: $(objpfx)tst-alignmod.so
 $(objpfx)tst-align2: $(objpfx)tst-alignmod2.so
@@ -992,7 +992,7 @@ endif
 ifeq ($(have-z-execstack),yes)
 $(objpfx)tst-execstack: $(libdl)
 $(objpfx)tst-execstack.out: $(objpfx)tst-execstack-mod.so
-CPPFLAGS-tst-execstack.c = -DUSE_PTHREADS=0
+CPPFLAGS-tst-execstack.c += -DUSE_PTHREADS=0
 LDFLAGS-tst-execstack = -Wl,-z,noexecstack
 LDFLAGS-tst-execstack-mod = -Wl,-z,execstack
 
@@ -1193,7 +1193,7 @@ tst-stackguard1-static-ARGS = --command "$(objpfx)tst-stackguard1-static --child
 tst-ptrguard1-ARGS = --command "$(host-test-program-cmd) --child"
 # When built statically, the pointer guard interface uses
 # __pointer_chk_guard_local.
-CFLAGS-tst-ptrguard1-static.c = -DPTRGUARD_LOCAL
+CFLAGS-tst-ptrguard1-static.c += -DPTRGUARD_LOCAL
 tst-ptrguard1-static-ARGS = --command "$(objpfx)tst-ptrguard1-static --child"
 
 $(objpfx)tst-leaks1: $(libdl)
@@ -1351,7 +1351,7 @@ LDFLAGS-tst-latepthreadmod.so = \
   -Wl,-z,lazy -Wl,--unresolved-symbols=ignore-all
 # Do not optimize sibling calls as the test relies on a JMP_SLOT relocation for
 # function this_function_is_not_defined.
-CFLAGS-tst-latepthreadmod.c = -fno-optimize-sibling-calls
+CFLAGS-tst-latepthreadmod.c += -fno-optimize-sibling-calls
 $(objpfx)tst-latepthreadmod.so: $(shared-thread-library)
 $(objpfx)tst-latepthread: $(libdl)
 $(objpfx)tst-latepthread.out: $(objpfx)tst-latepthreadmod.so
diff --git a/grp/Makefile b/grp/Makefile
index 342da4f649..8ec09a34f7 100644
--- a/grp/Makefile
+++ b/grp/Makefile
@@ -43,15 +43,15 @@ include ../Rules
 
 ifeq ($(have-thread-library),yes)
 
-CFLAGS-getgrgid_r.c = -fexceptions
-CFLAGS-getgrnam_r.c = -fexceptions
-CFLAGS-getgrent_r.c = -fexceptions
-CFLAGS-getgrent.c = -fexceptions
-CFLAGS-fgetgrent.c = -fexceptions
-CFLAGS-fgetgrent_r.c = -fexceptions $(libio-mtsafe)
-CFLAGS-putgrent.c = -fexceptions $(libio-mtsafe)
-CFLAGS-initgroups.c = -fexceptions
-CFLAGS-getgrgid.c = -fexceptions
+CFLAGS-getgrgid_r.c += -fexceptions
+CFLAGS-getgrnam_r.c += -fexceptions
+CFLAGS-getgrent_r.c += -fexceptions
+CFLAGS-getgrent.c += -fexceptions
+CFLAGS-fgetgrent.c += -fexceptions
+CFLAGS-fgetgrent_r.c += -fexceptions $(libio-mtsafe)
+CFLAGS-putgrent.c += -fexceptions $(libio-mtsafe)
+CFLAGS-initgroups.c += -fexceptions
+CFLAGS-getgrgid.c += -fexceptions
 
 endif
 
diff --git a/gshadow/Makefile b/gshadow/Makefile
index 3558c3fba6..a48abf6d15 100644
--- a/gshadow/Makefile
+++ b/gshadow/Makefile
@@ -28,12 +28,12 @@ routines	= getsgent getsgnam sgetsgent fgetsgent putsgent \
 
 tests = tst-gshadow tst-putsgent
 
-CFLAGS-getsgent_r.c = -fexceptions
-CFLAGS-getsgent.c = -fexceptions
-CFLAGS-fgetsgent.c = -fexceptions
-CFLAGS-fgetsgent_r.c = -fexceptions $(libio-mtsafe)
-CFLAGS-putsgent.c = -fexceptions $(libio-mtsafe)
-CFLAGS-getsgnam.c = -fexceptions
-CFLAGS-getsgnam_r.c = -fexceptions
+CFLAGS-getsgent_r.c += -fexceptions
+CFLAGS-getsgent.c += -fexceptions
+CFLAGS-fgetsgent.c += -fexceptions
+CFLAGS-fgetsgent_r.c += -fexceptions $(libio-mtsafe)
+CFLAGS-putsgent.c += -fexceptions $(libio-mtsafe)
+CFLAGS-getsgnam.c += -fexceptions
+CFLAGS-getsgnam_r.c += -fexceptions
 
 include ../Rules
diff --git a/iconv/Makefile b/iconv/Makefile
index d3405651d6..a36869491b 100644
--- a/iconv/Makefile
+++ b/iconv/Makefile
@@ -35,13 +35,13 @@ iconv_prog-modules = iconv_charmap charmap charmap-dir linereader \
 		     record-status
 iconvconfig-modules = strtab xmalloc hash-string
 extra-objs	   = $(iconv_prog-modules:=.o) $(iconvconfig-modules:=.o)
-CFLAGS-iconv_prog.c = -I../locale/programs
-CFLAGS-iconv_charmap.c = -I../locale/programs
-CFLAGS-dummy-repertoire.c = -I../locale/programs
-CFLAGS-charmap.c = -DCHARMAP_PATH='"$(i18ndir)/charmaps"' \
+CFLAGS-iconv_prog.c += -I../locale/programs
+CFLAGS-iconv_charmap.c += -I../locale/programs
+CFLAGS-dummy-repertoire.c += -I../locale/programs
+CFLAGS-charmap.c += -DCHARMAP_PATH='"$(i18ndir)/charmaps"' \
 		   -DDEFAULT_CHARMAP=null_pointer -DNEED_NULL_POINTER
-CFLAGS-linereader.c = -DNO_TRANSLITERATION
-CFLAGS-simple-hash.c = -I../locale
+CFLAGS-linereader.c += -DNO_TRANSLITERATION
+CFLAGS-simple-hash.c += -I../locale
 
 tests	= tst-iconv1 tst-iconv2 tst-iconv3 tst-iconv4 tst-iconv5 tst-iconv6
 
@@ -50,8 +50,8 @@ install-others-programs	= $(inst_bindir)/iconv
 install-sbin	= iconvconfig
 
 CFLAGS-gconv_cache.c += -DGCONV_DIR='"$(gconvdir)"'
-CFLAGS-gconv_conf.c = -DGCONV_PATH='"$(gconvdir)"'
-CFLAGS-iconvconfig.c = -DGCONV_PATH='"$(gconvdir)"' -DGCONV_DIR='"$(gconvdir)"'
+CFLAGS-gconv_conf.c += -DGCONV_PATH='"$(gconvdir)"'
+CFLAGS-iconvconfig.c += -DGCONV_PATH='"$(gconvdir)"' -DGCONV_DIR='"$(gconvdir)"'
 
 # Set libof-* for each routine.
 cpp-srcs-left := $(iconv_prog-modules) $(iconvconfig-modules)
diff --git a/inet/Makefile b/inet/Makefile
index 38c61bdc61..0ab2292838 100644
--- a/inet/Makefile
+++ b/inet/Makefile
@@ -67,36 +67,36 @@ include ../Rules
 
 ifeq ($(have-thread-library),yes)
 
-CFLAGS-gethstbyad_r.c = -fexceptions
-CFLAGS-gethstbyad.c = -fexceptions
-CFLAGS-gethstbynm_r.c = -fexceptions
-CFLAGS-gethstbynm.c = -fexceptions
-CFLAGS-gethstbynm2_r.c = -fexceptions
-CFLAGS-gethstbynm2.c = -fexceptions
-CFLAGS-gethstent_r.c = -fexceptions
-CFLAGS-gethstent.c = -fexceptions
-CFLAGS-rcmd.c = -fexceptions
-CFLAGS-getnetbynm_r.c = -fexceptions
-CFLAGS-getnetbynm.c = -fexceptions
-CFLAGS-getnetbyad_r.c = -fexceptions
-CFLAGS-getnetbyad.c = -fexceptions
-CFLAGS-getnetent_r.c = -fexceptions
-CFLAGS-getnetent.c = -fexceptions
-CFLAGS-getaliasent_r.c = -fexceptions
-CFLAGS-getaliasent.c = -fexceptions
-CFLAGS-getrpcent_r.c = -fexceptions
-CFLAGS-getrpcent.c = -fexceptions
-CFLAGS-getservent_r.c = -fexceptions
-CFLAGS-getservent.c = -fexceptions
-CFLAGS-getprtent_r.c = -fexceptions
-CFLAGS-getprtent.c = -fexceptions
-CFLAGS-either_ntoh.c = -fexceptions
-CFLAGS-either_hton.c = -fexceptions
-CFLAGS-getnetgrent.c = -fexceptions
-CFLAGS-getnetgrent_r.c = -fexceptions
-
-CFLAGS-tst-checks-posix.c = -std=c99
-CFLAGS-tst-sockaddr.c = -fno-strict-aliasing
+CFLAGS-gethstbyad_r.c += -fexceptions
+CFLAGS-gethstbyad.c += -fexceptions
+CFLAGS-gethstbynm_r.c += -fexceptions
+CFLAGS-gethstbynm.c += -fexceptions
+CFLAGS-gethstbynm2_r.c += -fexceptions
+CFLAGS-gethstbynm2.c += -fexceptions
+CFLAGS-gethstent_r.c += -fexceptions
+CFLAGS-gethstent.c += -fexceptions
+CFLAGS-rcmd.c += -fexceptions
+CFLAGS-getnetbynm_r.c += -fexceptions
+CFLAGS-getnetbynm.c += -fexceptions
+CFLAGS-getnetbyad_r.c += -fexceptions
+CFLAGS-getnetbyad.c += -fexceptions
+CFLAGS-getnetent_r.c += -fexceptions
+CFLAGS-getnetent.c += -fexceptions
+CFLAGS-getaliasent_r.c += -fexceptions
+CFLAGS-getaliasent.c += -fexceptions
+CFLAGS-getrpcent_r.c += -fexceptions
+CFLAGS-getrpcent.c += -fexceptions
+CFLAGS-getservent_r.c += -fexceptions
+CFLAGS-getservent.c += -fexceptions
+CFLAGS-getprtent_r.c += -fexceptions
+CFLAGS-getprtent.c += -fexceptions
+CFLAGS-either_ntoh.c += -fexceptions
+CFLAGS-either_hton.c += -fexceptions
+CFLAGS-getnetgrent.c += -fexceptions
+CFLAGS-getnetgrent_r.c += -fexceptions
+
+CFLAGS-tst-checks-posix.c += -std=c99
+CFLAGS-tst-sockaddr.c += -fno-strict-aliasing
 
 endif
 
diff --git a/intl/Makefile b/intl/Makefile
index 4ab9e5cd63..dd3451cf5d 100644
--- a/intl/Makefile
+++ b/intl/Makefile
@@ -124,14 +124,14 @@ $(objpfx)msgs.h: po2test.awk ../po/de.po
 	$(make-target-directory)
 	LC_ALL=C $(AWK) -f $^ > $@
 
-CFLAGS-tst-gettext.c = -DTESTSTRS_H=\"$(objpfx)msgs.h\"
-CFLAGS-tst-translit.c = -DOBJPFX=\"$(objpfx)\"
-CFLAGS-tst-gettext2.c = -DOBJPFX=\"$(objpfx)\"
-CFLAGS-tst-codeset.c = -DOBJPFX=\"$(objpfx)\"
-CFLAGS-tst-gettext3.c = -DOBJPFX=\"$(objpfx)\"
-CFLAGS-tst-gettext4.c = -DOBJPFX=\"$(objpfx)\"
-CFLAGS-tst-gettext5.c = -DOBJPFX=\"$(objpfx)\"
-CFLAGS-tst-gettext6.c = -DOBJPFX=\"$(objpfx)\"
+CFLAGS-tst-gettext.c += -DTESTSTRS_H=\"$(objpfx)msgs.h\"
+CFLAGS-tst-translit.c += -DOBJPFX=\"$(objpfx)\"
+CFLAGS-tst-gettext2.c += -DOBJPFX=\"$(objpfx)\"
+CFLAGS-tst-codeset.c += -DOBJPFX=\"$(objpfx)\"
+CFLAGS-tst-gettext3.c += -DOBJPFX=\"$(objpfx)\"
+CFLAGS-tst-gettext4.c += -DOBJPFX=\"$(objpfx)\"
+CFLAGS-tst-gettext5.c += -DOBJPFX=\"$(objpfx)\"
+CFLAGS-tst-gettext6.c += -DOBJPFX=\"$(objpfx)\"
 
 ifeq ($(have-thread-library),yes)
 ifeq (yes,$(build-shared))
diff --git a/io/Makefile b/io/Makefile
index 2f26bf56db..b3ee5ae647 100644
--- a/io/Makefile
+++ b/io/Makefile
@@ -78,32 +78,32 @@ endif
 
 include ../Rules
 
-CFLAGS-open.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-open64.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-creat.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-creat64.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-fcntl.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-poll.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-ppoll.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-lockf.c = -fexceptions
-CFLAGS-statfs.c = -fexceptions
-CFLAGS-fstatfs.c = -fexceptions
-CFLAGS-statvfs.c = -fexceptions
-CFLAGS-fstatvfs.c = -fexceptions
-CFLAGS-fts.c = -Wno-uninitialized $(uses-callbacks) -fexceptions
-CFLAGS-fts64.c = -Wno-uninitialized $(uses-callbacks) -fexceptions
-CFLAGS-ftw.c = $(uses-callbacks) -fexceptions
-CFLAGS-ftw64.c = $(uses-callbacks) -fexceptions
-CFLAGS-lockf.c = -fexceptions
-CFLAGS-posix_fallocate.c = -fexceptions
-CFLAGS-posix_fallocate64.c = -fexceptions
-CFLAGS-fallocate.c = -fexceptions
-CFLAGS-fallocate64.c = -fexceptions
-CFLAGS-read.c = -fexceptions
-CFLAGS-write.c = -fexceptions
-
-CFLAGS-test-stat.c = -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE
-CFLAGS-test-lfs.c = -D_LARGEFILE64_SOURCE
+CFLAGS-open.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-open64.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-creat.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-creat64.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-fcntl.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-poll.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-ppoll.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-lockf.c += -fexceptions
+CFLAGS-statfs.c += -fexceptions
+CFLAGS-fstatfs.c += -fexceptions
+CFLAGS-statvfs.c += -fexceptions
+CFLAGS-fstatvfs.c += -fexceptions
+CFLAGS-fts.c += -Wno-uninitialized $(uses-callbacks) -fexceptions
+CFLAGS-fts64.c += -Wno-uninitialized $(uses-callbacks) -fexceptions
+CFLAGS-ftw.c += $(uses-callbacks) -fexceptions
+CFLAGS-ftw64.c += $(uses-callbacks) -fexceptions
+CFLAGS-lockf.c += -fexceptions
+CFLAGS-posix_fallocate.c += -fexceptions
+CFLAGS-posix_fallocate64.c += -fexceptions
+CFLAGS-fallocate.c += -fexceptions
+CFLAGS-fallocate64.c += -fexceptions
+CFLAGS-read.c += -fexceptions
+CFLAGS-write.c += -fexceptions
+
+CFLAGS-test-stat.c += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE
+CFLAGS-test-lfs.c += -D_LARGEFILE64_SOURCE
 
 test-stat2-ARGS = Makefile . $(objpfx)test-stat2
 
diff --git a/libio/Makefile b/libio/Makefile
index 9d09bd8b6a..29b1993635 100644
--- a/libio/Makefile
+++ b/libio/Makefile
@@ -85,67 +85,67 @@ endif
 CPPFLAGS += $(libio-mtsafe)
 
 # Support for exception handling.
-CFLAGS-fileops.c = -fexceptions
-CFLAGS-fputc.c = -fexceptions
-CFLAGS-fputwc.c = -fexceptions
-CFLAGS-freopen64.c = -fexceptions
-CFLAGS-freopen.c = -fexceptions
-CFLAGS-fseek.c = -fexceptions
-CFLAGS-fseeko64.c = -fexceptions
-CFLAGS-fseeko.c = -fexceptions
-CFLAGS-ftello64.c = -fexceptions
-CFLAGS-ftello.c = -fexceptions
-CFLAGS-fwide.c = -fexceptions
-CFLAGS-genops.c = -fexceptions
-CFLAGS-getc.c = -fexceptions
-CFLAGS-getchar.c = -fexceptions
-CFLAGS-getwc.c = -fexceptions
-CFLAGS-getwchar.c = -fexceptions
-CFLAGS-iofclose.c = -fexceptions
-CFLAGS-iofflush.c = -fexceptions
-CFLAGS-iofgetpos64.c = -fexceptions
-CFLAGS-iofgetpos.c = -fexceptions
-CFLAGS-iofgets.c = -fexceptions
-CFLAGS-iofgetws.c = -fexceptions
-CFLAGS-iofputs.c = -fexceptions
-CFLAGS-iofputws.c = -fexceptions
-CFLAGS-iofread.c = -fexceptions
-CFLAGS-iofsetpos64.c = -fexceptions
-CFLAGS-iofsetpos.c = -fexceptions
-CFLAGS-ioftell.c = -fexceptions
-CFLAGS-iofwrite.c = -fexceptions
-CFLAGS-iogetdelim.c = -fexceptions
-CFLAGS-iogetline.c = -fexceptions
-CFLAGS-iogets.c = -fexceptions
-CFLAGS-iogetwline.c = -fexceptions
-CFLAGS-ioputs.c = -fexceptions
-CFLAGS-ioseekoff.c = -fexceptions
-CFLAGS-ioseekpos.c = -fexceptions
-CFLAGS-iosetbuffer.c = -fexceptions
-CFLAGS-iosetvbuf.c = -fexceptions
-CFLAGS-ioungetc.c = -fexceptions
-CFLAGS-ioungetwc.c = -fexceptions
-CFLAGS-oldfileops.c = -fexceptions
-CFLAGS-oldiofclose.c = -fexceptions
-CFLAGS-oldiofgetpos64.c = -fexceptions
-CFLAGS-oldiofgetpos.c = -fexceptions
-CFLAGS-oldiofsetpos64.c = -fexceptions
-CFLAGS-oldiofsetpos.c = -fexceptions
-CFLAGS-peekc.c = -fexceptions
-CFLAGS-putc.c = -fexceptions
-CFLAGS-putchar.c = -fexceptions
-CFLAGS-putwc.c = -fexceptions
-CFLAGS-putwchar.c = -fexceptions
-CFLAGS-rewind.c = -fexceptions
-CFLAGS-wfileops.c = -fexceptions
-CFLAGS-wgenops.c = -fexceptions
-CFLAGS-oldiofopen.c = -fexceptions
-CFLAGS-iofopen.c = -fexceptions
-CFLAGS-iofopen64.c = -fexceptions
-CFLAGS-oldtmpfile.c = -fexceptions
+CFLAGS-fileops.c += -fexceptions
+CFLAGS-fputc.c += -fexceptions
+CFLAGS-fputwc.c += -fexceptions
+CFLAGS-freopen64.c += -fexceptions
+CFLAGS-freopen.c += -fexceptions
+CFLAGS-fseek.c += -fexceptions
+CFLAGS-fseeko64.c += -fexceptions
+CFLAGS-fseeko.c += -fexceptions
+CFLAGS-ftello64.c += -fexceptions
+CFLAGS-ftello.c += -fexceptions
+CFLAGS-fwide.c += -fexceptions
+CFLAGS-genops.c += -fexceptions
+CFLAGS-getc.c += -fexceptions
+CFLAGS-getchar.c += -fexceptions
+CFLAGS-getwc.c += -fexceptions
+CFLAGS-getwchar.c += -fexceptions
+CFLAGS-iofclose.c += -fexceptions
+CFLAGS-iofflush.c += -fexceptions
+CFLAGS-iofgetpos64.c += -fexceptions
+CFLAGS-iofgetpos.c += -fexceptions
+CFLAGS-iofgets.c += -fexceptions
+CFLAGS-iofgetws.c += -fexceptions
+CFLAGS-iofputs.c += -fexceptions
+CFLAGS-iofputws.c += -fexceptions
+CFLAGS-iofread.c += -fexceptions
+CFLAGS-iofsetpos64.c += -fexceptions
+CFLAGS-iofsetpos.c += -fexceptions
+CFLAGS-ioftell.c += -fexceptions
+CFLAGS-iofwrite.c += -fexceptions
+CFLAGS-iogetdelim.c += -fexceptions
+CFLAGS-iogetline.c += -fexceptions
+CFLAGS-iogets.c += -fexceptions
+CFLAGS-iogetwline.c += -fexceptions
+CFLAGS-ioputs.c += -fexceptions
+CFLAGS-ioseekoff.c += -fexceptions
+CFLAGS-ioseekpos.c += -fexceptions
+CFLAGS-iosetbuffer.c += -fexceptions
+CFLAGS-iosetvbuf.c += -fexceptions
+CFLAGS-ioungetc.c += -fexceptions
+CFLAGS-ioungetwc.c += -fexceptions
+CFLAGS-oldfileops.c += -fexceptions
+CFLAGS-oldiofclose.c += -fexceptions
+CFLAGS-oldiofgetpos64.c += -fexceptions
+CFLAGS-oldiofgetpos.c += -fexceptions
+CFLAGS-oldiofsetpos64.c += -fexceptions
+CFLAGS-oldiofsetpos.c += -fexceptions
+CFLAGS-peekc.c += -fexceptions
+CFLAGS-putc.c += -fexceptions
+CFLAGS-putchar.c += -fexceptions
+CFLAGS-putwc.c += -fexceptions
+CFLAGS-putwchar.c += -fexceptions
+CFLAGS-rewind.c += -fexceptions
+CFLAGS-wfileops.c += -fexceptions
+CFLAGS-wgenops.c += -fexceptions
+CFLAGS-oldiofopen.c += -fexceptions
+CFLAGS-iofopen.c += -fexceptions
+CFLAGS-iofopen64.c += -fexceptions
+CFLAGS-oldtmpfile.c += -fexceptions
 # XXX Do we need filedoalloc and wfiledoalloc?  Others?
 
-CFLAGS-tst_putwc.c = -DOBJPFX=\"$(objpfx)\"
+CFLAGS-tst_putwc.c += -DOBJPFX=\"$(objpfx)\"
 
 tst_wprintf2-ARGS = "Some Text"
 
diff --git a/locale/Makefile b/locale/Makefile
index ddbaad7452..0816228d16 100644
--- a/locale/Makefile
+++ b/locale/Makefile
@@ -62,7 +62,7 @@ GPERFFLAGS = -acCgopt -k1,2,5,9,$$ -L ANSI-C
 
 include ../Rules
 
-CFLAGS-md5.c = -I../crypt
+CFLAGS-md5.c += -I../crypt
 
 programs/%-kw.h: programs/%-kw.gperf
 	cd programs \
@@ -95,9 +95,9 @@ CPPFLAGS-locale-programs = -DLOCALE_PATH='$(localepath)' \
 			   -DREPERTOIREMAP_PATH='"$(i18ndir)/repertoiremaps"' \
 			   -DLOCSRCDIR='"$(i18ndir)/locales"'
 
-CFLAGS-charmap.c = -Wno-write-strings -Wno-char-subscripts
-CFLAGS-locfile.c = -Wno-write-strings -Wno-char-subscripts
-CFLAGS-charmap-dir.c = -Wno-write-strings
+CFLAGS-charmap.c += -Wno-write-strings -Wno-char-subscripts
+CFLAGS-locfile.c += -Wno-write-strings -Wno-char-subscripts
+CFLAGS-charmap-dir.c += -Wno-write-strings
 
 # Set libof-* for each routine.
 cpp-srcs-left := $(localedef-modules) $(localedef-aux) $(locale-modules) \
diff --git a/login/Makefile b/login/Makefile
index 011724cb5d..33f4c57193 100644
--- a/login/Makefile
+++ b/login/Makefile
@@ -30,7 +30,7 @@ routines := getlogin getlogin_r setlogin getlogin_r_chk \
 	    utmp_file utmpname updwtmp getpt grantpt unlockpt ptsname \
 	    ptsname_r_chk
 
-CFLAGS-grantpt.c = -DLIBEXECDIR='"$(libexecdir)"'
+CFLAGS-grantpt.c += -DLIBEXECDIR='"$(libexecdir)"'
 
 others = utmpdump
 
@@ -53,7 +53,7 @@ libutil-routines:= login login_tty logout logwtmp openpty forkpty
 
 include ../Rules
 
-CFLAGS-getpt.c = -fexceptions
+CFLAGS-getpt.c += -fexceptions
 
 ifeq (yesyes,$(have-fpie)$(build-shared))
 pt_chown-cflags += $(pie-ccflag)
@@ -61,7 +61,7 @@ endif
 ifeq (yes,$(have-libcap))
 libcap = -lcap
 endif
-CFLAGS-pt_chown.c = $(pt_chown-cflags)
+CFLAGS-pt_chown.c += $(pt_chown-cflags)
 LDLIBS-pt_chown = $(libcap)
 ifeq (yesyes,$(have-fpie)$(build-shared))
 LDFLAGS-pt_chown = -Wl,-z,now
diff --git a/malloc/Makefile b/malloc/Makefile
index 17936fc04d..17b2b75fa9 100644
--- a/malloc/Makefile
+++ b/malloc/Makefile
@@ -165,8 +165,8 @@ endif
 
 include ../Rules
 
-CFLAGS-mcheck-init.c = $(PIC-ccflag)
-CFLAGS-obstack.c = $(uses-callbacks)
+CFLAGS-mcheck-init.c += $(PIC-ccflag)
+CFLAGS-obstack.c += $(uses-callbacks)
 
 $(objpfx)libmcheck.a: $(objpfx)mcheck-init.o
 	-rm -f $@
diff --git a/math/Makefile b/math/Makefile
index ae84abdb25..cba9ce9405 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -310,7 +310,7 @@ endif
 ifdef PYTHON
 tests += test-tgmath3
 generated += test-tgmath3.c
-CFLAGS-test-tgmath3.c = -fno-builtin
+CFLAGS-test-tgmath3.c += -fno-builtin
 
 $(objpfx)test-tgmath3.c: gen-tgmath-tests.py
 	$(PYTHON) $< > $@
@@ -320,13 +320,13 @@ libm-test-fast-math-cflags = -fno-builtin -D__FAST_MATH__ -DTEST_FAST_MATH
 libm-test-vec-cflags = $(libm-test-fast-math-cflags) -fno-inline \
 		       -ffloat-store -D_OPENMP=201307 -Wno-unknown-pragmas
 
-CFLAGS-test-double-vlen4-wrappers.c = $(double-vlen4-arch-ext-cflags)
+CFLAGS-test-double-vlen4-wrappers.c += $(double-vlen4-arch-ext-cflags)
 
-CFLAGS-test-double-vlen8-wrappers.c = $(double-vlen8-arch-ext-cflags)
+CFLAGS-test-double-vlen8-wrappers.c += $(double-vlen8-arch-ext-cflags)
 
-CFLAGS-test-float-vlen8-wrappers.c = $(float-vlen8-arch-ext-cflags)
+CFLAGS-test-float-vlen8-wrappers.c += $(float-vlen8-arch-ext-cflags)
 
-CFLAGS-test-float-vlen16-wrappers.c = $(float-vlen16-arch-ext-cflags)
+CFLAGS-test-float-vlen16-wrappers.c += $(float-vlen16-arch-ext-cflags)
 
 # The no-inline tests use -fsignaling-nans, and thereby use the
 # versions of classification macros that support sNaNs.  The inline
@@ -339,46 +339,46 @@ libm-test-no-inline-cflags = -fno-inline -ffloat-store -fno-builtin \
 libm-test-finite-cflags = $(libm-test-no-inline-cflags) \
 			  -U__FINITE_MATH_ONLY__ -D__FINITE_MATH_ONLY__=1
 libm-test-inline-cflags = $(libm-test-fast-math-cflags)
-CFLAGS-test-tgmath.c = -fno-builtin
+CFLAGS-test-tgmath.c += -fno-builtin
 # The following testcase uses very long lines (>3 million), so it may take a
 # while to compile it. See: http://llvm.org/bugs/show_bug.cgi?id=14106 and
 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54402
-CFLAGS-test-tgmath2.c = -fno-builtin
-CFLAGS-test-tgmath-ret.c = -fno-builtin
-CFLAGS-test-powl.c = -fno-builtin
-
-CFLAGS-test-snan.c = -fsignaling-nans
-
-CFLAGS-test-signgam-finite.c = -ffinite-math-only
-CFLAGS-test-signgam-finite-c99.c = -ffinite-math-only -std=c99
-CFLAGS-test-signgam-finite-c11.c = -ffinite-math-only -std=c11
-CFLAGS-test-signgam-uchar.c = -std=c99
-CFLAGS-test-signgam-uchar-init.c = -std=c99
-CFLAGS-test-signgam-uchar-static.c = -std=c99
-CFLAGS-test-signgam-uchar-init-static.c = -std=c99
-CFLAGS-test-signgam-uint.c = -std=c99
-CFLAGS-test-signgam-uint-init.c = -std=c99
-CFLAGS-test-signgam-uint-static.c = -std=c99
-CFLAGS-test-signgam-uint-init-static.c = -std=c99
-CFLAGS-test-signgam-ullong.c = -std=c99
-CFLAGS-test-signgam-ullong-init.c = -std=c99
-CFLAGS-test-signgam-ullong-static.c = -std=c99
-CFLAGS-test-signgam-ullong-init-static.c = -std=c99
-
-CFLAGS-test-math-cxx11.cc = -std=c++11
-
-CFLAGS-test-math-isinff.cc = -std=gnu++11
-CFLAGS-test-math-iszero.cc = -std=gnu++11
-CFLAGS-test-math-issignaling.cc = -std=gnu++11
-CFLAGS-test-math-iscanonical.cc = -std=gnu++11
-
-CFLAGS-test-iszero-excess-precision.c = -fexcess-precision=standard
-CFLAGS-test-iseqsig-excess-precision.c = -fexcess-precision=standard
-CFLAGS-test-flt-eval-method.c = -fexcess-precision=standard
-
-CFLAGS-test-fe-snans-always-signal.c = -fsignaling-nans
-
-CFLAGS-test-finite-macros.c = -ffinite-math-only
+CFLAGS-test-tgmath2.c += -fno-builtin
+CFLAGS-test-tgmath-ret.c += -fno-builtin
+CFLAGS-test-powl.c += -fno-builtin
+
+CFLAGS-test-snan.c += -fsignaling-nans
+
+CFLAGS-test-signgam-finite.c += -ffinite-math-only
+CFLAGS-test-signgam-finite-c99.c += -ffinite-math-only -std=c99
+CFLAGS-test-signgam-finite-c11.c += -ffinite-math-only -std=c11
+CFLAGS-test-signgam-uchar.c += -std=c99
+CFLAGS-test-signgam-uchar-init.c += -std=c99
+CFLAGS-test-signgam-uchar-static.c += -std=c99
+CFLAGS-test-signgam-uchar-init-static.c += -std=c99
+CFLAGS-test-signgam-uint.c += -std=c99
+CFLAGS-test-signgam-uint-init.c += -std=c99
+CFLAGS-test-signgam-uint-static.c += -std=c99
+CFLAGS-test-signgam-uint-init-static.c += -std=c99
+CFLAGS-test-signgam-ullong.c += -std=c99
+CFLAGS-test-signgam-ullong-init.c += -std=c99
+CFLAGS-test-signgam-ullong-static.c += -std=c99
+CFLAGS-test-signgam-ullong-init-static.c += -std=c99
+
+CFLAGS-test-math-cxx11.cc += -std=c++11
+
+CFLAGS-test-math-isinff.cc += -std=gnu++11
+CFLAGS-test-math-iszero.cc += -std=gnu++11
+CFLAGS-test-math-issignaling.cc += -std=gnu++11
+CFLAGS-test-math-iscanonical.cc += -std=gnu++11
+
+CFLAGS-test-iszero-excess-precision.c += -fexcess-precision=standard
+CFLAGS-test-iseqsig-excess-precision.c += -fexcess-precision=standard
+CFLAGS-test-flt-eval-method.c += -fexcess-precision=standard
+
+CFLAGS-test-fe-snans-always-signal.c += -fsignaling-nans
+
+CFLAGS-test-finite-macros.c += -ffinite-math-only
 
 include ../Rules
 
diff --git a/misc/Makefile b/misc/Makefile
index 8660b6fc74..459f741799 100644
--- a/misc/Makefile
+++ b/misc/Makefile
@@ -91,33 +91,33 @@ ifeq ($(run-built-tests),yes)
 tests-special += $(objpfx)tst-error1-mem.out
 endif
 
-CFLAGS-select.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-tsearch.c = $(uses-callbacks)
-CFLAGS-lsearch.c = $(uses-callbacks)
-CFLAGS-pselect.c = -fexceptions
-CFLAGS-readv.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-writev.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-preadv.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-preadv64.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-pwritev.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-pwritev64.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-preadv2.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-preadv64v2.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-pwritev2.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-pwritev64v2.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-usleep.c = -fexceptions
-CFLAGS-syslog.c = -fexceptions
-CFLAGS-error.c = -fexceptions
-CFLAGS-getpass.c = -fexceptions
-CFLAGS-mkstemp.c = -fexceptions
-CFLAGS-mkstemp64.c = -fexceptions
-CFLAGS-getsysstats.c = -fexceptions
-CFLAGS-getusershell.c = -fexceptions
-CFLAGS-err.c = -fexceptions
-CFLAGS-tst-tsearch.c = $(stack-align-test-flags)
-CFLAGS-msync.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-fdatasync.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-fsync.c = -fexceptions -fasynchronous-unwind-tables
+CFLAGS-select.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-tsearch.c += $(uses-callbacks)
+CFLAGS-lsearch.c += $(uses-callbacks)
+CFLAGS-pselect.c += -fexceptions
+CFLAGS-readv.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-writev.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-preadv.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-preadv64.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-pwritev.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-pwritev64.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-preadv2.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-preadv64v2.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-pwritev2.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-pwritev64v2.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-usleep.c += -fexceptions
+CFLAGS-syslog.c += -fexceptions
+CFLAGS-error.c += -fexceptions
+CFLAGS-getpass.c += -fexceptions
+CFLAGS-mkstemp.c += -fexceptions
+CFLAGS-mkstemp64.c += -fexceptions
+CFLAGS-getsysstats.c += -fexceptions
+CFLAGS-getusershell.c += -fexceptions
+CFLAGS-err.c += -fexceptions
+CFLAGS-tst-tsearch.c += $(stack-align-test-flags)
+CFLAGS-msync.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-fdatasync.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-fsync.c += -fexceptions -fasynchronous-unwind-tables
 
 # Called during static library initialization, so turn stack-protection
 # off for non-shared builds.
diff --git a/nptl/Makefile b/nptl/Makefile
index 11e6ecd88b..570a42301c 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -153,76 +153,76 @@ libpthread-static-only-routines = pthread_atfork
 # even with asynchronous unwind tables.
 
 # nptl-init.c contains sigcancel_handler().
-CFLAGS-nptl-init.c = -fexceptions -fasynchronous-unwind-tables
+CFLAGS-nptl-init.c += -fexceptions -fasynchronous-unwind-tables
 # The unwind code itself,
-CFLAGS-unwind.c = -fexceptions
-CFLAGS-unwind-forcedunwind.c = -fexceptions -fasynchronous-unwind-tables
+CFLAGS-unwind.c += -fexceptions
+CFLAGS-unwind-forcedunwind.c += -fexceptions -fasynchronous-unwind-tables
 
 # The following three functions must be async-cancel safe.
-CFLAGS-pthread_cancel.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-pthread_setcancelstate.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-pthread_setcanceltype.c = -fexceptions -fasynchronous-unwind-tables
+CFLAGS-pthread_cancel.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-pthread_setcancelstate.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-pthread_setcanceltype.c += -fexceptions -fasynchronous-unwind-tables
 
 # These are internal functions which similar functionality as setcancelstate
 # and setcanceltype.
-CFLAGS-cancellation.c = -fasynchronous-unwind-tables
-CFLAGS-libc-cancellation.c = -fasynchronous-unwind-tables
+CFLAGS-cancellation.c += -fasynchronous-unwind-tables
+CFLAGS-libc-cancellation.c += -fasynchronous-unwind-tables
 
 # Calling pthread_exit() must cause the registered cancel handlers to
 # be executed.  Therefore exceptions have to be thrown through this
 # function.
-CFLAGS-pthread_exit.c = -fexceptions
+CFLAGS-pthread_exit.c += -fexceptions
 
 # Among others, __pthread_unwind is forwarded.  This function must handle
 # exceptions.
-CFLAGS-forward.c = -fexceptions
+CFLAGS-forward.c += -fexceptions
 
 # The following are cancellation points.  Some of the functions can
 # block and therefore temporarily enable asynchronous cancellation.
 # Those must be compiled asynchronous unwind tables.
-CFLAGS-pthread_testcancel.c = -fexceptions
-CFLAGS-pthread_join.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-pthread_timedjoin.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-pthread_once.c = $(uses-callbacks) -fexceptions \
+CFLAGS-pthread_testcancel.c += -fexceptions
+CFLAGS-pthread_join.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-pthread_timedjoin.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-pthread_once.c += $(uses-callbacks) -fexceptions \
 			-fasynchronous-unwind-tables
-CFLAGS-pthread_cond_wait.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-sem_wait.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-sem_timedwait.c = -fexceptions -fasynchronous-unwind-tables
+CFLAGS-pthread_cond_wait.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-sem_wait.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-sem_timedwait.c += -fexceptions -fasynchronous-unwind-tables
 
 # These are the function wrappers we have to duplicate here.
-CFLAGS-fcntl.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-lockf.c = -fexceptions
-CFLAGS-pread.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-pread64.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-pwrite.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-pwrite64.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-wait.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-waitpid.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-sigwait.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-msgrcv.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-msgsnd.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-tcdrain.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-open.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-open64.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-pause.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-recv.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-send.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-accept.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-sendto.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-connect.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-recvfrom.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-recvmsg.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-sendmsg.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-close.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-read.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-write.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-nanosleep.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-sigsuspend.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-msync.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-fdatasync.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-fsync.c = -fexceptions -fasynchronous-unwind-tables
-
-CFLAGS-pt-system.c = -fexceptions
+CFLAGS-fcntl.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-lockf.c += -fexceptions
+CFLAGS-pread.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-pread64.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-pwrite.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-pwrite64.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-wait.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-waitpid.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-sigwait.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-msgrcv.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-msgsnd.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-tcdrain.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-open.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-open64.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-pause.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-recv.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-send.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-accept.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-sendto.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-connect.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-recvfrom.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-recvmsg.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-sendmsg.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-close.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-read.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-write.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-nanosleep.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-sigsuspend.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-msync.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-fdatasync.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-fsync.c += -fexceptions -fasynchronous-unwind-tables
+
+CFLAGS-pt-system.c += -fexceptions
 
 LDLIBS-tst-once5 = -lstdc++
 CFLAGS-tst-thread_local1.o = -std=gnu++11
@@ -356,8 +356,8 @@ endif
 LDFLAGS-pthread.so = -Wl,--enable-new-dtags,-z,nodelete,-z,initfirst
 
 # GCC-4.9 compiles 'sprintf(NULL, ...)' into UD2 on x86_64 without -fno-builtin
-CFLAGS-tst-cleanup2.c = -fno-builtin
-CFLAGS-tst-cleanupx2.c = -fno-builtin
+CFLAGS-tst-cleanup2.c += -fno-builtin
+CFLAGS-tst-cleanupx2.c += -fno-builtin
 
 tests += tst-cancelx2 tst-cancelx3 tst-cancelx4 tst-cancelx5 \
 	 tst-cancelx6 tst-cancelx7 tst-cancelx8 tst-cancelx9 tst-cancelx10 \
@@ -423,9 +423,9 @@ extra-objs += $(crti-objs) $(crtn-objs)
 extra-objs += pt-crti.o
 endif
 
-CFLAGS-flockfile.c = $(libio-mtsafe)
-CFLAGS-ftrylockfile.c = $(libio-mtsafe)
-CFLAGS-funlockfile.c = $(libio-mtsafe)
+CFLAGS-flockfile.c += $(libio-mtsafe)
+CFLAGS-ftrylockfile.c += $(libio-mtsafe)
+CFLAGS-funlockfile.c += $(libio-mtsafe)
 
 link-libc-static := $(common-objpfx)libc.a $(static-gnulib) \
 		    $(common-objpfx)libc.a
@@ -528,15 +528,15 @@ CFLAGS-tst-oncex3.c += -fexceptions
 CFLAGS-tst-oncex4.c += -fexceptions
 CFLAGS-tst-align.c += $(stack-align-test-flags)
 CFLAGS-tst-align3.c += $(stack-align-test-flags)
-CFLAGS-tst-initializers1.c = -W -Wall -Werror
+CFLAGS-tst-initializers1.c += -W -Wall -Werror
 CFLAGS-tst-initializers1-< = $(CFLAGS-tst-initializers1.c) \
 			     $(patsubst tst-initializers1-%.c,-std=%,$<)
-CFLAGS-tst-initializers1-c89.c = $(CFLAGS-tst-initializers1-<)
-CFLAGS-tst-initializers1-c99.c = $(CFLAGS-tst-initializers1-<)
-CFLAGS-tst-initializers1-c11.c = $(CFLAGS-tst-initializers1-<)
-CFLAGS-tst-initializers1-gnu89.c = $(CFLAGS-tst-initializers1-<)
-CFLAGS-tst-initializers1-gnu99.c = $(CFLAGS-tst-initializers1-<)
-CFLAGS-tst-initializers1-gnu11.c = $(CFLAGS-tst-initializers1-<)
+CFLAGS-tst-initializers1-c89.c += $(CFLAGS-tst-initializers1-<)
+CFLAGS-tst-initializers1-c99.c += $(CFLAGS-tst-initializers1-<)
+CFLAGS-tst-initializers1-c11.c += $(CFLAGS-tst-initializers1-<)
+CFLAGS-tst-initializers1-gnu89.c += $(CFLAGS-tst-initializers1-<)
+CFLAGS-tst-initializers1-gnu99.c += $(CFLAGS-tst-initializers1-<)
+CFLAGS-tst-initializers1-gnu11.c += $(CFLAGS-tst-initializers1-<)
 
 tst-cancel7-ARGS = --command "exec $(host-test-program-cmd)"
 tst-cancelx7-ARGS = $(tst-cancel7-ARGS)
diff --git a/nscd/Makefile b/nscd/Makefile
index 85e1c387d7..c70206b390 100644
--- a/nscd/Makefile
+++ b/nscd/Makefile
@@ -73,11 +73,11 @@ LDLIBS-nscd = $(selinux-LIBS)
 
 include ../Rules
 
-CFLAGS-nscd_getpw_r.c = -fexceptions
-CFLAGS-nscd_getgr_r.c = -fexceptions
-CFLAGS-nscd_gethst_r.c = -fexceptions
-CFLAGS-nscd_getai.c = -fexceptions
-CFLAGS-nscd_initgroups.c = -fexceptions
+CFLAGS-nscd_getpw_r.c += -fexceptions
+CFLAGS-nscd_getgr_r.c += -fexceptions
+CFLAGS-nscd_gethst_r.c += -fexceptions
+CFLAGS-nscd_getai.c += -fexceptions
+CFLAGS-nscd_initgroups.c += -fexceptions
 
 CPPFLAGS-nscd += -D_FORTIFY_SOURCE=2
 
diff --git a/posix/Makefile b/posix/Makefile
index 87e7ed7f9d..e34b1088d2 100644
--- a/posix/Makefile
+++ b/posix/Makefile
@@ -204,31 +204,31 @@ $(objpfx)config-name.h: $(..)scripts/config-uname.sh $(common-objpfx)config.make
 	   '$(config-machine)-$(config-vendor)' > $@.new
 	mv -f $@.new $@
 
-CFLAGS-getaddrinfo.c = -DRESOLVER -fexceptions
-CFLAGS-pause.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-pread.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-pread64.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-pwrite.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-pwrite64.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-sleep.c = -fexceptions
-CFLAGS-wait.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-waitid.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-waitpid.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-getopt.c = -fexceptions
-CFLAGS-wordexp.c = -fexceptions
+CFLAGS-getaddrinfo.c += -DRESOLVER -fexceptions
+CFLAGS-pause.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-pread.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-pread64.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-pwrite.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-pwrite64.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-sleep.c += -fexceptions
+CFLAGS-wait.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-waitid.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-waitpid.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-getopt.c += -fexceptions
+CFLAGS-wordexp.c += -fexceptions
 CFLAGS-wordexp.os = -fomit-frame-pointer
-CFLAGS-sysconf.c = -fexceptions -DGETCONF_DIR='"$(libexecdir)/getconf"'
-CFLAGS-pathconf.c = -fexceptions
-CFLAGS-fpathconf.c = -fexceptions
-CFLAGS-spawn.c = -fexceptions
+CFLAGS-sysconf.c += -fexceptions -DGETCONF_DIR='"$(libexecdir)/getconf"'
+CFLAGS-pathconf.c += -fexceptions
+CFLAGS-fpathconf.c += -fexceptions
+CFLAGS-spawn.c += -fexceptions
 CFLAGS-spawn.os = -fomit-frame-pointer
-CFLAGS-spawnp.c = -fexceptions
+CFLAGS-spawnp.c += -fexceptions
 CFLAGS-spawnp.os = -fomit-frame-pointer
-CFLAGS-spawni.c = -fexceptions
+CFLAGS-spawni.c += -fexceptions
 CFLAGS-spawni.os = -fomit-frame-pointer
-CFLAGS-glob.c = $(uses-callbacks) -fexceptions
-CFLAGS-glob64.c = $(uses-callbacks) -fexceptions
-CFLAGS-getconf.c = -DGETCONF_DIR='"$(libexecdir)/getconf"'
+CFLAGS-glob.c += $(uses-callbacks) -fexceptions
+CFLAGS-glob64.c += $(uses-callbacks) -fexceptions
+CFLAGS-getconf.c += -DGETCONF_DIR='"$(libexecdir)/getconf"'
 CFLAGS-execve.os = -fomit-frame-pointer
 CFLAGS-fexecve.os = -fomit-frame-pointer
 CFLAGS-execv.os = -fomit-frame-pointer
@@ -236,7 +236,7 @@ CFLAGS-execle.os = -fomit-frame-pointer
 CFLAGS-execl.os = -fomit-frame-pointer
 CFLAGS-execvp.os = -fomit-frame-pointer
 CFLAGS-execlp.os = -fomit-frame-pointer
-CFLAGS-nanosleep.c = -fexceptions -fasynchronous-unwind-tables
+CFLAGS-nanosleep.c += -fexceptions -fasynchronous-unwind-tables
 
 tstgetopt-ARGS = -a -b -cfoobar --required foobar --optional=bazbug \
 		--none random --col --color --colour
diff --git a/pwd/Makefile b/pwd/Makefile
index 05426a4cb1..522e5721d6 100644
--- a/pwd/Makefile
+++ b/pwd/Makefile
@@ -34,9 +34,9 @@ include ../Rules
 
 ifeq ($(have-thread-library),yes)
 
-CFLAGS-getpwent_r.c = -fexceptions
-CFLAGS-getpwent.c = -fexceptions
-CFLAGS-getpw.c = -fexceptions
-CFLAGS-fgetpwent_r.c = $(libio-mtsafe)
+CFLAGS-getpwent_r.c += -fexceptions
+CFLAGS-getpwent.c += -fexceptions
+CFLAGS-getpw.c += -fexceptions
+CFLAGS-fgetpwent_r.c += $(libio-mtsafe)
 
 endif
diff --git a/resolv/Makefile b/resolv/Makefile
index a98a84fa9e..e0bb4e264d 100644
--- a/resolv/Makefile
+++ b/resolv/Makefile
@@ -127,7 +127,7 @@ generated += mtrace-tst-leaks.out tst-leaks.mtrace \
 
 include ../Rules
 
-CFLAGS-res_hconf.c = -fexceptions
+CFLAGS-res_hconf.c += -fexceptions
 
 # The DNS NSS modules needs the resolver.
 $(objpfx)libnss_dns.so: $(objpfx)libresolv.so
diff --git a/rt/Makefile b/rt/Makefile
index 9740dc2ad8..5ad6302685 100644
--- a/rt/Makefile
+++ b/rt/Makefile
@@ -60,11 +60,11 @@ extra-libs-others := $(extra-libs)
 
 include ../Rules
 
-CFLAGS-aio_suspend.c = -fexceptions
-CFLAGS-mq_timedreceive.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-mq_timedsend.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-clock_nanosleep.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-librt-cancellation.c = -fasynchronous-unwind-tables
+CFLAGS-aio_suspend.c += -fexceptions
+CFLAGS-mq_timedreceive.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-mq_timedsend.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-clock_nanosleep.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-librt-cancellation.c += -fasynchronous-unwind-tables
 
 LDFLAGS-rt.so = -Wl,--enable-new-dtags,-z,nodelete
 
diff --git a/shadow/Makefile b/shadow/Makefile
index 883acbfff7..a47b72e5b3 100644
--- a/shadow/Makefile
+++ b/shadow/Makefile
@@ -29,12 +29,12 @@ routines	= getspent getspnam sgetspent fgetspent putspent \
 
 tests = tst-shadow tst-putspent
 
-CFLAGS-getspent_r.c = -fexceptions
-CFLAGS-getspent.c = -fexceptions
-CFLAGS-fgetspent.c = -fexceptions
-CFLAGS-fgetspent_r.c = -fexceptions $(libio-mtsafe)
-CFLAGS-putspent.c = -fexceptions $(libio-mtsafe)
-CFLAGS-getspnam.c = -fexceptions
-CFLAGS-getspnam_r.c = -fexceptions
+CFLAGS-getspent_r.c += -fexceptions
+CFLAGS-getspent.c += -fexceptions
+CFLAGS-fgetspent.c += -fexceptions
+CFLAGS-fgetspent_r.c += -fexceptions $(libio-mtsafe)
+CFLAGS-putspent.c += -fexceptions $(libio-mtsafe)
+CFLAGS-getspnam.c += -fexceptions
+CFLAGS-getspnam_r.c += -fexceptions
 
 include ../Rules
diff --git a/signal/Makefile b/signal/Makefile
index c2dc719d70..8ec7630a4d 100644
--- a/signal/Makefile
+++ b/signal/Makefile
@@ -50,10 +50,10 @@ tests		:= tst-signal tst-sigset tst-sigsimple tst-raise tst-sigset2 \
 
 include ../Rules
 
-CFLAGS-sigpause.c = -fexceptions
-CFLAGS-sigsuspend.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-sigtimedwait.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-sigwait.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-sigwaitinfo.c = -fexceptions -fasynchronous-unwind-tables
+CFLAGS-sigpause.c += -fexceptions
+CFLAGS-sigsuspend.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-sigtimedwait.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-sigwait.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-sigwaitinfo.c += -fexceptions -fasynchronous-unwind-tables
 
-CFLAGS-sigreturn.c = $(no-stack-protector)
+CFLAGS-sigreturn.c += $(no-stack-protector)
diff --git a/stdio-common/Makefile b/stdio-common/Makefile
index 2c3c2e5d11..7d4ce0b371 100644
--- a/stdio-common/Makefile
+++ b/stdio-common/Makefile
@@ -111,15 +111,15 @@ $(objpfx)tst-%-mem.out: $(objpfx)tst-%.out
 	$(common-objpfx)malloc/mtrace $(objpfx)tst-$*.mtrace > $@; \
 	$(evaluate-test)
 
-CFLAGS-vfprintf.c = -Wno-uninitialized
-CFLAGS-vfwprintf.c = -Wno-uninitialized
+CFLAGS-vfprintf.c += -Wno-uninitialized
+CFLAGS-vfwprintf.c += -Wno-uninitialized
 
-CFLAGS-tmpfile.c = -fexceptions
-CFLAGS-tmpfile64.c = -fexceptions
-CFLAGS-tempname.c = -fexceptions
-CFLAGS-psignal.c = -fexceptions
-CFLAGS-vprintf.c = -fexceptions
-CFLAGS-cuserid.c = -fexceptions
+CFLAGS-tmpfile.c += -fexceptions
+CFLAGS-tmpfile64.c += -fexceptions
+CFLAGS-tempname.c += -fexceptions
+CFLAGS-psignal.c += -fexceptions
+CFLAGS-vprintf.c += -fexceptions
+CFLAGS-cuserid.c += -fexceptions
 
 CFLAGS-vfprintf.c += -fexceptions
 CFLAGS-fprintf.c += -fexceptions
@@ -133,15 +133,15 @@ CFLAGS-isoc99_vfscanf.c += -fexceptions
 CFLAGS-isoc99_vscanf.c += -fexceptions
 CFLAGS-isoc99_fscanf.c += -fexceptions
 CFLAGS-isoc99_scanf.c += -fexceptions
-CFLAGS-errlist.c = $(fno-unit-at-a-time)
-CFLAGS-siglist.c = $(fno-unit-at-a-time)
+CFLAGS-errlist.c += $(fno-unit-at-a-time)
+CFLAGS-siglist.c += $(fno-unit-at-a-time)
 
 # The following is a hack since we must compile scanf1{5,7}.c without any
 # GNU extension.  The latter are needed, though, when internal headers
 # are used.  So made sure we see the installed headers first.
-CFLAGS-scanf15.c = -I../libio -I../stdlib -I../wcsmbs -I../time -I../string \
+CFLAGS-scanf15.c += -I../libio -I../stdlib -I../wcsmbs -I../time -I../string \
 		   -I../wctype
-CFLAGS-scanf17.c = -I../libio -I../stdlib -I../wcsmbs -I../time -I../string \
+CFLAGS-scanf17.c += -I../libio -I../stdlib -I../wcsmbs -I../time -I../string \
 		   -I../wctype
 
 # tst-gets.c tests a deprecated function.
diff --git a/stdlib/Makefile b/stdlib/Makefile
index 0a51b7bc90..60a4327a04 100644
--- a/stdlib/Makefile
+++ b/stdlib/Makefile
@@ -134,26 +134,26 @@ extra-test-objs += tst-putenvmod.os
 
 generated += isomac isomac.out tst-putenvmod.so
 
-CFLAGS-bsearch.c = $(uses-callbacks)
-CFLAGS-msort.c = $(uses-callbacks)
-CFLAGS-qsort.c = $(uses-callbacks)
-CFLAGS-system.c = -fexceptions
+CFLAGS-bsearch.c += $(uses-callbacks)
+CFLAGS-msort.c += $(uses-callbacks)
+CFLAGS-qsort.c += $(uses-callbacks)
+CFLAGS-system.c += -fexceptions
 CFLAGS-system.os = -fomit-frame-pointer
-CFLAGS-fmtmsg.c = -fexceptions
+CFLAGS-fmtmsg.c += -fexceptions
 
-CFLAGS-strfmon.c = $(libio-mtsafe)
-CFLAGS-strfmon_l.c = $(libio-mtsafe)
+CFLAGS-strfmon.c += $(libio-mtsafe)
+CFLAGS-strfmon_l.c += $(libio-mtsafe)
 
 # The strfrom class of functions call __printf_fp in order to convert the
 # floating-point value to characters.  This requires the value of IO_MTSAFE_IO.
-CFLAGS-strfromd.c = $(libio-mtsafe)
-CFLAGS-strfromf.c = $(libio-mtsafe)
-CFLAGS-strfroml.c = $(libio-mtsafe)
+CFLAGS-strfromd.c += $(libio-mtsafe)
+CFLAGS-strfromf.c += $(libio-mtsafe)
+CFLAGS-strfroml.c += $(libio-mtsafe)
 
-CFLAGS-tst-bsearch.c = $(stack-align-test-flags)
-CFLAGS-tst-qsort.c = $(stack-align-test-flags)
+CFLAGS-tst-bsearch.c += $(stack-align-test-flags)
+CFLAGS-tst-qsort.c += $(stack-align-test-flags)
 CFLAGS-tst-makecontext.c += -funwind-tables
-CFLAGS-tst-makecontext2.c = $(stack-align-test-flags)
+CFLAGS-tst-makecontext2.c += $(stack-align-test-flags)
 
 # Run a test on the header files we use.
 tests-special += $(objpfx)isomac.out
diff --git a/sunrpc/Makefile b/sunrpc/Makefile
index f1b8323e93..6bb09c588b 100644
--- a/sunrpc/Makefile
+++ b/sunrpc/Makefile
@@ -137,24 +137,24 @@ $(rpc-compat-routines.os): $(objpfx)compat-%.os: %.c $(before-compile)
 	$(compile-command.c) -DEXPORT_RPC_SYMBOLS
 endif
 
-CFLAGS-xbootparam_prot.c = -Wno-unused $(PIC-ccflag)
-CFLAGS-xnlm_prot.c = -Wno-unused $(PIC-ccflag)
-CFLAGS-xrstat.c = -Wno-unused $(PIC-ccflag)
-CFLAGS-xyppasswd.c = -Wno-unused $(PIC-ccflag)
-CFLAGS-xklm_prot.c = -Wno-unused $(PIC-ccflag)
-CFLAGS-xrex.c = -Wno-unused $(PIC-ccflag)
-CFLAGS-xsm_inter.c = -Wno-unused $(PIC-ccflag)
-CFLAGS-xmount.c = -Wno-unused $(PIC-ccflag)
-CFLAGS-xrusers.c = -Wno-unused $(PIC-ccflag)
-CFLAGS-xspray.c = -Wno-unused $(PIC-ccflag)
-CFLAGS-xnfs_prot.c = -Wno-unused $(PIC-ccflag)
-CFLAGS-xrquota.c = -Wno-unused $(PIC-ccflag)
-CFLAGS-xkey_prot.c = -Wno-unused $(PIC-ccflag)
-CFLAGS-auth_unix.c = -fexceptions
-CFLAGS-key_call.c = -fexceptions
-CFLAGS-pmap_rmt.c = -fexceptions
-CFLAGS-clnt_perr.c = -fexceptions
-CFLAGS-openchild.c = -fexceptions
+CFLAGS-xbootparam_prot.c += -Wno-unused $(PIC-ccflag)
+CFLAGS-xnlm_prot.c += -Wno-unused $(PIC-ccflag)
+CFLAGS-xrstat.c += -Wno-unused $(PIC-ccflag)
+CFLAGS-xyppasswd.c += -Wno-unused $(PIC-ccflag)
+CFLAGS-xklm_prot.c += -Wno-unused $(PIC-ccflag)
+CFLAGS-xrex.c += -Wno-unused $(PIC-ccflag)
+CFLAGS-xsm_inter.c += -Wno-unused $(PIC-ccflag)
+CFLAGS-xmount.c += -Wno-unused $(PIC-ccflag)
+CFLAGS-xrusers.c += -Wno-unused $(PIC-ccflag)
+CFLAGS-xspray.c += -Wno-unused $(PIC-ccflag)
+CFLAGS-xnfs_prot.c += -Wno-unused $(PIC-ccflag)
+CFLAGS-xrquota.c += -Wno-unused $(PIC-ccflag)
+CFLAGS-xkey_prot.c += -Wno-unused $(PIC-ccflag)
+CFLAGS-auth_unix.c += -fexceptions
+CFLAGS-key_call.c += -fexceptions
+CFLAGS-pmap_rmt.c += -fexceptions
+CFLAGS-clnt_perr.c += -fexceptions
+CFLAGS-openchild.c += -fexceptions
 
 sunrpc-CPPFLAGS = -D_RPC_THREAD_SAFE_
 CPPFLAGS += $(sunrpc-CPPFLAGS)
diff --git a/sysvipc/Makefile b/sysvipc/Makefile
index 9ac44bafca..b7602fe0f6 100644
--- a/sysvipc/Makefile
+++ b/sysvipc/Makefile
@@ -34,5 +34,5 @@ tests    := test-sysvmsg test-sysvsem test-sysvshm
 
 include ../Rules
 
-CFLAGS-msgrcv.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-msgsnd.c = -fexceptions -fasynchronous-unwind-tables
+CFLAGS-msgrcv.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-msgsnd.c += -fexceptions -fasynchronous-unwind-tables
diff --git a/termios/Makefile b/termios/Makefile
index ac14a854df..f2d37f8ca2 100644
--- a/termios/Makefile
+++ b/termios/Makefile
@@ -30,4 +30,4 @@ routines	:= speed cfsetspeed tcsetattr tcgetattr tcgetpgrp tcsetpgrp \
 
 include ../Rules
 
-CFLAGS-tcdrain.c = -fexceptions -fasynchronous-unwind-tables
+CFLAGS-tcdrain.c += -fexceptions -fasynchronous-unwind-tables
diff --git a/time/Makefile b/time/Makefile
index 317c4d8901..536b553ddd 100644
--- a/time/Makefile
+++ b/time/Makefile
@@ -59,17 +59,17 @@ tz-cflags = -DTZDIR='"$(zonedir)"' \
 	    -DTZDEFAULT='"$(localtime-file)"' \
 	    -DTZDEFRULES='"$(posixrules-file)"'
 
-CFLAGS-tzfile.c = $(tz-cflags)
-CFLAGS-tzset.c = $(tz-cflags)
-CFLAGS-getdate.c = -fexceptions
+CFLAGS-tzfile.c += $(tz-cflags)
+CFLAGS-tzset.c += $(tz-cflags)
+CFLAGS-getdate.c += -fexceptions
 
 # Don't warn about Y2k problem in strftime format string.
-CFLAGS-test_time.c = -Wno-format
+CFLAGS-test_time.c += -Wno-format
 
 tst-getdate-ENV= DATEMSK=datemsk TZDIR=${common-objpfx}timezone/testdata
 test_time-ARGS= EST5EDT CST
 
 tst-tzname-ENV = TZDIR=${common-objpfx}timezone/testdata
-CPPFLAGS-tst-tzname.c = -DTZDEFRULES='"$(posixrules-file)"'
+CPPFLAGS-tst-tzname.c += -DTZDEFRULES='"$(posixrules-file)"'
 
 bug-getdate1-ARGS = ${objpfx}bug-getdate1-fmt
diff --git a/timezone/Makefile b/timezone/Makefile
index d6cc7ba357..e321a6bff4 100644
--- a/timezone/Makefile
+++ b/timezone/Makefile
@@ -65,8 +65,8 @@ tz-cflags = -DTZDIR='"$(zonedir)"' \
 # The -Wno-unused-variable flag is used to prevent GCC 6
 # from warning about time_t_min and time_t_max which are
 # defined in private.h but not used.
-CFLAGS-zdump.c = $(tz-cflags)
-CFLAGS-zic.c = $(tz-cflags) -Wno-unused-variable
+CFLAGS-zdump.c += $(tz-cflags)
+CFLAGS-zic.c += $(tz-cflags) -Wno-unused-variable
 
 # We have to make sure the data for testing the tz functions is available.
 # Don't add leapseconds here since test-tz made checks that work only without
diff --git a/wcsmbs/Makefile b/wcsmbs/Makefile
index 329f90e22b..1258f80a95 100644
--- a/wcsmbs/Makefile
+++ b/wcsmbs/Makefile
@@ -72,27 +72,27 @@ endif
 
 $(objpfx)tst-wcstod-round: $(libm)
 
-CFLAGS-wcwidth.c = -I../wctype
-CFLAGS-wcswidth.c = -I../wctype
+CFLAGS-wcwidth.c += -I../wctype
+CFLAGS-wcswidth.c += -I../wctype
 
 strtox-CFLAGS = -I../include
-CFLAGS-wcstol.c = $(strtox-CFLAGS)
-CFLAGS-wcstoul.c = $(strtox-CFLAGS)
-CFLAGS-wcstoll.c = $(strtox-CFLAGS)
-CFLAGS-wcstoull.c = $(strtox-CFLAGS)
-CFLAGS-wcstod.c = $(strtox-CFLAGS)
-CFLAGS-wcstold.c = $(strtox-CFLAGS)
-CFLAGS-wcstof128.c = $(strtox-CFLAGS)
-CFLAGS-wcstof.c = $(strtox-CFLAGS)
-CFLAGS-wcstol_l.c = $(strtox-CFLAGS)
-CFLAGS-wcstoul_l.c = $(strtox-CFLAGS)
-CFLAGS-wcstoll_l.c = $(strtox-CFLAGS)
-CFLAGS-wcstoull_l.c = $(strtox-CFLAGS)
-CFLAGS-wcstod_l.c = $(strtox-CFLAGS)
-CFLAGS-wcstold_l.c = $(strtox-CFLAGS)
-CFLAGS-wcstof128_l.c = $(strtox-CFLAGS)
-CFLAGS-wcstof_l.c = $(strtox-CFLAGS)
-CPPFLAGS-tst-wchar-h.c = -D_FORTIFY_SOURCE=2
+CFLAGS-wcstol.c += $(strtox-CFLAGS)
+CFLAGS-wcstoul.c += $(strtox-CFLAGS)
+CFLAGS-wcstoll.c += $(strtox-CFLAGS)
+CFLAGS-wcstoull.c += $(strtox-CFLAGS)
+CFLAGS-wcstod.c += $(strtox-CFLAGS)
+CFLAGS-wcstold.c += $(strtox-CFLAGS)
+CFLAGS-wcstof128.c += $(strtox-CFLAGS)
+CFLAGS-wcstof.c += $(strtox-CFLAGS)
+CFLAGS-wcstol_l.c += $(strtox-CFLAGS)
+CFLAGS-wcstoul_l.c += $(strtox-CFLAGS)
+CFLAGS-wcstoll_l.c += $(strtox-CFLAGS)
+CFLAGS-wcstoull_l.c += $(strtox-CFLAGS)
+CFLAGS-wcstod_l.c += $(strtox-CFLAGS)
+CFLAGS-wcstold_l.c += $(strtox-CFLAGS)
+CFLAGS-wcstof128_l.c += $(strtox-CFLAGS)
+CFLAGS-wcstof_l.c += $(strtox-CFLAGS)
+CPPFLAGS-tst-wchar-h.c += -D_FORTIFY_SOURCE=2
 
 CFLAGS-isoc99_wscanf.c += -fexceptions
 CFLAGS-isoc99_fwscanf.c += -fexceptions
@@ -102,6 +102,6 @@ CFLAGS-isoc99_vfwscanf.c += -fexceptions
 CPPFLAGS += $(libio-mtsafe)
 
 # We need to find the default version of strtold_l in stdlib.
-CPPFLAGS-wcstold_l.c = -I../stdlib
+CPPFLAGS-wcstold_l.c += -I../stdlib
 
 $(objpfx)tst-wcstod-nan-locale: $(libm)
