From 71920a95507542dd6b6766a7e54c0bae7a7666e4 Mon Sep 17 00:00:00 2001
From: Chris Peterson <cpeterson@mozilla.com>
Date: Tue, 22 Sep 2015 21:39:03 -0700
Subject: [PATCH] Bug 1207030 - Enable -Wshadow flag in more directories that
 have no -Wshadow warnings. r=glandium

---
 accessible/windows/uia/moz.build              |   3 +
 browser/components/about/moz.build            |   3 +
 browser/components/build/moz.build            |   3 +
 browser/components/dirprovider/moz.build      |   3 +
 browser/components/feeds/moz.build            |   3 +
 browser/components/shell/moz.build            |   3 +
 devtools/server/moz.build                     |   3 +
 docshell/base/timeline/moz.build              |   3 +
 docshell/shistory/moz.build                   |   3 +
 dom/activities/moz.build                      |   3 +
 dom/base/test/gtest/moz.build                 |   3 +
 dom/battery/moz.build                         |   3 +
 dom/broadcastchannel/moz.build                |   3 +
 dom/browser-element/moz.build                 |   3 +
 dom/cellbroadcast/moz.build                   |   3 +
 dom/devicestorage/moz.build                   |   3 +
 dom/encoding/moz.build                        |   3 +
 dom/filesystem/moz.build                      |   3 +
 dom/fmradio/ipc/moz.build                     |   2 +
 dom/fmradio/moz.build                         |   3 +
 dom/gamepad/moz.build                         |   3 +
 dom/geolocation/moz.build                     |   3 +
 dom/icc/moz.build                             |   3 +
 dom/inputport/moz.build                       |   3 +
 dom/json/moz.build                            |   3 +
 dom/jsurl/moz.build                           |   3 +
 dom/mathml/moz.build                          |   2 +
 dom/media/android/moz.build                   |   3 +
 dom/media/gmp-plugin-openh264/moz.build       |   3 +
 dom/media/gmp-plugin/moz.build                |   3 +
 dom/media/imagecapture/moz.build              |   3 +
 dom/messagechannel/moz.build                  |   3 +
 dom/nfc/moz.build                             |   3 +
 dom/offline/moz.build                         |   3 +
 dom/payment/moz.build                         |   3 +
 dom/permission/moz.build                      |   3 +
 dom/plugins/base/android/moz.build            |   3 +
 dom/power/moz.build                           |   3 +
 dom/presentation/moz.build                    |   3 +
 dom/presentation/provider/moz.build           |   3 +
 dom/requestsync/moz.build                     |   3 +
 dom/smil/moz.build                            |   3 +
 dom/speakermanager/moz.build                  |   3 +
 dom/storage/moz.build                         |   3 +
 dom/system/android/moz.build                  |   2 +
 dom/system/moz.build                          |   3 +
 dom/system/qt/moz.build                       |   3 +
 dom/system/windows/moz.build                  |   3 +
 dom/telephony/moz.build                       |   3 +
 dom/time/moz.build                            |   3 +
 dom/tv/moz.build                              |   3 +
 dom/voicemail/moz.build                       |   3 +
 dom/vr/moz.build                              |   3 +
 dom/workers/test/gtest/moz.build              |   3 +
 editor/txmgr/moz.build                        |   3 +
 editor/txtsvc/moz.build                       |   3 +
 embedding/browser/build/moz.build             |   2 +
 embedding/components/appstartup/moz.build     |   3 +
 embedding/components/build/moz.build          |   2 +
 embedding/components/commandhandler/moz.build |   3 +
 embedding/components/find/moz.build           |   3 +
 embedding/components/printingui/ipc/moz.build |   3 +
 embedding/components/printingui/mac/moz.build |   3 +
 .../printingui/unixshared/moz.build           |   3 +
 embedding/components/printingui/win/moz.build |   3 +
 extensions/auth/moz.build                     |   3 +
 extensions/gio/moz.build                      |   3 +
 extensions/permissions/moz.build              |   3 +
 extensions/pref/autoconfig/src/moz.build      |   3 +
 extensions/spellcheck/hunspell/glue/moz.build |   2 +
 .../universalchardet/src/base/moz.build       |   3 +
 .../universalchardet/src/xpcom/moz.build      |   3 +
 gfx/gl/moz.build                              |   3 +
 gfx/ipc/moz.build                             |   3 +
 gfx/src/moz.build                             |   3 +
 gfx/vr/moz.build                              |   2 +
 gfx/ycbcr/moz.build                           |   3 +
 hal/moz.build                                 |   3 +
 image/build/moz.build                         |   2 +
 image/decoders/icon/android/moz.build         |   3 +
 image/decoders/icon/gtk/moz.build             |   3 +
 image/decoders/icon/moz.build                 |   3 +
 image/decoders/icon/qt/moz.build              |   3 +
 image/decoders/icon/win/moz.build             |   3 +
 image/encoders/bmp/moz.build                  |   3 +
 image/encoders/ico/moz.build                  |   3 +
 image/encoders/jpeg/moz.build                 |   3 +
 image/encoders/png/moz.build                  |   3 +
 intl/build/moz.build                          |   2 +
 intl/chardet/moz.build                        |   3 +
 intl/locale/moz.build                         |   3 +
 intl/locale/unix/moz.build                    |   3 +
 intl/lwbrk/moz.build                          |   3 +
 intl/unicharutil/tests/moz.build              |   3 +
 intl/unicharutil/util/standalone/moz.build    |   3 +
 ipc/app/moz.build                             |   3 +
 ipc/app/pie/moz.build                         |   3 +
 ipc/contentproc/moz.build                     |   3 +
 ipc/dbus/moz.build                            |   3 +
 ipc/hal/moz.build                             |   3 +
 ipc/ipdl/test/cxx/app/moz.build               |   3 +
 ipc/ipdl/test/cxx/moz.build                   |   3 +
 ipc/netd/moz.build                            |   3 +
 ipc/nfc/moz.build                             |   3 +
 ipc/ril/moz.build                             |   3 +
 ipc/unixfd/moz.build                          |   3 +
 ipc/unixsocket/moz.build                      |   3 +
 js/ductwork/debugger/moz.build                |   3 +
 js/xpconnect/shell/moz.build                  |   3 +
 .../tests/components/native/moz.build         |   3 +
 layout/printing/moz.build                     |   2 +
 layout/tools/layout-debug/src/moz.build       |   3 +
 media/gmp-clearkey/0.1/gtest/moz.build        |   3 +
 media/gmp-clearkey/0.1/moz.build              |   3 +
 media/libsoundtouch/src/moz.build             |   3 +
 media/libstagefright/gtest/moz.build          |   3 +
 memory/fallible/moz.build                     |   3 +
 memory/mozalloc/moz.build                     |   3 +
 memory/mozalloc/staticruntime/moz.build       |   3 +
 memory/replace/dmd/moz.build                  |   2 +
 memory/replace/logalloc/moz.build             |   3 +
 memory/replace/logalloc/replay/moz.build      |   3 +
 memory/replace/replace/moz.build              |   3 +
 memory/volatile/moz.build                     |   3 +
 memory/volatile/tests/moz.build               |   3 +
 .../gecko/fxa/TestSkewHandler.java.orig       |  67 ------
 .../TestFxAccountLoginStateMachine.java.orig  | 202 ------------------
 .../fxa/login/TestStateFactory.java.orig      |  89 --------
 modules/libjar/moz.build                      |   3 +
 modules/libjar/zipwriter/moz.build            |   3 +
 modules/libmar/verify/moz.build               |   2 +
 modules/libpref/moz.build                     |   3 +
 mozglue/build/moz.build                       |   3 +
 mozglue/misc/moz.build                        |   3 +
 netwerk/streamconv/moz.build                  |   3 +
 netwerk/system/android/moz.build              |   2 +
 netwerk/system/linux/moz.build                |   3 +
 netwerk/system/qt/moz.build                   |   3 +
 rdf/build/moz.build                           |   3 +
 rdf/datasource/moz.build                      |   4 +-
 rdf/tests/rdfcat/moz.build                    |   3 +
 rdf/tests/rdfpoll/moz.build                   |   3 +
 rdf/tests/triplescat/moz.build                |   3 +
 toolkit/components/alerts/moz.build           |   3 +
 toolkit/components/autocomplete/moz.build     |   3 +
 toolkit/components/build/moz.build            |   3 +
 toolkit/components/commandlines/moz.build     |   3 +
 toolkit/components/ctypes/moz.build           |   3 +
 toolkit/components/ctypes/tests/moz.build     |   3 +
 toolkit/components/diskspacewatcher/moz.build |   3 +
 toolkit/components/filepicker/moz.build       |   3 +
 .../components/finalizationwitness/moz.build  |   3 +
 toolkit/components/find/moz.build             |   3 +
 toolkit/components/jsdownloads/src/moz.build  |   3 +
 toolkit/components/osfile/moz.build           |   3 +
 toolkit/components/parentalcontrols/moz.build |   3 +
 toolkit/components/perf/moz.build             |   3 +
 toolkit/components/reflect/moz.build          |   3 +
 toolkit/components/satchel/moz.build          |   3 +
 toolkit/components/startup/moz.build          |   3 +
 toolkit/components/statusfilter/moz.build     |   3 +
 toolkit/components/terminator/moz.build       |   3 +
 toolkit/components/typeaheadfind/moz.build    |   3 +
 toolkit/components/workerlz4/moz.build        |   3 +
 toolkit/system/androidproxy/moz.build         |   3 +
 toolkit/system/gnome/moz.build                |   3 +
 toolkit/system/unixproxy/moz.build            |   3 +
 uriloader/base/moz.build                      |   3 +
 widget/android/jni/moz.build                  |   3 +
 widget/qt/moz.build                           |   3 +
 widget/uikit/moz.build                        |   3 +
 widget/xremoteclient/moz.build                |   3 +
 xpcom/glue/tests/gtest/moz.build              |   3 +
 xpcom/reflect/xptcall/moz.build               |   3 +
 xpcom/reflect/xptinfo/moz.build               |   3 +
 xpcom/system/moz.build                        |   2 +
 xpcom/tests/component/moz.build               |   3 +
 xpcom/tests/component_no_aslr/moz.build       |   3 +
 .../examples/simple/components/src/moz.build  |   3 +
 179 files changed, 514 insertions(+), 359 deletions(-)
 delete mode 100644 mobile/android/tests/background/junit4/src/org/mozilla/gecko/fxa/TestSkewHandler.java.orig
 delete mode 100644 mobile/android/tests/background/junit4/src/org/mozilla/gecko/fxa/login/TestFxAccountLoginStateMachine.java.orig
 delete mode 100644 mobile/android/tests/background/junit4/src/org/mozilla/gecko/fxa/login/TestStateFactory.java.orig

