[libcxx] r220724 - Add special case handling of linux target triples that do not contain `-gnu`.

Eric Fiselier eric at efcs.ca
Mon Oct 27 15:14:25 PDT 2014


Author: ericwf
Date: Mon Oct 27 17:14:25 2014
New Revision: 220724

URL: http://llvm.org/viewvc/llvm-project?rev=220724&view=rev
Log:
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.

Modified:
    libcxx/trunk/test/lit.cfg

Modified: libcxx/trunk/test/lit.cfg
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/lit.cfg?rev=220724&r1=220723&r2=220724&view=diff
==============================================================================
--- libcxx/trunk/test/lit.cfg (original)
+++ libcxx/trunk/test/lit.cfg Mon Oct 27 17:14:25 2014
@@ -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)
 





More information about the cfe-commits mailing list