diff --git a/src/buildtools/third_party/libc++/BUILD.gn b/src/buildtools/third_party/libc++/BUILD.gn
index 01f5a1713c..95e9045022 100644
--- a/src/buildtools/third_party/libc++/BUILD.gn
+++ b/src/buildtools/third_party/libc++/BUILD.gn
@@ -136,8 +136,6 @@ target(_libcxx_target_type, "libc++") {
   }
   configs -= [
     "//build/config/compiler:chromium_code",
-    "//build/config/compiler:no_exceptions",
-    "//build/config/compiler:no_rtti",
     "//build/config/coverage:default_coverage",
   ]
   if ((is_android || is_apple) && libcxx_is_shared) {
@@ -151,8 +149,6 @@ target(_libcxx_target_type, "libc++") {
   configs += [
     ":config",
     "//build/config/compiler:no_chromium_code",
-    "//build/config/compiler:exceptions",
-    "//build/config/compiler:rtti",
   ]
 
   if (libcxx_is_shared && !is_win) {
diff --git a/src/buildtools/third_party/libc++abi/BUILD.gn b/src/buildtools/third_party/libc++abi/BUILD.gn
index 40f1285f14..db291329a1 100644
--- a/src/buildtools/third_party/libc++abi/BUILD.gn
+++ b/src/buildtools/third_party/libc++abi/BUILD.gn
@@ -93,4 +93,34 @@ source_set("libc++abi") {
 
   # libc++abi depends on libc++ internals.
   include_dirs = [ "../libc++/trunk/src" ]
+  if (!is_apple) {
+    sources -= [
+      "trunk/src/cxa_exception.cpp",
+      "trunk/src/cxa_personality.cpp",
+      "trunk/src/private_typeinfo.cpp",
+    ]
+    sources += [
+      "trunk/src/cxa_noexception.cpp",
+    ]
+    defines += [ "_LIBCXXABI_NO_EXCEPTIONS" ]
+    configs -= [
+      "//build/config/compiler:exceptions",
+      "//build/config/compiler:rtti",
+    ]
+    configs += [
+      "//build/config/compiler:no_exceptions",
+      "//build/config/compiler:no_rtti",
+    ]
+  }
+  if (is_android) {
+    sources += [
+      "trunk/src/private_typeinfo.cpp",
+    ]
+    configs -= [
+      "//build/config/compiler:no_rtti",
+    ]
+    configs += [
+      "//build/config/compiler:rtti",
+    ]
+  }
 }