[Lldb-commits] [lldb] r355502 - [lldb] [test] Pass appropriate -L&-Wl, -rpath for libc++ on NetBSD

Michal Gorny via lldb-commits lldb-commits at lists.llvm.org
Wed Mar 6 06:03:19 PST 2019


Author: mgorny
Date: Wed Mar  6 06:03:18 2019
New Revision: 355502

URL: http://llvm.org/viewvc/llvm-project?rev=355502&view=rev
Log:
[lldb] [test] Pass appropriate -L&-Wl,-rpath for libc++ on NetBSD

Pass appropriate -L and -Wl,-rpath flags pointing out to the LLVM
library directory on NetBSD.  This is necessary since clang on NetBSD
requires libc++ but it is not installed as part of the system
by default.  For the purpose of running buildbot, we want LLDB to use
just-built libc++.

Differential Revision: https://reviews.llvm.org/D58630

Modified:
    lldb/trunk/lit/BuildScript/toolchain-clang.test
    lldb/trunk/lit/Suite/lit.cfg
    lldb/trunk/lit/helper/build.py
    lldb/trunk/lit/helper/toolchain.py
    lldb/trunk/packages/Python/lldbsuite/test/make/Makefile.rules

Modified: lldb/trunk/lit/BuildScript/toolchain-clang.test
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/BuildScript/toolchain-clang.test?rev=355502&r1=355501&r2=355502&view=diff
==============================================================================
--- lldb/trunk/lit/BuildScript/toolchain-clang.test (original)
+++ lldb/trunk/lit/BuildScript/toolchain-clang.test Wed Mar  6 06:03:18 2019
@@ -10,5 +10,5 @@ CHECK: compiling foobar.c -> foo.exe-foo
 CHECK-32: {{.*}}clang++{{(.exe)?}} -m32 -g -O0 -c -o {{.*}}foo.exe-foobar.o {{.*}}foobar.c
 CHECK-64: {{.*}}clang++{{(.exe)?}} -m64 -g -O0 -c -o {{.*}}foo.exe-foobar.o {{.*}}foobar.c
 CHECK: linking foo.exe-foobar.o -> foo.exe
-CHECK-32: {{.*}}clang++{{(.exe)?}} -m32 -o {{.*}}foo.exe {{.*}}foo.exe-foobar.o
-CHECK-64: {{.*}}clang++{{(.exe)?}} -m64 -o {{.*}}foo.exe {{.*}}foo.exe-foobar.o
+CHECK-32: {{.*}}clang++{{(.exe)?}} -m32 {{(-L.*)? (-Wl,-rpath,.*)?}} -o {{.*}}foo.exe {{.*}}foo.exe-foobar.o
+CHECK-64: {{.*}}clang++{{(.exe)?}} -m64 {{(-L.*)? (-Wl,-rpath,.*)?}} -o {{.*}}foo.exe {{.*}}foo.exe-foobar.o

