Never allow -w.
Apparently -w will disable all warnings on GCC regardless of ordering
(clang will still respect ordering so warnings that are enabled after
-w are still respected). This is insane. Strip -w from the cflags.
Anyone that wants this flag should be turning off the specific
warnings (or just fix them), not disabling all warnings.
Change-Id: I2ba065637dfdc192921da4d9adbdc63b728c166f
diff --git a/core/binary.mk b/core/binary.mk
index c716b17..c22b848 100644
--- a/core/binary.mk
+++ b/core/binary.mk
@@ -1125,6 +1125,15 @@
my_cflags := $(filter-out $(fdo_incompatible_flags),$(my_cflags))
endif
+# No one should ever use this flag. On GCC it's mere presence will disable all
+# warnings, even those that are specified after it (contrary to typical warning
+# flag behavior). This circumvents CFLAGS_NO_OVERRIDE from forcibly enabling the
+# warnings that are *always* bugs.
+my_illegal_flags := -w
+my_cflags := $(filter-out $(my_illegal_flags),$(my_cflags))
+my_cppflags := $(filter-out $(my_illegal_flags),$(my_cppflags))
+my_conlyflags := $(filter-out $(my_illegal_flags),$(my_conlyflags))
+
$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_YACCFLAGS := $(LOCAL_YACCFLAGS)
$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_ASFLAGS := $(my_asflags)
$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_CONLYFLAGS := $(my_conlyflags)