From bb191417790fa56222648f0099032879f67f98bd Mon Sep 17 00:00:00 2001 From: Eric Fiselier Date: Mon, 27 Oct 2014 22:14:25 +0000 Subject: [PATCH] Add special case handling of linux target triples that do not contain `-gnu`. For targets that end it `redhat-linux` and `suse-linux` manually add the `-gnu` section of the target since `linux-gnu` is needed in the testsuite. This patch also moves the removal of minor and patchlevel numbers from OSX triples to be handled when deducing the triple instead of when adding available features. llvm-svn: 220724 --- libcxx/test/lit.cfg | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/libcxx/test/lit.cfg b/libcxx/test/lit.cfg index d9d4152..8307b0c 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) -- 2.7.4