diff options
Diffstat (limited to 'libcxx/test')
| -rw-r--r-- | libcxx/test/lit.cfg | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/libcxx/test/lit.cfg b/libcxx/test/lit.cfg index d9d4152e4fc..8307b0c24fb 100644 --- a/libcxx/test/lit.cfg +++ b/libcxx/test/lit.cfg @@ -349,13 +349,8 @@ class Configuration(object): # markers for tests that are known to fail with versions of libc++ as # were shipped with a particular triple. if self.use_system_lib: - # Drop sub-major version components from the triple, because the - # current XFAIL handling expects exact matches for feature checks. - sanitized_triple = re.sub( - r"([^-]+)-([^-]+)-([^-.]+).*", r"\1-\2-\3", - self.config.target_triple) self.config.available_features.add( - 'with_system_lib=%s' % sanitized_triple) + 'with_system_lib=%s' % self.config.target_triple) if 'libcpp-has-no-threads' in self.config.available_features: self.compile_flags += ['-D_LIBCPP_HAS_NO_THREADS'] @@ -456,8 +451,22 @@ class Configuration(object): # If no target triple was given, try to infer it from the compiler # under test. if not self.config.target_triple: - self.config.target_triple = lit.util.capture( + target_triple = lit.util.capture( [self.cxx, '-dumpmachine']).strip() + # Drop sub-major version components from the triple, because the + # current XFAIL handling expects exact matches for feature checks. + # Example: x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu. + # The 5th group handles triples greater than 3 parts + # (ex x86_64-pc-linux-gnu). + target_triple = re.sub(r'([^-]+)-([^-]+)-([^.]+)([^-]*)(.*)', + r'\1-\2-\3\5', target_triple) + # linux-gnu is needed in the triple to properly identify linuxes + # that use GLIBC. Handle redhat and opensuse triples as special + # cases and append the missing `-gnu` portion. + if target_triple.endswith('redhat-linux') or \ + target_triple.endswith('suse-linux'): + target_triple += '-gnu' + self.config.target_triple = target_triple self.lit_config.note( "inferred target_triple as: %r" % self.config.target_triple) |

