Index: cfe/trunk/test/Index/crash-recovery-code-complete.c
===================================================================
--- cfe/trunk/test/Index/crash-recovery-code-complete.c
+++ cfe/trunk/test/Index/crash-recovery-code-complete.c
@@ -10,5 +10,6 @@
 
 // FIXME: Please investigate abnormal path in MemoryBuffer.
 // REQUIRES: can-remove-opened-file
+// UNSUPPORTED: libstdcxx-safe-mode
 
 #warning parsing original file
Index: cfe/trunk/test/Index/crash-recovery-modules.m
===================================================================
--- cfe/trunk/test/Index/crash-recovery-modules.m
+++ cfe/trunk/test/Index/crash-recovery-modules.m
@@ -4,7 +4,7 @@
 // Parse the file, such that building the module will cause Clang to crash.
 // RUN: not env CINDEXTEST_FAILONERROR=1 c-index-test -test-load-source all -fmodules -fmodules-cache-path=%t -Xclang -fdisable-module-hash -I %S/Inputs/Headers -DCRASH %s > /dev/null 2> %t.err
 // RUN: FileCheck < %t.err -check-prefix=CHECK-CRASH %s
-// CHECK-CRASH: crash-recovery-modules.m:16:9:{16:2-16:14}: fatal error: could not build module 'Crash'
+// CHECK-CRASH: crash-recovery-modules.m:17:9:{17:2-17:14}: fatal error: could not build module 'Crash'
 
 // Parse the file again, without crashing, to make sure that
 // subsequent parses do the right thing.
@@ -12,6 +12,7 @@
 
 // REQUIRES: crash-recovery
 // REQUIRES: shell
+// UNSUPPORTED: libstdcxx-safe-mode
 
 @import Crash;
 
Index: cfe/trunk/test/Index/crash-recovery-reparse.c
===================================================================
--- cfe/trunk/test/Index/crash-recovery-reparse.c
+++ cfe/trunk/test/Index/crash-recovery-reparse.c
@@ -7,5 +7,6 @@
 // CHECK-REPARSE-SOURCE-CRASH: Unable to reparse translation unit
 //
 // REQUIRES: crash-recovery
+// UNSUPPORTED: libstdcxx-safe-mode
 
 #warning parsing original file
Index: cfe/trunk/test/Index/crash-recovery.c
===================================================================
--- cfe/trunk/test/Index/crash-recovery.c
+++ cfe/trunk/test/Index/crash-recovery.c
@@ -4,5 +4,6 @@
 // RUN: env LIBCLANG_DISABLE_CRASH_RECOVERY=1 not --crash c-index-test -test-load-source all %s
 //
 // REQUIRES: crash-recovery
+// UNSUPPORTED: libstdcxx-safe-mode
 
 #pragma clang __debug crash
Index: cfe/trunk/test/lit.cfg
===================================================================
--- cfe/trunk/test/lit.cfg
+++ cfe/trunk/test/lit.cfg
@@ -440,7 +440,8 @@
 if platform.system() not in ['Windows']:
     config.available_features.add('can-remove-opened-file')
 
-# Returns set of available features, registered-target(s) and asserts.
+# Returns set of available features, registered-target(s), asserts and
+# compile definitions.
 def get_llvm_config_props():
     set_of_features = set()
 
@@ -449,6 +450,7 @@
             os.path.join(llvm_tools_dir, 'llvm-config'),
             '--assertion-mode',
             '--targets-built',
+            '--cxxflags'
             ],
         stdout=subprocess.PIPE,
         env=config.environment
@@ -463,6 +465,11 @@
     for arch in cmd.stdout.readline().decode('ascii').split():
         set_of_features.add(arch.lower() + '-registered-target')
 
+    # 3rd line contains compile definitions, search it to define if
+    # libstdc++ safe mode is set.
+    if re.search(r'-D_GLIBCXX_DEBUG\b', cmd.stdout.readline().decode('ascii')):
+        set_of_features.add('libstdcxx-safe-mode')
+
     return set_of_features
 
 config.available_features.update(get_llvm_config_props())