[libcxx-commits] [PATCH] D77190: [libc++abi] Fix remote execution of .sh.cpp tests

Louis Dionne via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Wed Apr 1 07:41:22 PDT 2020


This revision was automatically updated to reflect the committed changes.
Closed by commit rGfee0026fc7eb: [libc++abi] Fix remote execution of .sh.cpp tests (authored by broadwaylamb, committed by ldionne).

Changed prior to commit:
  https://reviews.llvm.org/D77190?vs=254069&id=254195#toc

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D77190/new/

https://reviews.llvm.org/D77190

Files:
  libcxx/utils/libcxx/compiler.py
  libcxx/utils/libcxx/test/config.py
  libcxx/utils/libcxx/test/format.py
  libcxx/utils/ssh.py
  libcxxabi/test/incomplete_type.sh.cpp


Index: libcxxabi/test/incomplete_type.sh.cpp
===================================================================
--- libcxxabi/test/incomplete_type.sh.cpp
+++ libcxxabi/test/incomplete_type.sh.cpp
@@ -15,14 +15,15 @@
 
 // UNSUPPORTED: libcxxabi-no-exceptions
 
-// NOTE: Pass -lc++abi explicitly and before -lc++ so that -lc++ doesn't drag
+// NOTE: Link libc++abi explicitly and before libc++ so that libc++ doesn't drag
 // in the system libc++abi installation on OS X. (DYLD_LIBRARY_PATH is ignored
 // for shell tests because of Apple security features).
 
+// FILE_DEPENDENCIES: %t.exe
 // RUN: %{cxx} %{flags} %{compile_flags} -c %s -o %t.one.o
 // RUN: %{cxx} %{flags} %{compile_flags} -c %s -o %t.two.o -DTU_ONE
-// RUN: %{cxx} %{flags} %t.one.o %t.two.o -lc++abi %{link_flags} -o %t.exe
-// RUN: %t.exe
+// RUN: %{cxx} %{flags} %t.one.o %t.two.o %{link_libcxxabi} %{link_flags} -o %t.exe
+// RUN: %{exec} %t.exe
 
 #include <stdio.h>
 #include <cstring>
Index: libcxx/utils/ssh.py
===================================================================
--- libcxx/utils/ssh.py
+++ libcxx/utils/ssh.py
@@ -15,6 +15,7 @@
 
 import argparse
 import os
+import posixpath
 import subprocess
 import sys
 
@@ -53,7 +54,7 @@
     scp = lambda src, dst: ['scp', '-oBatchMode=yes', '-r', src, '{}:{}'.format(args.host, dst)]
 
     # Create a temporary directory where the test will be run
-    tmp = subprocess.check_output(ssh('mktemp -d /tmp/libcxx.XXXXXXXXXX')).strip()
+    tmp = subprocess.check_output(ssh('mktemp -d /tmp/libcxx.XXXXXXXXXX'), universal_newlines=True).strip()
 
     # Ensure the test dependencies exist and scp them to the temporary directory.
     # Test dependencies can be either files or directories, so the `scp` command
@@ -68,7 +69,7 @@
     # We know it has been copied to the remote host when we handled the test
     # dependencies above.
     if exe:
-        exe = os.path.join(tmp, os.path.basename(exe))
+        exe = posixpath.join(tmp, os.path.basename(exe))
 
     # If there's an executable, make sure it has 'execute' permissions on the
     # remote host. The host that compiled the executable might not have a notion
Index: libcxx/utils/libcxx/test/format.py
===================================================================
--- libcxx/utils/libcxx/test/format.py
+++ libcxx/utils/libcxx/test/format.py
@@ -125,8 +125,8 @@
             lit_config.fatal('Unsupported RUN line found in test %s' % name)
 
         tmpDir, tmpBase = lit.TestRunner.getTempPaths(test)
-        substitutions = lit.TestRunner.getDefaultSubstitutions(test, tmpDir,
-                                                               tmpBase)
+        substitutions = lit.TestRunner.getDefaultSubstitutions(
+            test, tmpDir, tmpBase, normalize_slashes=self.execute_external)
 
         # Apply substitutions in FILE_DEPENDENCIES markup
         data_files = lit.TestRunner.applySubstitutions(test.file_dependencies, substitutions,
Index: libcxx/utils/libcxx/test/config.py
===================================================================
--- libcxx/utils/libcxx/test/config.py
+++ libcxx/utils/libcxx/test/config.py
@@ -822,6 +822,7 @@
                     if cxxabi_library_root:
                         libname = self.make_static_lib_name('c++abi')
                         abs_path = os.path.join(cxxabi_library_root, libname)
+                        self.cxx.link_libcxxabi_flag = abs_path
                         self.cxx.link_flags += [abs_path]
                     else:
                         self.cxx.link_flags += ['-lc++abi']
@@ -1025,6 +1026,7 @@
         sub.append(('%{flags}',         ' '.join(map(pipes.quote, self.cxx.flags))))
         sub.append(('%{compile_flags}', ' '.join(map(pipes.quote, self.cxx.compile_flags))))
         sub.append(('%{link_flags}',    ' '.join(map(pipes.quote, self.cxx.link_flags))))
+        sub.append(('%{link_libcxxabi}', pipes.quote(self.cxx.link_libcxxabi_flag)))
         if self.cxx.isVerifySupported():
             sub.append(('%{verify}', ' '.join(self.cxx.verify_flags)))
         # Add compile and build shortcuts
Index: libcxx/utils/libcxx/compiler.py
===================================================================
--- libcxx/utils/libcxx/compiler.py
+++ libcxx/utils/libcxx/compiler.py
@@ -29,6 +29,7 @@
         self.flags = list(flags or [])
         self.compile_flags = list(compile_flags or [])
         self.link_flags = list(link_flags or [])
+        self.link_libcxxabi_flag = '-lc++abi'
         self.warning_flags = list(warning_flags or [])
         self.verify_supported = verify_supported
         self.use_verify = use_verify


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D77190.254195.patch
Type: text/x-patch
Size: 4643 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20200401/be01746c/attachment.bin>


More information about the libcxx-commits mailing list