Modified: lldb/trunk/lit/Suite/lit.cfg
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Suite/lit.cfg?rev=355502&r1=355501&r2=355502&view=diff
==============================================================================
--- lldb/trunk/lit/Suite/lit.cfg (original)
+++ lldb/trunk/lit/Suite/lit.cfg Wed Mar  6 06:03:18 2019
@@ -65,6 +65,10 @@ dotest_cmd.extend(config.dotest_args_str
 if config.dotest_lit_args_str:
   dotest_cmd.extend(shlex.split(config.dotest_lit_args_str))
 
+# Library path may be needed to locate just-built clang.
+if config.llvm_libs_dir:
+  dotest_cmd += ['--env', 'LLVM_LIBS_DIR=' + config.llvm_libs_dir]
+
 # Load LLDB test format.
 sys.path.append(os.path.join(config.lldb_src_root, "lit", "Suite"))
 import lldbtest

Modified: lldb/trunk/lit/helper/build.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/helper/build.py?rev=355502&r1=355501&r2=355502&view=diff
==============================================================================
--- lldb/trunk/lit/helper/build.py (original)
+++ lldb/trunk/lit/helper/build.py Wed Mar  6 06:03:18 2019
@@ -35,6 +35,13 @@ parser.add_argument('--compiler',
                     required=True,
                     help='Path to a compiler executable, or one of the values [any, msvc, clang-cl, gcc, clang]')
 
+parser.add_argument('--libs-dir',
+                    metavar='directory',
+                    dest='libs_dir',
+                    required=False,
+                    action='append',
+                    help='If specified, a path to linked libraries to be passed via -L')
+
 parser.add_argument('--tools-dir',
                     metavar='directory',
                     dest='tools_dir',
@@ -225,6 +232,7 @@ class Builder(object):
         self.nodefaultlib = args.nodefaultlib
         self.verbose = args.verbose
         self.obj_ext = obj_ext
+        self.lib_paths = args.libs_dir
 
     def _exe_file_name(self):
         assert self.mode != 'compile'
@@ -650,6 +658,9 @@ class GccBuilder(Builder):
             if sys.platform == 'darwin':
                 main_symbol = '_main'
             args.append('-Wl,-e,' + main_symbol)
+        if sys.platform.startswith('netbsd'):
+            for x in self.lib_paths:
+                args += ['-L' + x, '-Wl,-rpath,' + x]
         args.extend(['-o', self._exe_file_name()])
         args.extend(self._obj_file_names())
 

Modified: lldb/trunk/lit/helper/toolchain.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/helper/toolchain.py?rev=355502&r1=355501&r2=355502&view=diff
==============================================================================
--- lldb/trunk/lit/helper/toolchain.py (original)
+++ lldb/trunk/lit/helper/toolchain.py Wed Mar  6 06:03:18 2019
@@ -31,6 +31,8 @@ def use_lldb_substitutions(config):
         build_script_args.append('--tools-dir={0}'.format(config.lldb_lit_tools_dir))
     if config.lldb_tools_dir:
         build_script_args.append('--tools-dir={0}'.format(config.lldb_tools_dir))
+    if config.llvm_libs_dir:
+        build_script_args.append('--libs-dir={0}'.format(config.llvm_libs_dir))
 
     primary_tools = [
         ToolSubst('%lldb',
@@ -99,6 +101,10 @@ def use_support_substitutions(config):
     elif platform.system() in ['NetBSD', 'OpenBSD', 'Linux']:
         flags = ['-pthread']
 
+    if sys.platform.startswith('netbsd'):
+        # needed e.g. to use freshly built libc++
+        flags += ['-L' + config.llvm_libs_dir,
+                  '-Wl,-rpath,' + config.llvm_libs_dir]
 
     additional_tool_dirs=[]
     if config.lldb_lit_tools_dir:

Modified: lldb/trunk/packages/Python/lldbsuite/test/make/Makefile.rules
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/make/Makefile.rules?rev=355502&r1=355501&r2=355502&view=diff
==============================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/make/Makefile.rules (original)
+++ lldb/trunk/packages/Python/lldbsuite/test/make/Makefile.rules Wed Mar  6 06:03:18 2019
@@ -297,6 +297,11 @@ CXXFLAGS += -std=c++11 $(CFLAGS) $(ARCH_
 LD = $(CC)
 LDFLAGS ?= $(CFLAGS)
 LDFLAGS += $(LD_EXTRAS) $(ARCH_LDFLAGS)
+ifneq (,$(LLVM_LIBS_DIR))
+	ifeq ($(OS),NetBSD)
+		LDFLAGS += -L$(LLVM_LIBS_DIR) -Wl,-rpath,$(LLVM_LIBS_DIR)
+	endif
+endif
 ifeq (,$(filter $(OS), Windows_NT Android Darwin))
 	ifneq (,$(filter YES,$(ENABLE_THREADS)))
 		LDFLAGS += -pthread




More information about the lldb-commits mailing list