diff --git a/accessible/windows/uia/moz.build b/accessible/windows/uia/moz.build
index 3431d126ed575..ae58d2b64827c 100644
--- a/accessible/windows/uia/moz.build
+++ b/accessible/windows/uia/moz.build
@@ -18,3 +18,6 @@ LOCAL_INCLUDES += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/browser/components/about/moz.build b/browser/components/about/moz.build
index 95a8451bafe2e..808084f60e072 100644
--- a/browser/components/about/moz.build
+++ b/browser/components/about/moz.build
@@ -17,3 +17,6 @@ FINAL_LIBRARY = 'browsercomps'
 LOCAL_INCLUDES += [
     '../build',
 ]
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/browser/components/build/moz.build b/browser/components/build/moz.build
index b8eda2d4fc0b2..b6ae7fc0f4413 100644
--- a/browser/components/build/moz.build
+++ b/browser/components/build/moz.build
@@ -38,3 +38,6 @@ if CONFIG['OS_ARCH'] == 'WINNT':
 # GTK2: Need to link with glib for GNOME shell service
 if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('cocoa', 'gtk2', 'gtk3'):
     OS_LIBS += CONFIG['TK_LIBS']
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/browser/components/dirprovider/moz.build b/browser/components/dirprovider/moz.build
index 0d772bb579942..570ff8728f1a5 100644
--- a/browser/components/dirprovider/moz.build
+++ b/browser/components/dirprovider/moz.build
@@ -21,3 +21,6 @@ FINAL_LIBRARY = 'browsercomps'
 LOCAL_INCLUDES += [
     '../build'
 ]
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/browser/components/feeds/moz.build b/browser/components/feeds/moz.build
index abbbcfa0b4622..ac8a0e4cae749 100644
--- a/browser/components/feeds/moz.build
+++ b/browser/components/feeds/moz.build
@@ -42,3 +42,6 @@ LOCAL_INCLUDES += [
 
 with Files('**'):
     BUG_COMPONENT = ('Firefox', 'RSS Discovery and Preview')
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/browser/components/shell/moz.build b/browser/components/shell/moz.build
index e4860ea860bc7..3a04e8d2aa707 100644
--- a/browser/components/shell/moz.build
+++ b/browser/components/shell/moz.build
@@ -52,3 +52,6 @@ CXXFLAGS += CONFIG['TK_CFLAGS']
 
 with Files('**'):
     BUG_COMPONENT = ('Firefox', 'Shell Integration')
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/devtools/server/moz.build b/devtools/server/moz.build
index ac0bc8b53bdea..5844f53121f54 100644
--- a/devtools/server/moz.build
+++ b/devtools/server/moz.build
@@ -35,3 +35,6 @@ DevToolsModules(
     'protocol.js',
     'worker.js'
 )
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/docshell/base/timeline/moz.build b/docshell/base/timeline/moz.build
index 98d53a31b036b..fb5b7ae06f0cf 100644
--- a/docshell/base/timeline/moz.build
+++ b/docshell/base/timeline/moz.build
@@ -35,3 +35,6 @@ FINAL_LIBRARY = 'xul'
 LOCAL_INCLUDES += [
     '/docshell/base'
 ]
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/docshell/shistory/moz.build b/docshell/shistory/moz.build
index cba3905d3e6f4..23507aa19c31a 100644
--- a/docshell/shistory/moz.build
+++ b/docshell/shistory/moz.build
@@ -32,3 +32,6 @@ LOCAL_INCLUDES += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['CLANG_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/activities/moz.build b/dom/activities/moz.build
index bc7437d89d5f3..3c19a5f01bcc7 100644
--- a/dom/activities/moz.build
+++ b/dom/activities/moz.build
@@ -38,3 +38,6 @@ LOCAL_INCLUDES += [
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/base/test/gtest/moz.build b/dom/base/test/gtest/moz.build
index cd62303789c06..cca822c539544 100644
--- a/dom/base/test/gtest/moz.build
+++ b/dom/base/test/gtest/moz.build
@@ -15,3 +15,6 @@ LOCAL_INCLUDES += [
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul-gtest'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/battery/moz.build b/dom/battery/moz.build
index 75d0e1075c926..7a65c6611e809 100644
--- a/dom/battery/moz.build
+++ b/dom/battery/moz.build
@@ -18,3 +18,6 @@ include('/ipc/chromium/chromium-config.mozbuild')
 FINAL_LIBRARY = 'xul'
 
 MOCHITEST_MANIFESTS += ['test/mochitest.ini']
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/broadcastchannel/moz.build b/dom/broadcastchannel/moz.build
index 6048549efd51b..7175711a80a60 100644
--- a/dom/broadcastchannel/moz.build
+++ b/dom/broadcastchannel/moz.build
@@ -29,3 +29,6 @@ MOCHITEST_CHROME_MANIFESTS += ['tests/chrome.ini']
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/browser-element/moz.build b/dom/browser-element/moz.build
index bf995bf5c2d8f..cdc136e661f06 100644
--- a/dom/browser-element/moz.build
+++ b/dom/browser-element/moz.build
@@ -52,3 +52,6 @@ MOCHITEST_MANIFESTS += [
     'mochitest/mochitest.ini',
     'mochitest/priority/mochitest.ini',
 ]
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/cellbroadcast/moz.build b/dom/cellbroadcast/moz.build
index 980ce8f41ccfd..52aeb55728a7c 100644
--- a/dom/cellbroadcast/moz.build
+++ b/dom/cellbroadcast/moz.build
@@ -36,3 +36,6 @@ IPDL_SOURCES += [
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/devicestorage/moz.build b/dom/devicestorage/moz.build
index 471d3f57dfd1d..dcf862a512070 100644
--- a/dom/devicestorage/moz.build
+++ b/dom/devicestorage/moz.build
@@ -45,3 +45,6 @@ MOCHITEST_MANIFESTS += [
     'test/mochitest.ini',
 ]
 MOCHITEST_CHROME_MANIFESTS += ['test/chrome.ini']
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/encoding/moz.build b/dom/encoding/moz.build
index 07e6a5d508502..6ea2f19e18796 100644
--- a/dom/encoding/moz.build
+++ b/dom/encoding/moz.build
@@ -45,3 +45,6 @@ MOCHITEST_MANIFESTS += [
 ]
 MOCHITEST_CHROME_MANIFESTS += ['test/chrome.ini']
 XPCSHELL_TESTS_MANIFESTS += ['test/unit/xpcshell.ini']
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/filesystem/moz.build b/dom/filesystem/moz.build
index 33f163633374a..06b916438ce14 100644
--- a/dom/filesystem/moz.build
+++ b/dom/filesystem/moz.build
@@ -41,3 +41,6 @@ include('/ipc/chromium/chromium-config.mozbuild')
 LOCAL_INCLUDES += [
     '/dom/base',
 ]
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/fmradio/ipc/moz.build b/dom/fmradio/ipc/moz.build
index 027a07d4c993a..a5ad94be4acf9 100644
--- a/dom/fmradio/ipc/moz.build
+++ b/dom/fmradio/ipc/moz.build
@@ -30,3 +30,5 @@ LOCAL_INCLUDES += [
     '/dom/fmradio',
 ]
 
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/fmradio/moz.build b/dom/fmradio/moz.build
index 928b39c629f87..f21c58fef9ba4 100644
--- a/dom/fmradio/moz.build
+++ b/dom/fmradio/moz.build
@@ -32,3 +32,6 @@ LOCAL_INCLUDES += [
     '../system/gonk',
 ]
 include('/ipc/chromium/chromium-config.mozbuild')
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/gamepad/moz.build b/dom/gamepad/moz.build
index 94594f10cd341..712e3a28d070f 100644
--- a/dom/gamepad/moz.build
+++ b/dom/gamepad/moz.build
@@ -54,3 +54,6 @@ CFLAGS += CONFIG['GLIB_CFLAGS']
 CFLAGS += CONFIG['MOZ_DBUS_GLIB_CFLAGS']
 CXXFLAGS += CONFIG['GLIB_CFLAGS']
 CXXFLAGS += CONFIG['MOZ_DBUS_GLIB_CFLAGS']
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/geolocation/moz.build b/dom/geolocation/moz.build
index 851caf1024382..f5199e9825a10 100644
--- a/dom/geolocation/moz.build
+++ b/dom/geolocation/moz.build
@@ -51,3 +51,6 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
     LOCAL_INCLUDES += [
         '/dom/system/windows',
     ]
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/icc/moz.build b/dom/icc/moz.build
index bb54f7a2466f6..1453a15498a15 100644
--- a/dom/icc/moz.build
+++ b/dom/icc/moz.build
@@ -55,3 +55,6 @@ FINAL_LIBRARY = 'xul'
 LOCAL_INCLUDES += [
     '/dom/system/gonk',
 ]
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/inputport/moz.build b/dom/inputport/moz.build
index ce3173bbd5450..fee291e166d1d 100644
--- a/dom/inputport/moz.build
+++ b/dom/inputport/moz.build
@@ -44,3 +44,6 @@ XPCSHELL_TESTS_MANIFESTS += ['test/xpcshell/xpcshell.ini']
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/json/moz.build b/dom/json/moz.build
index 8bac04d071e00..eb97ca0b9ac30 100644
--- a/dom/json/moz.build
+++ b/dom/json/moz.build
@@ -20,3 +20,6 @@ FINAL_LIBRARY = 'xul'
 
 XPCSHELL_TESTS_MANIFESTS += ['test/unit/xpcshell.ini']
 MOCHITEST_MANIFESTS += ['test/mochitest.ini']
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/jsurl/moz.build b/dom/jsurl/moz.build
index 29d17eedc3d38..ad85bba077400 100644
--- a/dom/jsurl/moz.build
+++ b/dom/jsurl/moz.build
@@ -22,3 +22,6 @@ FINAL_LIBRARY = 'xul'
 include('/ipc/chromium/chromium-config.mozbuild')
 
 MOCHITEST_MANIFESTS += ['test/mochitest.ini']
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/mathml/moz.build b/dom/mathml/moz.build
index beeca51b5e545..25a50502476ef 100644
--- a/dom/mathml/moz.build
+++ b/dom/mathml/moz.build
@@ -16,3 +16,5 @@ LOCAL_INCLUDES += [
     '/dom/base',
 ]
 
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/media/android/moz.build b/dom/media/android/moz.build
index eb600eb120b9a..878d1be8bd755 100644
--- a/dom/media/android/moz.build
+++ b/dom/media/android/moz.build
@@ -25,3 +25,6 @@ LOCAL_INCLUDES += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/media/gmp-plugin-openh264/moz.build b/dom/media/gmp-plugin-openh264/moz.build
index 49131be239679..674b07e4ff30a 100644
--- a/dom/media/gmp-plugin-openh264/moz.build
+++ b/dom/media/gmp-plugin-openh264/moz.build
@@ -22,3 +22,6 @@ USE_STATIC_LIBS = True
 NO_VISIBILITY_FLAGS = True
 # Don't use STL wrappers; this isn't Gecko code
 DISABLE_STL_WRAPPING = True
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/media/gmp-plugin/moz.build b/dom/media/gmp-plugin/moz.build
index 43968b2f1dadc..f7af678a52bee 100644
--- a/dom/media/gmp-plugin/moz.build
+++ b/dom/media/gmp-plugin/moz.build
@@ -24,3 +24,6 @@ USE_STATIC_LIBS = True
 NO_VISIBILITY_FLAGS = True
 # Don't use STL wrappers; this isn't Gecko code
 DISABLE_STL_WRAPPING = True
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/media/imagecapture/moz.build b/dom/media/imagecapture/moz.build
index dcf09af154d35..daeb9ab087f38 100644
--- a/dom/media/imagecapture/moz.build
+++ b/dom/media/imagecapture/moz.build
@@ -14,3 +14,6 @@ UNIFIED_SOURCES += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/messagechannel/moz.build b/dom/messagechannel/moz.build
index 36f0fabb0e394..4c3a23d1a113f 100644
--- a/dom/messagechannel/moz.build
+++ b/dom/messagechannel/moz.build
@@ -37,3 +37,6 @@ LOCAL_INCLUDES += [
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/nfc/moz.build b/dom/nfc/moz.build
index 1242f717ca64c..74ed99bc6b8be 100644
--- a/dom/nfc/moz.build
+++ b/dom/nfc/moz.build
@@ -51,3 +51,6 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk' and CONFIG['MOZ_NFC']:
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/offline/moz.build b/dom/offline/moz.build
index eb165a0cc3918..55685526ad6f0 100644
--- a/dom/offline/moz.build
+++ b/dom/offline/moz.build
@@ -16,3 +16,6 @@ LOCAL_INCLUDES += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/payment/moz.build b/dom/payment/moz.build
index 63de2ed4631eb..eec76075ed3e3 100644
--- a/dom/payment/moz.build
+++ b/dom/payment/moz.build
@@ -37,3 +37,6 @@ LOCAL_INCLUDES += [
 XPCSHELL_TESTS_MANIFESTS += ['tests/unit/xpcshell.ini']
 
 MOCHITEST_MANIFESTS += ['tests/mochitest/mochitest.ini']
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/permission/moz.build b/dom/permission/moz.build
index 65d31af73bbe3..828b30707843c 100644
--- a/dom/permission/moz.build
+++ b/dom/permission/moz.build
@@ -47,3 +47,6 @@ if CONFIG['MOZ_TIME_MANAGER']:
     MOCHITEST_MANIFESTS += ['tests/mochitest-time.ini']
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/plugins/base/android/moz.build b/dom/plugins/base/android/moz.build
index 61f2f03770b68..d6f9be778d0fc 100644
--- a/dom/plugins/base/android/moz.build
+++ b/dom/plugins/base/android/moz.build
@@ -36,3 +36,6 @@ LOCAL_INCLUDES += [
 DEFINES['MOZ_APP_NAME'] = '"%s"' % CONFIG['MOZ_APP_NAME']
 
 CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS']
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/power/moz.build b/dom/power/moz.build
index 3bd2dfa99d091..7752c38f01b1e 100644
--- a/dom/power/moz.build
+++ b/dom/power/moz.build
@@ -33,3 +33,6 @@ FINAL_LIBRARY = 'xul'
 
 MOCHITEST_MANIFESTS += ['test/mochitest.ini']
 BROWSER_CHROME_MANIFESTS += ['test/browser.ini']
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/presentation/moz.build b/dom/presentation/moz.build
index 4e43a60a352e7..4afb176d8f4b7 100644
--- a/dom/presentation/moz.build
+++ b/dom/presentation/moz.build
@@ -57,3 +57,6 @@ IPDL_SOURCES += [
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/presentation/provider/moz.build b/dom/presentation/provider/moz.build
index 9a5b50156685c..ec32e46e0fe19 100644
--- a/dom/presentation/provider/moz.build
+++ b/dom/presentation/provider/moz.build
@@ -16,3 +16,6 @@ UNIFIED_SOURCES += [
 
 include('/ipc/chromium/chromium-config.mozbuild')
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/requestsync/moz.build b/dom/requestsync/moz.build
index a45ea0fd46d1f..b595401654012 100644
--- a/dom/requestsync/moz.build
+++ b/dom/requestsync/moz.build
@@ -29,3 +29,6 @@ SOURCES += [
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/smil/moz.build b/dom/smil/moz.build
index b3ab06a378726..4b049578fca17 100644
--- a/dom/smil/moz.build
+++ b/dom/smil/moz.build
@@ -70,3 +70,6 @@ LOCAL_INCLUDES += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/speakermanager/moz.build b/dom/speakermanager/moz.build
index 5a740dea603fa..73340e94e636a 100644
--- a/dom/speakermanager/moz.build
+++ b/dom/speakermanager/moz.build
@@ -21,3 +21,6 @@ UNIFIED_SOURCES += [
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/storage/moz.build b/dom/storage/moz.build
index f78fec6a67f3d..a41a7684ac66a 100644
--- a/dom/storage/moz.build
+++ b/dom/storage/moz.build
@@ -31,3 +31,6 @@ LOCAL_INCLUDES += [
 
 if CONFIG['ENABLE_TESTS']:
     DEFINES['DOM_STORAGE_TESTS'] = True
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/system/android/moz.build b/dom/system/android/moz.build
index bd59f9613da0a..345ce053de509 100644
--- a/dom/system/android/moz.build
+++ b/dom/system/android/moz.build
@@ -16,3 +16,5 @@ LOCAL_INCLUDES += [
     '/dom/geolocation',
 ]
 
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/system/moz.build b/dom/system/moz.build
index a5f152acc98d1..2e8dbfe41d77b 100644
--- a/dom/system/moz.build
+++ b/dom/system/moz.build
@@ -63,3 +63,6 @@ DEFINES['DLL_SUFFIX'] = '"%s"' % CONFIG['DLL_SUFFIX']
 
 MOCHITEST_CHROME_MANIFESTS += ['tests/chrome.ini']
 MOCHITEST_MANIFESTS += ['tests/mochitest.ini']
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/system/qt/moz.build b/dom/system/qt/moz.build
index 6e418008b29ac..76b262a450a51 100644
--- a/dom/system/qt/moz.build
+++ b/dom/system/qt/moz.build
@@ -24,3 +24,6 @@ if CONFIG['MOZ_ENABLE_QT5FEEDBACK']:
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/system/windows/moz.build b/dom/system/windows/moz.build
index 6e9cfe1793215..6a5cb3bf8d7e6 100644
--- a/dom/system/windows/moz.build
+++ b/dom/system/windows/moz.build
@@ -14,3 +14,6 @@ LOCAL_INCLUDES += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/telephony/moz.build b/dom/telephony/moz.build
index b1c1c11ed0183..4b6eef1fc7b0a 100644
--- a/dom/telephony/moz.build
+++ b/dom/telephony/moz.build
@@ -79,3 +79,6 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk' and CONFIG['MOZ_B2G_RIL']:
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/time/moz.build b/dom/time/moz.build
index 37b0a42583998..323ce790f0e75 100644
--- a/dom/time/moz.build
+++ b/dom/time/moz.build
@@ -27,3 +27,6 @@ UNIFIED_SOURCES += [
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/tv/moz.build b/dom/tv/moz.build
index 9025a86b40ad6..abaa3bb0f3f28 100644
--- a/dom/tv/moz.build
+++ b/dom/tv/moz.build
@@ -45,3 +45,6 @@ XPCSHELL_TESTS_MANIFESTS += ['test/xpcshell/xpcshell.ini']
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/voicemail/moz.build b/dom/voicemail/moz.build
index 35d7f04123d32..e76c312deafa5 100644
--- a/dom/voicemail/moz.build
+++ b/dom/voicemail/moz.build
@@ -51,3 +51,6 @@ LOCAL_INCLUDES += [
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/vr/moz.build b/dom/vr/moz.build
index e30f39c9c56c8..30e332e883db3 100644
--- a/dom/vr/moz.build
+++ b/dom/vr/moz.build
@@ -18,3 +18,6 @@ FINAL_LIBRARY = 'xul'
 LOCAL_INCLUDES += [
     '/dom/base'
 ]
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/dom/workers/test/gtest/moz.build b/dom/workers/test/gtest/moz.build
index 6be8377e9f298..e342db0a6b8f6 100644
--- a/dom/workers/test/gtest/moz.build
+++ b/dom/workers/test/gtest/moz.build
@@ -11,3 +11,6 @@ UNIFIED_SOURCES = [
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul-gtest'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/editor/txmgr/moz.build b/editor/txmgr/moz.build
index 54f6efd1c84bd..6b43b53ce6f11 100644
--- a/editor/txmgr/moz.build
+++ b/editor/txmgr/moz.build
@@ -28,3 +28,6 @@ UNIFIED_SOURCES += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/editor/txtsvc/moz.build b/editor/txtsvc/moz.build
index b2227a5b527aa..da4bb12ae9b30 100644
--- a/editor/txtsvc/moz.build
+++ b/editor/txtsvc/moz.build
@@ -24,3 +24,6 @@ UNIFIED_SOURCES += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/embedding/browser/build/moz.build b/embedding/browser/build/moz.build
index 9ce468d84c31d..9aeb5da61fb9d 100644
--- a/embedding/browser/build/moz.build
+++ b/embedding/browser/build/moz.build
@@ -13,3 +13,5 @@ LOCAL_INCLUDES += [
     '..',
 ]
 
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/embedding/components/appstartup/moz.build b/embedding/components/appstartup/moz.build
index 66c253a2c8e66..72f0470d4e2b2 100644
--- a/embedding/components/appstartup/moz.build
+++ b/embedding/components/appstartup/moz.build
@@ -13,3 +13,6 @@ SOURCES += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/embedding/components/build/moz.build b/embedding/components/build/moz.build
index 67d89bc8d15ec..752c1e183e9c5 100644
--- a/embedding/components/build/moz.build
+++ b/embedding/components/build/moz.build
@@ -37,3 +37,5 @@ if CONFIG['MOZ_PDF_PRINTING']:
 
 include('/ipc/chromium/chromium-config.mozbuild')
 
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/embedding/components/commandhandler/moz.build b/embedding/components/commandhandler/moz.build
index 3f3d7a56ff786..6512d0e4df70c 100644
--- a/embedding/components/commandhandler/moz.build
+++ b/embedding/components/commandhandler/moz.build
@@ -24,3 +24,6 @@ UNIFIED_SOURCES += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/embedding/components/find/moz.build b/embedding/components/find/moz.build
index fce835eacb0e1..7a47fe3e3741e 100644
--- a/embedding/components/find/moz.build
+++ b/embedding/components/find/moz.build
@@ -17,3 +17,6 @@ UNIFIED_SOURCES += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/embedding/components/printingui/ipc/moz.build b/embedding/components/printingui/ipc/moz.build
index 845c85f85551d..92e6dafb49895 100644
--- a/embedding/components/printingui/ipc/moz.build
+++ b/embedding/components/printingui/ipc/moz.build
@@ -33,3 +33,6 @@ IPDL_SOURCES += [
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/embedding/components/printingui/mac/moz.build b/embedding/components/printingui/mac/moz.build
index 80544cac2bf8c..9e073256b2525 100644
--- a/embedding/components/printingui/mac/moz.build
+++ b/embedding/components/printingui/mac/moz.build
@@ -14,3 +14,6 @@ SOURCES += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/embedding/components/printingui/unixshared/moz.build b/embedding/components/printingui/unixshared/moz.build
index bd04dadfae90a..17bf5e07f785d 100644
--- a/embedding/components/printingui/unixshared/moz.build
+++ b/embedding/components/printingui/unixshared/moz.build
@@ -11,3 +11,6 @@ UNIFIED_SOURCES += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/embedding/components/printingui/win/moz.build b/embedding/components/printingui/win/moz.build
index e838146d45354..d5673308deb54 100644
--- a/embedding/components/printingui/win/moz.build
+++ b/embedding/components/printingui/win/moz.build
@@ -16,3 +16,6 @@ EXPORTS += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/extensions/auth/moz.build b/extensions/auth/moz.build
index 31262cf7c971d..66515465dc72e 100644
--- a/extensions/auth/moz.build
+++ b/extensions/auth/moz.build
@@ -25,3 +25,6 @@ else:
     ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/extensions/gio/moz.build b/extensions/gio/moz.build
index 8d1317b261de7..5ecef218b3d74 100644
--- a/extensions/gio/moz.build
+++ b/extensions/gio/moz.build
@@ -11,3 +11,6 @@ SOURCES += [
 FINAL_LIBRARY = 'xul'
 
 CXXFLAGS += CONFIG['MOZ_GIO_CFLAGS']
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/extensions/permissions/moz.build b/extensions/permissions/moz.build
index 9c3e2b47cf5f0..4295568a7fa88 100644
--- a/extensions/permissions/moz.build
+++ b/extensions/permissions/moz.build
@@ -10,3 +10,6 @@ UNIFIED_SOURCES += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/extensions/pref/autoconfig/src/moz.build b/extensions/pref/autoconfig/src/moz.build
index 7c40fcd28c1b3..0b9e7f12bf02e 100644
--- a/extensions/pref/autoconfig/src/moz.build
+++ b/extensions/pref/autoconfig/src/moz.build
@@ -12,3 +12,6 @@ UNIFIED_SOURCES += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/extensions/spellcheck/hunspell/glue/moz.build b/extensions/spellcheck/hunspell/glue/moz.build
index 6b591e330a0f1..7a9cba8121918 100644
--- a/extensions/spellcheck/hunspell/glue/moz.build
+++ b/extensions/spellcheck/hunspell/glue/moz.build
@@ -33,3 +33,5 @@ EXPORTS.mozilla += [
      'RemoteSpellCheckEngineParent.h',
 ]
 
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/extensions/universalchardet/src/base/moz.build b/extensions/universalchardet/src/base/moz.build
index 4ffc77878930d..bf1f1772483dd 100644
--- a/extensions/universalchardet/src/base/moz.build
+++ b/extensions/universalchardet/src/base/moz.build
@@ -20,3 +20,6 @@ UNIFIED_SOURCES += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/extensions/universalchardet/src/xpcom/moz.build b/extensions/universalchardet/src/xpcom/moz.build
index e605256e46874..be9e06e006a94 100644
--- a/extensions/universalchardet/src/xpcom/moz.build
+++ b/extensions/universalchardet/src/xpcom/moz.build
@@ -14,3 +14,6 @@ FINAL_LIBRARY = 'xul'
 LOCAL_INCLUDES += [
     '../base',
 ]
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/gfx/gl/moz.build b/gfx/gl/moz.build
index 7b6e001e422a6..30580a3c405a6 100644
--- a/gfx/gl/moz.build
+++ b/gfx/gl/moz.build
@@ -162,3 +162,6 @@ LOCAL_INCLUDES += CONFIG['SKIA_INCLUDES']
 
 if CONFIG['OS_ARCH'] == 'WINNT':
     del DEFINES['UNICODE']
+
+if CONFIG['CLANG_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/gfx/ipc/moz.build b/gfx/ipc/moz.build
index df09d34bb81f6..2051e34a825ec 100644
--- a/gfx/ipc/moz.build
+++ b/gfx/ipc/moz.build
@@ -36,3 +36,6 @@ FINAL_LIBRARY = 'xul'
 
 CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS']
 CXXFLAGS += CONFIG['TK_CFLAGS']
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/gfx/src/moz.build b/gfx/src/moz.build
index eacb6e6b71607..156aa1f7ce947 100644
--- a/gfx/src/moz.build
+++ b/gfx/src/moz.build
@@ -90,3 +90,6 @@ if CONFIG['MOZ_WIDGET_GTK']:
 
 if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'qt':
     CXXFLAGS += CONFIG['MOZ_QT_CFLAGS']
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/gfx/vr/moz.build b/gfx/vr/moz.build
index 8edeb619e7fb8..0f084ddc5edfa 100644
--- a/gfx/vr/moz.build
+++ b/gfx/vr/moz.build
@@ -41,3 +41,5 @@ include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
 
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/gfx/ycbcr/moz.build b/gfx/ycbcr/moz.build
index f03c43a7ed83d..8ceb6d3ec0cc0 100644
--- a/gfx/ycbcr/moz.build
+++ b/gfx/ycbcr/moz.build
@@ -64,3 +64,6 @@ if CONFIG['CPU_ARCH'] == 'arm' and CONFIG['HAVE_ARM_NEON']:
     ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/hal/moz.build b/hal/moz.build
index 21812285775df..4f47a80575f3d 100644
--- a/hal/moz.build
+++ b/hal/moz.build
@@ -177,3 +177,6 @@ CFLAGS += CONFIG['GLIB_CFLAGS']
 CFLAGS += CONFIG['MOZ_DBUS_GLIB_CFLAGS']
 CXXFLAGS += CONFIG['GLIB_CFLAGS']
 CXXFLAGS += CONFIG['MOZ_DBUS_GLIB_CFLAGS']
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/image/build/moz.build b/image/build/moz.build
index c326666a4beb3..f48d92e2a335a 100644
--- a/image/build/moz.build
+++ b/image/build/moz.build
@@ -21,3 +21,5 @@ LOCAL_INCLUDES += [
     '/image/encoders/png',
 ]
 
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/image/decoders/icon/android/moz.build b/image/decoders/icon/android/moz.build
index 5014eb4e29db5..cc3cdf8de7d4e 100644
--- a/image/decoders/icon/android/moz.build
+++ b/image/decoders/icon/android/moz.build
@@ -11,3 +11,6 @@ SOURCES += [
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/image/decoders/icon/gtk/moz.build b/image/decoders/icon/gtk/moz.build
index d28d7d2dff91f..796efc3bb9f63 100644
--- a/image/decoders/icon/gtk/moz.build
+++ b/image/decoders/icon/gtk/moz.build
@@ -14,3 +14,6 @@ if CONFIG['MOZ_ENABLE_GNOMEUI']:
     CXXFLAGS += CONFIG['MOZ_GNOMEUI_CFLAGS']
 else:
     CXXFLAGS += CONFIG['TK_CFLAGS']
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/image/decoders/icon/moz.build b/image/decoders/icon/moz.build
index 1dfaa9efab341..37d8134e5a032 100644
--- a/image/decoders/icon/moz.build
+++ b/image/decoders/icon/moz.build
@@ -33,3 +33,6 @@ if CONFIG['OS_TARGET'] == 'Android':
 
 if platform:
     LOCAL_INCLUDES += [platform]
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/image/decoders/icon/qt/moz.build b/image/decoders/icon/qt/moz.build
index 0cf20fdb6d401..0fcaf4b50b435 100644
--- a/image/decoders/icon/qt/moz.build
+++ b/image/decoders/icon/qt/moz.build
@@ -25,3 +25,6 @@ EXTRA_PP_COMPONENTS += [
 FINAL_LIBRARY = 'xul'
 
 CXXFLAGS += CONFIG['MOZ_QT_CFLAGS']
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/image/decoders/icon/win/moz.build b/image/decoders/icon/win/moz.build
index 2c15395f616e2..5bb4852552aef 100644
--- a/image/decoders/icon/win/moz.build
+++ b/image/decoders/icon/win/moz.build
@@ -9,3 +9,6 @@ SOURCES += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/image/encoders/bmp/moz.build b/image/encoders/bmp/moz.build
index cf0db8dc0dafc..f5494c8f4b79c 100644
--- a/image/encoders/bmp/moz.build
+++ b/image/encoders/bmp/moz.build
@@ -13,3 +13,6 @@ LOCAL_INCLUDES += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/image/encoders/ico/moz.build b/image/encoders/ico/moz.build
index 11b34b21c25a6..c1318ae089733 100644
--- a/image/encoders/ico/moz.build
+++ b/image/encoders/ico/moz.build
@@ -16,3 +16,6 @@ LOCAL_INCLUDES += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/image/encoders/jpeg/moz.build b/image/encoders/jpeg/moz.build
index a528143225ed8..63778362a7e6e 100644
--- a/image/encoders/jpeg/moz.build
+++ b/image/encoders/jpeg/moz.build
@@ -9,3 +9,6 @@ SOURCES += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/image/encoders/png/moz.build b/image/encoders/png/moz.build
index 8a4edff619b36..1aa61c7d4ea11 100644
--- a/image/encoders/png/moz.build
+++ b/image/encoders/png/moz.build
@@ -13,3 +13,6 @@ LOCAL_INCLUDES += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/intl/build/moz.build b/intl/build/moz.build
index 26bae09dd2990..1a46a82ff5d88 100644
--- a/intl/build/moz.build
+++ b/intl/build/moz.build
@@ -18,3 +18,5 @@ LOCAL_INCLUDES += [
     '../unicharutil',
 ]
 
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/intl/chardet/moz.build b/intl/chardet/moz.build
index 8765f486a7b22..78f4bcadc20c5 100644
--- a/intl/chardet/moz.build
+++ b/intl/chardet/moz.build
@@ -17,3 +17,6 @@ UNIFIED_SOURCES += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/intl/locale/moz.build b/intl/locale/moz.build
index a8c5fc5cf6f8a..e9b414f2b7770 100644
--- a/intl/locale/moz.build
+++ b/intl/locale/moz.build
@@ -68,3 +68,6 @@ langgroups.inputs = ['langGroups.properties']
 
 if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'qt':
     CXXFLAGS += CONFIG['MOZ_QT_CFLAGS']
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/intl/locale/unix/moz.build b/intl/locale/unix/moz.build
index 698b155d7c736..4e04bbe73d4a0 100644
--- a/intl/locale/unix/moz.build
+++ b/intl/locale/unix/moz.build
@@ -40,3 +40,6 @@ if CONFIG['OS_ARCH'] == 'Linux':
     DEFINES['_XOPEN_SOURCE'] = 500
 
 DEFINES['OSTYPE'] = '"%s"' % CONFIG['OS_CONFIG']
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/intl/lwbrk/moz.build b/intl/lwbrk/moz.build
index 5d1c12c7fe00f..d90f5411c0caa 100644
--- a/intl/lwbrk/moz.build
+++ b/intl/lwbrk/moz.build
@@ -48,3 +48,6 @@ FINAL_LIBRARY = 'xul'
 
 if CONFIG['MOZ_WIDGET_GTK']:
     CXXFLAGS += CONFIG['MOZ_PANGO_CFLAGS']
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/intl/unicharutil/tests/moz.build b/intl/unicharutil/tests/moz.build
index b9282c2fae95d..632aad83bc8a7 100755
--- a/intl/unicharutil/tests/moz.build
+++ b/intl/unicharutil/tests/moz.build
@@ -9,3 +9,6 @@ SOURCES += [
 ]
 
 FINAL_LIBRARY = 'xul-gtest'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/intl/unicharutil/util/standalone/moz.build b/intl/unicharutil/util/standalone/moz.build
index 8dc7fb20ebc98..bed3012a766e2 100644
--- a/intl/unicharutil/util/standalone/moz.build
+++ b/intl/unicharutil/util/standalone/moz.build
@@ -18,3 +18,6 @@ if CONFIG['ENABLE_INTL_API']:
 for var in ('MOZILLA_INTERNAL_API', 'MOZILLA_XPCOMRT_API', 'MOZILLA_EXTERNAL_LINKAGE',
             'NR_SOCKET_IS_VOID_PTR', 'HAVE_STRDUP'):
     DEFINES[var] = True
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/ipc/app/moz.build b/ipc/app/moz.build
index a8c0f0c4d4eab..ad3e04631ade8 100644
--- a/ipc/app/moz.build
+++ b/ipc/app/moz.build
@@ -118,3 +118,6 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk':
         'binder',
         'utils',
     ]
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/ipc/app/pie/moz.build b/ipc/app/pie/moz.build
index 8b830193e1f70..d1d312a1f8895 100644
--- a/ipc/app/pie/moz.build
+++ b/ipc/app/pie/moz.build
@@ -28,3 +28,6 @@ if CONFIG['MOZ_SANDBOX']:
 	LDFLAGS += ['--param lto-partitions=1']
 
 LDFLAGS += ['-pie']
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/ipc/contentproc/moz.build b/ipc/contentproc/moz.build
index 3c3c5abf56e68..896d17714f1fe 100644
--- a/ipc/contentproc/moz.build
+++ b/ipc/contentproc/moz.build
@@ -26,3 +26,6 @@ if CONFIG['MOZ_SANDBOX'] and CONFIG['OS_ARCH'] == 'WINNT':
         '/security/sandbox/chromium',
         '/security/sandbox/chromium-shim',
     ]
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/ipc/dbus/moz.build b/ipc/dbus/moz.build
index e2961fe832065..d31c8f17aa1f2 100644
--- a/ipc/dbus/moz.build
+++ b/ipc/dbus/moz.build
@@ -23,3 +23,6 @@ if CONFIG['MOZ_ENABLE_DBUS']:
     CFLAGS += CONFIG['MOZ_DBUS_GLIB_CFLAGS']
     CXXFLAGS += CONFIG['MOZ_DBUS_CFLAGS']
     CXXFLAGS += CONFIG['MOZ_DBUS_GLIB_CFLAGS']
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/ipc/hal/moz.build b/ipc/hal/moz.build
index 9ce447cf5afd4..74f03558ffe62 100644
--- a/ipc/hal/moz.build
+++ b/ipc/hal/moz.build
@@ -25,3 +25,6 @@ UNIFIED_SOURCES += [
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/ipc/ipdl/test/cxx/app/moz.build b/ipc/ipdl/test/cxx/app/moz.build
index 72091b73e469f..fee35caab949e 100644
--- a/ipc/ipdl/test/cxx/app/moz.build
+++ b/ipc/ipdl/test/cxx/app/moz.build
@@ -18,3 +18,6 @@ LOCAL_INCLUDES += [
 
 if CONFIG['_MSC_VER']:
     WIN32_EXE_LDFLAGS += ['-ENTRY:wmainCRTStartup']
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/ipc/ipdl/test/cxx/moz.build b/ipc/ipdl/test/cxx/moz.build
index dbc26a6fcd558..9722dbc7e8521 100644
--- a/ipc/ipdl/test/cxx/moz.build
+++ b/ipc/ipdl/test/cxx/moz.build
@@ -128,3 +128,6 @@ IPDL_SOURCES += [
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/ipc/netd/moz.build b/ipc/netd/moz.build
index 9c99a2344a539..de4341dabcf5b 100644
--- a/ipc/netd/moz.build
+++ b/ipc/netd/moz.build
@@ -15,3 +15,6 @@ SOURCES += [
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/ipc/nfc/moz.build b/ipc/nfc/moz.build
index c8e60933a02af..eee4d3b762b27 100644
--- a/ipc/nfc/moz.build
+++ b/ipc/nfc/moz.build
@@ -14,3 +14,6 @@ if CONFIG['MOZ_NFC']:
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/ipc/ril/moz.build b/ipc/ril/moz.build
index be20a4acee62c..66c77b3f76a7e 100644
--- a/ipc/ril/moz.build
+++ b/ipc/ril/moz.build
@@ -20,3 +20,6 @@ SOURCES += [
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/ipc/unixfd/moz.build b/ipc/unixfd/moz.build
index f2e459598c389..304cca6dcc3a8 100644
--- a/ipc/unixfd/moz.build
+++ b/ipc/unixfd/moz.build
@@ -19,3 +19,6 @@ SOURCES += [
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/ipc/unixsocket/moz.build b/ipc/unixsocket/moz.build
index 85d7bc36a1029..3c79700b7a166 100644
--- a/ipc/unixsocket/moz.build
+++ b/ipc/unixsocket/moz.build
@@ -29,3 +29,6 @@ SOURCES += [
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/js/ductwork/debugger/moz.build b/js/ductwork/debugger/moz.build
index 4e96b9b8ee577..0a40c7adbe5a9 100644
--- a/js/ductwork/debugger/moz.build
+++ b/js/ductwork/debugger/moz.build
@@ -21,3 +21,6 @@ EXTRA_JS_MODULES += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/js/xpconnect/shell/moz.build b/js/xpconnect/shell/moz.build
index 73de2c235144f..fed47bcd556d9 100644
--- a/js/xpconnect/shell/moz.build
+++ b/js/xpconnect/shell/moz.build
@@ -35,3 +35,6 @@ if CONFIG['OS_ARCH'] == 'WINNT':
 CFLAGS += CONFIG['TK_CFLAGS']
 CXXFLAGS += CONFIG['TK_CFLAGS']
 OS_LIBS += CONFIG['TK_LIBS']
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/js/xpconnect/tests/components/native/moz.build b/js/xpconnect/tests/components/native/moz.build
index 04a3a922ac517..702c3b15497e6 100644
--- a/js/xpconnect/tests/components/native/moz.build
+++ b/js/xpconnect/tests/components/native/moz.build
@@ -20,3 +20,6 @@ DEFINES['LIBRARY_FILENAME'] = '%s%s%s' % (
     LIBRARY_NAME,
     CONFIG['DLL_SUFFIX']
 )
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/layout/printing/moz.build b/layout/printing/moz.build
index abe1725e523d8..9ffc51de10aa5 100644
--- a/layout/printing/moz.build
+++ b/layout/printing/moz.build
@@ -26,3 +26,5 @@ LOCAL_INCLUDES += [
     '/dom/base',
 ]
 
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/layout/tools/layout-debug/src/moz.build b/layout/tools/layout-debug/src/moz.build
index 3ae7d5a3f0b16..dcfa0bb98a312 100644
--- a/layout/tools/layout-debug/src/moz.build
+++ b/layout/tools/layout-debug/src/moz.build
@@ -23,3 +23,6 @@ UNIFIED_SOURCES += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/media/gmp-clearkey/0.1/gtest/moz.build b/media/gmp-clearkey/0.1/gtest/moz.build
index 035ba4363a777..ac428dc674463 100644
--- a/media/gmp-clearkey/0.1/gtest/moz.build
+++ b/media/gmp-clearkey/0.1/gtest/moz.build
@@ -13,3 +13,6 @@ FINAL_LIBRARY = 'xul-gtest'
 LOCAL_INCLUDES += [
     '..',
 ]
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/media/gmp-clearkey/0.1/moz.build b/media/gmp-clearkey/0.1/moz.build
index 62213790833dd..b652fbfe30573 100644
--- a/media/gmp-clearkey/0.1/moz.build
+++ b/media/gmp-clearkey/0.1/moz.build
@@ -57,6 +57,9 @@ USE_STATIC_LIBS = True
 DISABLE_STL_WRAPPING = True
 DEFINES['MOZ_NO_MOZALLOC'] = True
 
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
+
 # Suppress warnings in third-party code.
 if CONFIG['GNU_CXX']:
     CFLAGS += [
diff --git a/media/libsoundtouch/src/moz.build b/media/libsoundtouch/src/moz.build
index d8f0bc9c44d92..26a0c46d5060e 100644
--- a/media/libsoundtouch/src/moz.build
+++ b/media/libsoundtouch/src/moz.build
@@ -44,6 +44,9 @@ else:
 
 ALLOW_COMPILER_WARNINGS = True
 
+if CONFIG['CLANG_CXX']:
+    CXXFLAGS += ['-Wshadow']
+
 FINAL_LIBRARY = 'lgpllibs'
 
 # Use abort() instead of exception in SoundTouch.
diff --git a/media/libstagefright/gtest/moz.build b/media/libstagefright/gtest/moz.build
index 02f1d59565de3..0fac5f2f78f9c 100644
--- a/media/libstagefright/gtest/moz.build
+++ b/media/libstagefright/gtest/moz.build
@@ -18,3 +18,6 @@ if CONFIG['MOZ_RUST']:
     ]
 
 FINAL_LIBRARY = 'xul-gtest'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/memory/fallible/moz.build b/memory/fallible/moz.build
index 22d17becea46f..5f6b2d00584ed 100644
--- a/memory/fallible/moz.build
+++ b/memory/fallible/moz.build
@@ -33,3 +33,6 @@ if CONFIG['_MSC_VER']:
         # This further prevents the CRT name from getting into the .obj file,
         # by avoiding pulling in a bunch of string code that uses the CRT.
         DEFINES['mozilla_Char16_h'] = True
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/memory/mozalloc/moz.build b/memory/mozalloc/moz.build
index afc3f775898a7..35a3e0c1115dd 100644
--- a/memory/mozalloc/moz.build
+++ b/memory/mozalloc/moz.build
@@ -48,3 +48,6 @@ if CONFIG['_MSC_VER']:
 LOCAL_INCLUDES += ['/memory/build']
 
 DIST_INSTALL = True
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/memory/mozalloc/staticruntime/moz.build b/memory/mozalloc/staticruntime/moz.build
index 3417198cd5313..e4efea85278be 100644
--- a/memory/mozalloc/staticruntime/moz.build
+++ b/memory/mozalloc/staticruntime/moz.build
@@ -28,3 +28,6 @@ DEFINES['IMPL_MFBT'] = True
 USE_STATIC_LIBS = True
 
 Library('mozalloc_staticruntime')
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/memory/replace/dmd/moz.build b/memory/replace/dmd/moz.build
index 835ccb953880f..f4401d60f36f6 100644
--- a/memory/replace/dmd/moz.build
+++ b/memory/replace/dmd/moz.build
@@ -37,3 +37,5 @@ if CONFIG['OS_ARCH'] == 'WINNT':
 
 TEST_DIRS += ['test']
 
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/memory/replace/logalloc/moz.build b/memory/replace/logalloc/moz.build
index 6f03f2861d781..9deb355131e26 100644
--- a/memory/replace/logalloc/moz.build
+++ b/memory/replace/logalloc/moz.build
@@ -38,3 +38,6 @@ if CONFIG['OS_TARGET'] == 'Android':
 DIRS += [
     'replay',
 ]
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/memory/replace/logalloc/replay/moz.build b/memory/replace/logalloc/replay/moz.build
index 8f862c4f3a16c..1fa63ffe7d284 100644
--- a/memory/replace/logalloc/replay/moz.build
+++ b/memory/replace/logalloc/replay/moz.build
@@ -21,3 +21,6 @@ USE_LIBS += [
 ]
 
 DISABLE_STL_WRAPPING = True
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/memory/replace/replace/moz.build b/memory/replace/replace/moz.build
index 41915b61aa646..8d9bb51b2fec8 100644
--- a/memory/replace/replace/moz.build
+++ b/memory/replace/replace/moz.build
@@ -11,3 +11,6 @@ SOURCES += [
 ]
 
 DISABLE_STL_WRAPPING = True
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/memory/volatile/moz.build b/memory/volatile/moz.build
index 768f25c39625e..0cc76755a44a7 100644
--- a/memory/volatile/moz.build
+++ b/memory/volatile/moz.build
@@ -29,3 +29,6 @@ else:
 FINAL_LIBRARY = 'xul'
 
 TEST_DIRS += ['tests']
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/memory/volatile/tests/moz.build b/memory/volatile/tests/moz.build
index aa63ab3acc75e..3616c77799bf1 100644
--- a/memory/volatile/tests/moz.build
+++ b/memory/volatile/tests/moz.build
@@ -9,3 +9,6 @@ UNIFIED_SOURCES = [
 ]
 
 FINAL_LIBRARY = 'xul-gtest'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/mobile/android/tests/background/junit4/src/org/mozilla/gecko/fxa/TestSkewHandler.java.orig b/mobile/android/tests/background/junit4/src/org/mozilla/gecko/fxa/TestSkewHandler.java.orig
deleted file mode 100644
index 87043f1d3ee2c..0000000000000
--- a/mobile/android/tests/background/junit4/src/org/mozilla/gecko/fxa/TestSkewHandler.java.orig
+++ /dev/null
@@ -1,67 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-package org.mozilla.gecko.fxa;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import org.junit.Test;
-import org.mozilla.gecko.background.fxa.SkewHandler;
-import org.mozilla.gecko.sync.net.BaseResource;
-
-import ch.boye.httpclientandroidlib.impl.cookie.DateUtils;
-
-public class TestSkewHandler {
-  public TestSkewHandler() {
-  }
-
-  @Test
-  public void testSkewUpdating() throws Throwable {
-    SkewHandler h = new SkewHandler("foo.com");
-    assertEquals(0L, h.getSkewInSeconds());
-    assertEquals(0L, h.getSkewInMillis());
-
-    long server = 1390101197865L;
-    long local = server - 4500L;
-    h.updateSkewFromServerMillis(server, local);
-    assertEquals(4500L, h.getSkewInMillis());
-    assertEquals(4L, h.getSkewInSeconds());
-
-    local = server;
-    h.updateSkewFromServerMillis(server, local);
-    assertEquals(0L, h.getSkewInMillis());
-    assertEquals(0L, h.getSkewInSeconds());
-
-    local = server + 500L;
-    h.updateSkewFromServerMillis(server, local);
-    assertEquals(-500L, h.getSkewInMillis());
-    assertEquals(0L, h.getSkewInSeconds());
-
-    String date = "Sat, 18 Jan 2014 19:16:52 PST";
-    long dateInMillis = 1390101412000L;              // Obviously this can differ somewhat due to precision.
-    long parsed = DateUtils.parseDate(date).getTime();
-    assertEquals(parsed, dateInMillis);
-
-    h.updateSkewFromHTTPDateString(date, dateInMillis);
-    assertEquals(0L, h.getSkewInMillis());
-    assertEquals(0L, h.getSkewInSeconds());
-
-    h.updateSkewFromHTTPDateString(date, dateInMillis + 1100L);
-    assertEquals(-1100L, h.getSkewInMillis());
-    assertEquals(Math.round(-1100L / 1000L), h.getSkewInSeconds());
-  }
-
-  public void testSkewSingleton() throws Exception {
-    SkewHandler h1 = SkewHandler.getSkewHandlerFromEndpointString("http://foo.com/bar");
-    SkewHandler h2 = SkewHandler.getSkewHandlerForHostname("foo.com");
-    SkewHandler h3 = SkewHandler.getSkewHandlerForResource(new BaseResource("http://foo.com/baz"));
-    assertTrue(h1 == h2);
-    assertTrue(h1 == h3);
-
-    SkewHandler.getSkewHandlerForHostname("foo.com").updateSkewFromServerMillis(1390101412000L, 1390001412000L);
-    final long actual = SkewHandler.getSkewHandlerForHostname("foo.com").getSkewInMillis();
-    assertEquals(100000000L, actual);
-  }
-}
diff --git a/mobile/android/tests/background/junit4/src/org/mozilla/gecko/fxa/login/TestFxAccountLoginStateMachine.java.orig b/mobile/android/tests/background/junit4/src/org/mozilla/gecko/fxa/login/TestFxAccountLoginStateMachine.java.orig
deleted file mode 100644
index 66235d3bf2c2f..0000000000000
--- a/mobile/android/tests/background/junit4/src/org/mozilla/gecko/fxa/login/TestFxAccountLoginStateMachine.java.orig
+++ /dev/null
@@ -1,202 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
-   http://creativecommons.org/publicdomain/zero/1.0/ */
-
-package org.mozilla.gecko.fxa.login;
-
-import java.security.NoSuchAlgorithmException;
-import java.util.LinkedList;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.mozilla.gecko.background.fxa.FxAccountClient;
-import org.mozilla.gecko.background.fxa.FxAccountUtils;
-import org.mozilla.gecko.background.testhelpers.WaitHelper;
-import org.mozilla.gecko.browserid.BrowserIDKeyPair;
-import org.mozilla.gecko.browserid.RSACryptoImplementation;
-import org.mozilla.gecko.fxa.login.FxAccountLoginStateMachine.LoginStateMachineDelegate;
-import org.mozilla.gecko.fxa.login.FxAccountLoginTransition.Transition;
-import org.mozilla.gecko.fxa.login.State.StateLabel;
-import org.mozilla.gecko.sync.Utils;
-
-public class TestFxAccountLoginStateMachine {
-  // private static final String TEST_AUDIENCE = "http://testAudience.com";
-  private static final String TEST_EMAIL = "test@test.com";
-  private static byte[] TEST_EMAIL_UTF8;
-  private static final String TEST_PASSWORD = "testtest";
-  private static byte[] TEST_PASSWORD_UTF8;
-  private static byte[] TEST_QUICK_STRETCHED_PW;
-  private static byte[] TEST_UNWRAPKB;
-  private static final byte[] TEST_SESSION_TOKEN = Utils.generateRandomBytes(32);
-  private static final byte[] TEST_KEY_FETCH_TOKEN = Utils.generateRandomBytes(32);
-
-  protected MockFxAccountClient client;
-  protected FxAccountLoginStateMachine sm;
-
-  @Before
-  public void setUp() throws Exception {
-    if (TEST_EMAIL_UTF8 == null) {
-      TEST_EMAIL_UTF8 = TEST_EMAIL.getBytes("UTF-8");
-    }
-    if (TEST_PASSWORD_UTF8 == null) {
-      TEST_PASSWORD_UTF8 = TEST_PASSWORD.getBytes("UTF-8");
-    }
-    if (TEST_QUICK_STRETCHED_PW == null) {
-      TEST_QUICK_STRETCHED_PW = FxAccountUtils.generateQuickStretchedPW(TEST_EMAIL_UTF8, TEST_PASSWORD_UTF8);
-    }
-    if (TEST_UNWRAPKB == null) {
-      TEST_UNWRAPKB = FxAccountUtils.generateUnwrapBKey(TEST_QUICK_STRETCHED_PW);
-    }
-    client = new MockFxAccountClient();
-    sm = new FxAccountLoginStateMachine();
-  }
-
-  protected static class Trace {
-    public final LinkedList<State> states;
-    public final LinkedList<Transition> transitions;
-
-    public Trace(LinkedList<State> states, LinkedList<Transition> transitions) {
-      this.states = states;
-      this.transitions = transitions;
-    }
-
-    public void assertEquals(String string) {
-      Assert.assertArrayEquals(string.split(", "), toString().split(", "));
-    }
-
-    @Override
-    public String toString() {
-      final LinkedList<State> states = new LinkedList<State>(this.states);
-      final LinkedList<Transition> transitions = new LinkedList<Transition>(this.transitions);
-      LinkedList<String> names = new LinkedList<String>();
-      State state;
-      while ((state = states.pollFirst()) != null) {
-        names.add(state.getStateLabel().name());
-        Transition transition = transitions.pollFirst();
-        if (transition != null) {
-          names.add(">" + transition.toString());
-        }
-      }
-      return names.toString();
-    }
-
-    public String stateString() {
-      LinkedList<String> names = new LinkedList<String>();
-      for (State state : states) {
-        names.add(state.getStateLabel().name());
-      }
-      return names.toString();
-    }
-
-    public String transitionString() {
-      LinkedList<String> names = new LinkedList<String>();
-      for (Transition transition : transitions) {
-        names.add(transition.toString());
-      }
-      return names.toString();
-    }
-  }
-
-  protected Trace trace(final State initialState, final StateLabel desiredState) {
-    final LinkedList<Transition> transitions = new LinkedList<Transition>();
-    final LinkedList<State> states = new LinkedList<State>();
-    states.add(initialState);
-
-    WaitHelper.getTestWaiter().performWait(new Runnable() {
-      @Override
-      public void run() {
-        sm.advance(initialState, desiredState, new LoginStateMachineDelegate() {
-          @Override
-          public void handleTransition(Transition transition, State state) {
-            transitions.add(transition);
-            states.add(state);
-          }
-
-          @Override
-          public void handleFinal(State state) {
-            WaitHelper.getTestWaiter().performNotify();
-          }
-
-          @Override
-          public FxAccountClient getClient() {
-            return client;
-          }
-
-          @Override
-          public long getCertificateDurationInMilliseconds() {
-            return 30 * 1000;
-          }
-
-          @Override
-          public long getAssertionDurationInMilliseconds() {
-            return 10 * 1000;
-          }
-
-          @Override
-          public BrowserIDKeyPair generateKeyPair() throws NoSuchAlgorithmException {
-            return RSACryptoImplementation.generateKeyPair(512);
-          }
-        });
-      }
-    });
-
-    return new Trace(states, transitions);
-  }
-
-  @Test
-  public void testEnagedUnverified() throws Exception {
-    client.addUser(TEST_EMAIL, TEST_QUICK_STRETCHED_PW, false, TEST_SESSION_TOKEN, TEST_KEY_FETCH_TOKEN);
-    Trace trace = trace(new Engaged(TEST_EMAIL, "uid", true, TEST_UNWRAPKB, TEST_SESSION_TOKEN, TEST_KEY_FETCH_TOKEN), StateLabel.Married);
-    trace.assertEquals("[Engaged, >AccountNeedsVerification, Engaged]");
-  }
-
-  @Test
-  public void testEngagedTransitionToAccountVerified() throws Exception {
-    client.addUser(TEST_EMAIL, TEST_QUICK_STRETCHED_PW, true, TEST_SESSION_TOKEN, TEST_KEY_FETCH_TOKEN);
-    Trace trace = trace(new Engaged(TEST_EMAIL, "uid", false, TEST_UNWRAPKB, TEST_SESSION_TOKEN, TEST_KEY_FETCH_TOKEN), StateLabel.Married);
-    trace.assertEquals("[Engaged, >AccountVerified, Cohabiting, >LogMessage('sign succeeded'), Married]");
-  }
-
-  @Test
-  public void testEngagedVerified() throws Exception {
-    client.addUser(TEST_EMAIL, TEST_QUICK_STRETCHED_PW, true, TEST_SESSION_TOKEN, TEST_KEY_FETCH_TOKEN);
-    Trace trace = trace(new Engaged(TEST_EMAIL, "uid", true, TEST_UNWRAPKB, TEST_SESSION_TOKEN, TEST_KEY_FETCH_TOKEN), StateLabel.Married);
-    trace.assertEquals("[Engaged, >LogMessage('keys succeeded'), Cohabiting, >LogMessage('sign succeeded'), Married]");
-  }
-
-  @Test
-  public void testPartial() throws Exception {
-    client.addUser(TEST_EMAIL, TEST_QUICK_STRETCHED_PW, true, TEST_SESSION_TOKEN, TEST_KEY_FETCH_TOKEN);
-    // What if we stop at Cohabiting?
-    Trace trace = trace(new Engaged(TEST_EMAIL, "uid", true, TEST_UNWRAPKB, TEST_SESSION_TOKEN, TEST_KEY_FETCH_TOKEN), StateLabel.Cohabiting);
-    trace.assertEquals("[Engaged, >LogMessage('keys succeeded'), Cohabiting]");
-  }
-
-  @Test
-  public void testBadSessionToken() throws Exception {
-    client.addUser(TEST_EMAIL, TEST_QUICK_STRETCHED_PW, true, TEST_SESSION_TOKEN, TEST_KEY_FETCH_TOKEN);
-    client.sessionTokens.clear();
-    Trace trace = trace(new Engaged(TEST_EMAIL, "uid", true, TEST_UNWRAPKB, TEST_SESSION_TOKEN, TEST_KEY_FETCH_TOKEN), StateLabel.Married);
-    trace.assertEquals("[Engaged, >LogMessage('keys succeeded'), Cohabiting, >Log(<FxAccountClientRemoteException 401 [110]: invalid sessionToken>), Separated, >PasswordRequired, Separated]");
-  }
-
-  @Test
-  public void testBadKeyFetchToken() throws Exception {
-    client.addUser(TEST_EMAIL, TEST_QUICK_STRETCHED_PW, true, TEST_SESSION_TOKEN, TEST_KEY_FETCH_TOKEN);
-    client.keyFetchTokens.clear();
-    Trace trace = trace(new Engaged(TEST_EMAIL, "uid", true, TEST_UNWRAPKB, TEST_SESSION_TOKEN, TEST_KEY_FETCH_TOKEN), StateLabel.Married);
-    trace.assertEquals("[Engaged, >Log(<FxAccountClientRemoteException 401 [110]: invalid keyFetchToken>), Separated, >PasswordRequired, Separated]");
-  }
-
-  @Test
-  public void testMarried() throws Exception {
-    client.addUser(TEST_EMAIL, TEST_QUICK_STRETCHED_PW, true, TEST_SESSION_TOKEN, TEST_KEY_FETCH_TOKEN);
-    Trace trace = trace(new Engaged(TEST_EMAIL, "uid", true, TEST_UNWRAPKB, TEST_SESSION_TOKEN, TEST_KEY_FETCH_TOKEN), StateLabel.Married);
-    trace.assertEquals("[Engaged, >LogMessage('keys succeeded'), Cohabiting, >LogMessage('sign succeeded'), Married]");
-    // What if we're already in the desired state?
-    State married = trace.states.getLast();
-    Assert.assertEquals(StateLabel.Married, married.getStateLabel());
-    trace = trace(married, StateLabel.Married);
-    trace.assertEquals("[Married]");
-  }
-}
diff --git a/mobile/android/tests/background/junit4/src/org/mozilla/gecko/fxa/login/TestStateFactory.java.orig b/mobile/android/tests/background/junit4/src/org/mozilla/gecko/fxa/login/TestStateFactory.java.orig
deleted file mode 100644
index 40e3a95e44504..0000000000000
--- a/mobile/android/tests/background/junit4/src/org/mozilla/gecko/fxa/login/TestStateFactory.java.orig
+++ /dev/null
@@ -1,89 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
-   http://creativecommons.org/publicdomain/zero/1.0/ */
-
-package org.mozilla.gecko.fxa.login;
-
-import junit.framework.Assert;
-
-import org.junit.Test;
-import org.mozilla.gecko.browserid.BrowserIDKeyPair;
-import org.mozilla.gecko.browserid.DSACryptoImplementation;
-import org.mozilla.gecko.fxa.login.State.StateLabel;
-import org.mozilla.gecko.sync.ExtendedJSONObject;
-import org.mozilla.gecko.sync.Utils;
-
-public class TestStateFactory {
-  @Test
-  public void testGetStateV3() throws Exception {
-    MigratedFromSync11 migrated = new MigratedFromSync11("email", "uid", true, "password");
-
-    // For the current version, we expect to read back what we wrote.
-    ExtendedJSONObject o;
-    State state;
-
-    o = migrated.toJSONObject();
-    Assert.assertEquals(3, o.getLong("version").intValue());
-    state = StateFactory.fromJSONObject(migrated.stateLabel, o);
-    Assert.assertEquals(StateLabel.MigratedFromSync11, state.stateLabel);
-    Assert.assertEquals(o, state.toJSONObject());
-
-    // Null passwords are OK.
-    MigratedFromSync11 migratedNullPassword = new MigratedFromSync11("email", "uid", true, null);
-
-    o = migratedNullPassword.toJSONObject();
-    Assert.assertEquals(3, o.getLong("version").intValue());
-    state = StateFactory.fromJSONObject(migratedNullPassword.stateLabel, o);
-    Assert.assertEquals(StateLabel.MigratedFromSync11, state.stateLabel);
-    Assert.assertEquals(o, state.toJSONObject());
-  }
-
-  @Test
-  public void testGetStateV2() throws Exception {
-    byte[] sessionToken = Utils.generateRandomBytes(32);
-    byte[] kA = Utils.generateRandomBytes(32);
-    byte[] kB = Utils.generateRandomBytes(32);
-    BrowserIDKeyPair keyPair = DSACryptoImplementation.generateKeyPair(512);
-    Cohabiting cohabiting = new Cohabiting("email", "uid", sessionToken, kA, kB, keyPair);
-    String certificate = "certificate";
-    Married married = new Married("email", "uid", sessionToken, kA, kB, keyPair, certificate);
-
-    // For the current version, we expect to read back what we wrote.
-    ExtendedJSONObject o;
-    State state;
-
-    o = married.toJSONObject();
-    Assert.assertEquals(3, o.getLong("version").intValue());
-    state = StateFactory.fromJSONObject(married.stateLabel, o);
-    Assert.assertEquals(StateLabel.Married, state.stateLabel);
-    Assert.assertEquals(o, state.toJSONObject());
-
-    o = cohabiting.toJSONObject();
-    Assert.assertEquals(3, o.getLong("version").intValue());
-    state = StateFactory.fromJSONObject(cohabiting.stateLabel, o);
-    Assert.assertEquals(StateLabel.Cohabiting, state.stateLabel);
-    Assert.assertEquals(o, state.toJSONObject());
-  }
-
-  @Test
-  public void testGetStateV1() throws Exception {
-    // We can't rely on generating correct V1 objects (since the generation code
-    // may change); so we hard code a few test examples here. These examples
-    // have RSA key pairs; when they're parsed, we return DSA key pairs.
-    ExtendedJSONObject o = new ExtendedJSONObject("{\"uid\":\"uid\",\"sessionToken\":\"4e2830da6ce466ddb401fbca25b96a621209eea83851254800f84cc4069ef011\",\"certificate\":\"certificate\",\"keyPair\":{\"publicKey\":{\"e\":\"65537\",\"n\":\"7598360104379019497828904063491254083855849024432238665262988260947462372141971045236693389494635158997975098558915846889960089362159921622822266839560631\",\"algorithm\":\"RS\"},\"privateKey\":{\"d\":\"6807533330618101360064115400338014782301295929300445938471117364691566605775022173055292460962170873583673516346599808612503093914221141089102289381448225\",\"n\":\"7598360104379019497828904063491254083855849024432238665262988260947462372141971045236693389494635158997975098558915846889960089362159921622822266839560631\",\"algorithm\":\"RS\"}},\"email\":\"email\",\"verified\":true,\"kB\":\"0b048f285c19067f200da7bfbe734ed213cefcd8f543f0fdd4a8ccab48cbbc89\",\"kA\":\"59a9edf2d41de8b24e69df9133bc88e96913baa75421882f4c55d842d18fc8a1\",\"version\":1}");
-    // A Married state is regressed to a Cohabited state.
-    Cohabiting state = (Cohabiting) StateFactory.fromJSONObject(StateLabel.Married, o);
-
-    Assert.assertEquals(StateLabel.Cohabiting, state.stateLabel);
-    Assert.assertEquals("uid", state.uid);
-    Assert.assertEquals("4e2830da6ce466ddb401fbca25b96a621209eea83851254800f84cc4069ef011", Utils.byte2Hex(state.sessionToken));
-    Assert.assertEquals("DS128", state.keyPair.getPrivate().getAlgorithm());
-
-    o = new ExtendedJSONObject("{\"uid\":\"uid\",\"sessionToken\":\"4e2830da6ce466ddb401fbca25b96a621209eea83851254800f84cc4069ef011\",\"keyPair\":{\"publicKey\":{\"e\":\"65537\",\"n\":\"7598360104379019497828904063491254083855849024432238665262988260947462372141971045236693389494635158997975098558915846889960089362159921622822266839560631\",\"algorithm\":\"RS\"},\"privateKey\":{\"d\":\"6807533330618101360064115400338014782301295929300445938471117364691566605775022173055292460962170873583673516346599808612503093914221141089102289381448225\",\"n\":\"7598360104379019497828904063491254083855849024432238665262988260947462372141971045236693389494635158997975098558915846889960089362159921622822266839560631\",\"algorithm\":\"RS\"}},\"email\":\"email\",\"verified\":true,\"kB\":\"0b048f285c19067f200da7bfbe734ed213cefcd8f543f0fdd4a8ccab48cbbc89\",\"kA\":\"59a9edf2d41de8b24e69df9133bc88e96913baa75421882f4c55d842d18fc8a1\",\"version\":1}");
-    state = (Cohabiting) StateFactory.fromJSONObject(StateLabel.Cohabiting, o);
-
-    Assert.assertEquals(StateLabel.Cohabiting, state.stateLabel);
-    Assert.assertEquals("uid", state.uid);
-    Assert.assertEquals("4e2830da6ce466ddb401fbca25b96a621209eea83851254800f84cc4069ef011", Utils.byte2Hex(state.sessionToken));
-    Assert.assertEquals("DS128", state.keyPair.getPrivate().getAlgorithm());
-  }
-}
diff --git a/modules/libjar/moz.build b/modules/libjar/moz.build
index 170a92fd64cf9..c4f86a48491a2 100644
--- a/modules/libjar/moz.build
+++ b/modules/libjar/moz.build
@@ -47,3 +47,6 @@ SOURCES += [
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/modules/libjar/zipwriter/moz.build b/modules/libjar/zipwriter/moz.build
index f9f545d084718..1e0e15b02f20b 100644
--- a/modules/libjar/zipwriter/moz.build
+++ b/modules/libjar/zipwriter/moz.build
@@ -22,3 +22,6 @@ UNIFIED_SOURCES += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/modules/libmar/verify/moz.build b/modules/libmar/verify/moz.build
index 7a6a142273007..89f73237ef4f5 100644
--- a/modules/libmar/verify/moz.build
+++ b/modules/libmar/verify/moz.build
@@ -30,3 +30,5 @@ LOCAL_INCLUDES += [
     '../src',
 ]
 
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/modules/libpref/moz.build b/modules/libpref/moz.build
index ae83c93f425d8..42efa9e2dccff 100644
--- a/modules/libpref/moz.build
+++ b/modules/libpref/moz.build
@@ -42,3 +42,6 @@ FINAL_LIBRARY = 'xul'
 
 DEFINES['OS_ARCH'] = CONFIG['OS_ARCH']
 DEFINES['MOZ_WIDGET_TOOLKIT'] = CONFIG['MOZ_WIDGET_TOOLKIT']
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/mozglue/build/moz.build b/mozglue/build/moz.build
index 281d1b40008ba..58e2db6be1407 100644
--- a/mozglue/build/moz.build
+++ b/mozglue/build/moz.build
@@ -105,3 +105,6 @@ if CONFIG['OS_TARGET'] == 'Darwin':
     LDFLAGS += ['-Wl,-bind_at_load']
 
 DIST_INSTALL = True
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/mozglue/misc/moz.build b/mozglue/misc/moz.build
index f311ddac20dbc..cffe954f12f14 100644
--- a/mozglue/misc/moz.build
+++ b/mozglue/misc/moz.build
@@ -43,3 +43,6 @@ if CONFIG['MOZ_STACKWALKING']:
     SOURCES += [
         'StackWalk.cpp',
     ]
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/netwerk/streamconv/moz.build b/netwerk/streamconv/moz.build
index b9274f73b8e42..b49b0f172765d 100644
--- a/netwerk/streamconv/moz.build
+++ b/netwerk/streamconv/moz.build
@@ -23,3 +23,6 @@ SOURCES += [
 XPIDL_MODULE = 'necko_strconv'
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/netwerk/system/android/moz.build b/netwerk/system/android/moz.build
index d5e7829e211c0..fd68f82f11c16 100644
--- a/netwerk/system/android/moz.build
+++ b/netwerk/system/android/moz.build
@@ -13,3 +13,5 @@ LOCAL_INCLUDES += [
     '/netwerk/base',
 ]
 
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/netwerk/system/linux/moz.build b/netwerk/system/linux/moz.build
index ae993426f7b97..337f73150ce89 100644
--- a/netwerk/system/linux/moz.build
+++ b/netwerk/system/linux/moz.build
@@ -10,3 +10,6 @@ if CONFIG['OS_ARCH'] == 'Linux':
     ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/netwerk/system/qt/moz.build b/netwerk/system/qt/moz.build
index cc8b5ef5fbc76..59382ffcbf513 100644
--- a/netwerk/system/qt/moz.build
+++ b/netwerk/system/qt/moz.build
@@ -16,3 +16,6 @@ LOCAL_INCLUDES += [
 ]
 
 CXXFLAGS += CONFIG['MOZ_QT_CFLAGS']
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/rdf/build/moz.build b/rdf/build/moz.build
index 98371dcfac2de..cd79eb70112b2 100644
--- a/rdf/build/moz.build
+++ b/rdf/build/moz.build
@@ -18,3 +18,6 @@ LOCAL_INCLUDES += [
     '/rdf/base',
     '/rdf/datasource',
 ]
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/rdf/datasource/moz.build b/rdf/datasource/moz.build
index a668d5e18e21d..e5d8664774f02 100644
--- a/rdf/datasource/moz.build
+++ b/rdf/datasource/moz.build
@@ -21,5 +21,7 @@ LOCAL_INCLUDES += [
     '/rdf/base',
 ]
 
-if not CONFIG['GNU_CXX']:
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
+else:
     ALLOW_COMPILER_WARNINGS = True
diff --git a/rdf/tests/rdfcat/moz.build b/rdf/tests/rdfcat/moz.build
index 98a83846800ab..d32389d4274a9 100644
--- a/rdf/tests/rdfcat/moz.build
+++ b/rdf/tests/rdfcat/moz.build
@@ -11,3 +11,6 @@ SOURCES += [
 ]
 
 CXXFLAGS += CONFIG['TK_CFLAGS']
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/rdf/tests/rdfpoll/moz.build b/rdf/tests/rdfpoll/moz.build
index dc81d64d72eda..66745e826c4c1 100644
--- a/rdf/tests/rdfpoll/moz.build
+++ b/rdf/tests/rdfpoll/moz.build
@@ -9,3 +9,6 @@ GeckoProgram('rdfpoll', linkage='dependent')
 SOURCES += [
     'rdfpoll.cpp',
 ]
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/rdf/tests/triplescat/moz.build b/rdf/tests/triplescat/moz.build
index 28ed7816d6ae3..cbe79491e3692 100644
--- a/rdf/tests/triplescat/moz.build
+++ b/rdf/tests/triplescat/moz.build
@@ -11,3 +11,6 @@ SOURCES += [
 ]
 
 CXXFLAGS += CONFIG['TK_CFLAGS']
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/toolkit/components/alerts/moz.build b/toolkit/components/alerts/moz.build
index f1df9016a8828..0640b465203d0 100644
--- a/toolkit/components/alerts/moz.build
+++ b/toolkit/components/alerts/moz.build
@@ -25,3 +25,6 @@ JAR_MANIFESTS += ['jar.mn']
 
 with Files('**'):
     BUG_COMPONENT = ('Toolkit', 'Notifications and Alerts')
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/toolkit/components/autocomplete/moz.build b/toolkit/components/autocomplete/moz.build
index 84ed033413bfb..930e8ce3048e0 100644
--- a/toolkit/components/autocomplete/moz.build
+++ b/toolkit/components/autocomplete/moz.build
@@ -26,3 +26,6 @@ FINAL_LIBRARY = 'xul'
 
 with Files('**'):
     BUG_COMPONENT = ('Toolkit', 'Autocomplete')
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/toolkit/components/build/moz.build b/toolkit/components/build/moz.build
index f3feb42349004..f6786438c5882 100644
--- a/toolkit/components/build/moz.build
+++ b/toolkit/components/build/moz.build
@@ -37,3 +37,6 @@ if CONFIG['NIGHTLY_BUILD']:
     LOCAL_INCLUDES += [
         '../perfmonitoring',
     ]
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/toolkit/components/commandlines/moz.build b/toolkit/components/commandlines/moz.build
index 060f223c86b85..7877b4db59989 100644
--- a/toolkit/components/commandlines/moz.build
+++ b/toolkit/components/commandlines/moz.build
@@ -28,3 +28,6 @@ FINAL_LIBRARY = 'xul'
 
 with Files('**'):
     BUG_COMPONENT = ('Toolkit', 'Startup and Profile System')
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/toolkit/components/ctypes/moz.build b/toolkit/components/ctypes/moz.build
index 616f5737c61bd..364352612cf88 100644
--- a/toolkit/components/ctypes/moz.build
+++ b/toolkit/components/ctypes/moz.build
@@ -22,3 +22,6 @@ FINAL_LIBRARY = 'xul'
 
 with Files('**'):
     BUG_COMPONENT = ('Core', 'js-ctypes')
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/toolkit/components/ctypes/tests/moz.build b/toolkit/components/ctypes/tests/moz.build
index 030d6e2ec7508..4971524ee454e 100644
--- a/toolkit/components/ctypes/tests/moz.build
+++ b/toolkit/components/ctypes/tests/moz.build
@@ -20,3 +20,6 @@ SharedLibrary('jsctypes-test')
 LOCAL_INCLUDES += [
     '/js/src/ctypes',
 ]
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/toolkit/components/diskspacewatcher/moz.build b/toolkit/components/diskspacewatcher/moz.build
index d5b03fba16402..29f382c44c589 100644
--- a/toolkit/components/diskspacewatcher/moz.build
+++ b/toolkit/components/diskspacewatcher/moz.build
@@ -21,3 +21,6 @@ SOURCES = [
 include('/ipc/chromium/chromium-config.mozbuild')
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/toolkit/components/filepicker/moz.build b/toolkit/components/filepicker/moz.build
index aa6bce8a4d932..9324c5ace5ad9 100644
--- a/toolkit/components/filepicker/moz.build
+++ b/toolkit/components/filepicker/moz.build
@@ -25,3 +25,6 @@ if CONFIG['MOZ_XUL'] and \
         FINAL_LIBRARY = 'xul'
 
 JAR_MANIFESTS += ['jar.mn']
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/toolkit/components/finalizationwitness/moz.build b/toolkit/components/finalizationwitness/moz.build
index 10f772f9f08b0..11e93f7f73807 100644
--- a/toolkit/components/finalizationwitness/moz.build
+++ b/toolkit/components/finalizationwitness/moz.build
@@ -23,3 +23,6 @@ LOCAL_INCLUDES += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/toolkit/components/find/moz.build b/toolkit/components/find/moz.build
index 9025febf78001..db0508834c8cb 100644
--- a/toolkit/components/find/moz.build
+++ b/toolkit/components/find/moz.build
@@ -15,3 +15,6 @@ SOURCES += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/toolkit/components/jsdownloads/src/moz.build b/toolkit/components/jsdownloads/src/moz.build
index 382175124aa83..d42aca478e22f 100644
--- a/toolkit/components/jsdownloads/src/moz.build
+++ b/toolkit/components/jsdownloads/src/moz.build
@@ -29,3 +29,6 @@ EXTRA_PP_JS_MODULES += [
 FINAL_LIBRARY = 'xul'
 
 CXXFLAGS += CONFIG['TK_CFLAGS']
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/toolkit/components/osfile/moz.build b/toolkit/components/osfile/moz.build
index a93ea550cd9c1..5b9b760497bbf 100644
--- a/toolkit/components/osfile/moz.build
+++ b/toolkit/components/osfile/moz.build
@@ -33,3 +33,6 @@ FINAL_LIBRARY = 'xul'
 
 with Files('**'):
     BUG_COMPONENT = ('Toolkit', 'OS.File')
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/toolkit/components/parentalcontrols/moz.build b/toolkit/components/parentalcontrols/moz.build
index a410ed943b59f..03106c1755884 100644
--- a/toolkit/components/parentalcontrols/moz.build
+++ b/toolkit/components/parentalcontrols/moz.build
@@ -29,3 +29,6 @@ if not CONFIG['MOZ_DISABLE_PARENTAL_CONTROLS']:
         ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/toolkit/components/perf/moz.build b/toolkit/components/perf/moz.build
index 2c90adf5bdd91..f386a51b03185 100644
--- a/toolkit/components/perf/moz.build
+++ b/toolkit/components/perf/moz.build
@@ -19,3 +19,6 @@ LOCAL_INCLUDES += [
 ]
 
 MOCHITEST_CHROME_MANIFESTS += ['chrome.ini']
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/toolkit/components/reflect/moz.build b/toolkit/components/reflect/moz.build
index 9d636c744dafa..1c6bc80e92c7f 100644
--- a/toolkit/components/reflect/moz.build
+++ b/toolkit/components/reflect/moz.build
@@ -13,3 +13,6 @@ EXTRA_JS_MODULES += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/toolkit/components/satchel/moz.build b/toolkit/components/satchel/moz.build
index 4c62e9e89a750..7d0d440d13814 100644
--- a/toolkit/components/satchel/moz.build
+++ b/toolkit/components/satchel/moz.build
@@ -48,3 +48,6 @@ EXTRA_PP_JS_MODULES += [
 FINAL_LIBRARY = 'xul'
 
 JAR_MANIFESTS += ['jar.mn']
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/toolkit/components/startup/moz.build b/toolkit/components/startup/moz.build
index bafe74938d3fc..29cd633dea845 100644
--- a/toolkit/components/startup/moz.build
+++ b/toolkit/components/startup/moz.build
@@ -36,3 +36,6 @@ FINAL_LIBRARY = 'xul'
 
 with Files('**'):
     BUG_COMPONENT = ('Toolkit', 'Startup and Profile System')
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/toolkit/components/statusfilter/moz.build b/toolkit/components/statusfilter/moz.build
index de203f921a15c..d01d7597d0beb 100644
--- a/toolkit/components/statusfilter/moz.build
+++ b/toolkit/components/statusfilter/moz.build
@@ -9,3 +9,6 @@ SOURCES += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/toolkit/components/terminator/moz.build b/toolkit/components/terminator/moz.build
index dfec2b6cf407d..c6723f36f5c83 100644
--- a/toolkit/components/terminator/moz.build
+++ b/toolkit/components/terminator/moz.build
@@ -20,3 +20,6 @@ EXTRA_COMPONENTS += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/toolkit/components/typeaheadfind/moz.build b/toolkit/components/typeaheadfind/moz.build
index 2f3432aaab672..5d454e766e5aa 100644
--- a/toolkit/components/typeaheadfind/moz.build
+++ b/toolkit/components/typeaheadfind/moz.build
@@ -20,3 +20,6 @@ JAR_MANIFESTS += ['jar.mn']
 
 with Files('**'):
     BUG_COMPONENT = ('Toolkit', 'Find Toolbar')
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/toolkit/components/workerlz4/moz.build b/toolkit/components/workerlz4/moz.build
index 1a4d3d62d8b78..bae3b55e94041 100644
--- a/toolkit/components/workerlz4/moz.build
+++ b/toolkit/components/workerlz4/moz.build
@@ -16,3 +16,6 @@ SOURCES += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/toolkit/system/androidproxy/moz.build b/toolkit/system/androidproxy/moz.build
index 2ec4211c1077d..3e053920da57f 100644
--- a/toolkit/system/androidproxy/moz.build
+++ b/toolkit/system/androidproxy/moz.build
@@ -9,3 +9,6 @@ SOURCES += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/toolkit/system/gnome/moz.build b/toolkit/system/gnome/moz.build
index 3f4e3005d4cc5..1b168f4de8afb 100644
--- a/toolkit/system/gnome/moz.build
+++ b/toolkit/system/gnome/moz.build
@@ -40,3 +40,6 @@ OS_LIBS += CONFIG['MOZ_GCONF_LIBS']
 OS_LIBS += CONFIG['GLIB_LIBS']
 OS_LIBS += CONFIG['MOZ_GIO_LIBS']
 OS_LIBS += CONFIG['MOZ_DBUS_GLIB_LIBS']
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/toolkit/system/unixproxy/moz.build b/toolkit/system/unixproxy/moz.build
index 8966d5f8459d0..83852b572809e 100644
--- a/toolkit/system/unixproxy/moz.build
+++ b/toolkit/system/unixproxy/moz.build
@@ -15,3 +15,6 @@ else:
     ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/uriloader/base/moz.build b/uriloader/base/moz.build
index 99f69e3cc7722..1af2fe5596c2f 100644
--- a/uriloader/base/moz.build
+++ b/uriloader/base/moz.build
@@ -29,3 +29,6 @@ UNIFIED_SOURCES += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/widget/android/jni/moz.build b/widget/android/jni/moz.build
index 451e5ed774620..0204b699431f9 100644
--- a/widget/android/jni/moz.build
+++ b/widget/android/jni/moz.build
@@ -21,3 +21,6 @@ FINAL_LIBRARY = 'xul'
 LOCAL_INCLUDES += [
     '/widget/android',
 ]
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/widget/qt/moz.build b/widget/qt/moz.build
index 8003864d95598..da9760475d252 100644
--- a/widget/qt/moz.build
+++ b/widget/qt/moz.build
@@ -64,3 +64,6 @@ CXXFLAGS += CONFIG['MOZ_QT_CFLAGS']
 CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS']
 CFLAGS += CONFIG['MOZ_QT_CFLAGS']
 CFLAGS += CONFIG['MOZ_CAIRO_CFLAGS']
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/widget/uikit/moz.build b/widget/uikit/moz.build
index 7fa343c9dfac1..2953414e9e3b6 100644
--- a/widget/uikit/moz.build
+++ b/widget/uikit/moz.build
@@ -17,3 +17,6 @@ FINAL_LIBRARY = 'xul'
 LOCAL_INCLUDES += [
     '/widget',
 ]
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/widget/xremoteclient/moz.build b/widget/xremoteclient/moz.build
index 870812864e3ed..2814a2d05efc7 100644
--- a/widget/xremoteclient/moz.build
+++ b/widget/xremoteclient/moz.build
@@ -9,3 +9,6 @@ FINAL_LIBRARY = 'xul'
 SOURCES += [
     'XRemoteClient.cpp',
 ]
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/xpcom/glue/tests/gtest/moz.build b/xpcom/glue/tests/gtest/moz.build
index ac4e952d90ec5..ac04a0b87f9f1 100644
--- a/xpcom/glue/tests/gtest/moz.build
+++ b/xpcom/glue/tests/gtest/moz.build
@@ -16,3 +16,6 @@ LOCAL_INCLUDES = [
 ]
 
 FINAL_LIBRARY = 'xul-gtest'
+
+if CONFIG['CLANG_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/xpcom/reflect/xptcall/moz.build b/xpcom/reflect/xptcall/moz.build
index 9788c9b81c332..3e8d0ed4305ca 100644
--- a/xpcom/reflect/xptcall/moz.build
+++ b/xpcom/reflect/xptcall/moz.build
@@ -21,3 +21,6 @@ LOCAL_INCLUDES += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/xpcom/reflect/xptinfo/moz.build b/xpcom/reflect/xptinfo/moz.build
index 8391818219f96..594fa18dc5a14 100644
--- a/xpcom/reflect/xptinfo/moz.build
+++ b/xpcom/reflect/xptinfo/moz.build
@@ -32,3 +32,6 @@ LOCAL_INCLUDES += [
 ]
 
 FINAL_LIBRARY = 'xul'
+
+if CONFIG['CLANG_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/xpcom/system/moz.build b/xpcom/system/moz.build
index 330bf28f666a2..d5713084d8cfb 100644
--- a/xpcom/system/moz.build
+++ b/xpcom/system/moz.build
@@ -25,3 +25,5 @@ if CONFIG['MOZ_CRASHREPORTER']:
 
 XPIDL_MODULE = 'xpcom_system'
 
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/xpcom/tests/component/moz.build b/xpcom/tests/component/moz.build
index 7b08236a33476..1ccf099839318 100644
--- a/xpcom/tests/component/moz.build
+++ b/xpcom/tests/component/moz.build
@@ -21,3 +21,6 @@ DEFINES['LIBRARY_FILENAME'] = '%s%s%s' % (
 # Need to link with CoreFoundation on Mac
 if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
     OS_LIBS += CONFIG['TK_LIBS']
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/xpcom/tests/component_no_aslr/moz.build b/xpcom/tests/component_no_aslr/moz.build
index 5f1ca48b553a0..cf5d7b2712d93 100644
--- a/xpcom/tests/component_no_aslr/moz.build
+++ b/xpcom/tests/component_no_aslr/moz.build
@@ -21,3 +21,6 @@ DEFINES['LIBRARY_FILENAME'] = '%s%s%s' % (
 # Need to link with CoreFoundation on Mac
 if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
     OS_LIBS += CONFIG['TK_LIBS']
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
diff --git a/xulrunner/examples/simple/components/src/moz.build b/xulrunner/examples/simple/components/src/moz.build
index 730f80b90f023..153bfdd0cfcb5 100644
--- a/xulrunner/examples/simple/components/src/moz.build
+++ b/xulrunner/examples/simple/components/src/moz.build
@@ -16,3 +16,6 @@ EXTRA_COMPONENTS += [
 ]
 
 XPI_NAME = 'simple'
+
+if CONFIG['GNU_CXX']:
+    CXXFLAGS += ['-Wshadow']
-- 
GitLab