[Lldb-commits] [lldb] c640a14 - [lldb] Explicitly set libcxx paths when USE_SYSTEM_STDLIB is provided

Felipe de Azevedo Piovezan via lldb-commits lldb-commits at lists.llvm.org
Thu Mar 23 08:53:37 PDT 2023


Author: Felipe de Azevedo Piovezan
Date: 2023-03-23T11:53:13-04:00
New Revision: c640a146c4caa3cca559e308e2e7ecc78c45140d

URL: https://github.com/llvm/llvm-project/commit/c640a146c4caa3cca559e308e2e7ecc78c45140d
DIFF: https://github.com/llvm/llvm-project/commit/c640a146c4caa3cca559e308e2e7ecc78c45140d.diff

LOG: [lldb] Explicitly set libcxx paths when USE_SYSTEM_STDLIB is provided

For tests marked as "USE_SYSTEM_STDLIB", the expectation is that the
system's standard library should be used. However, the implementation of
this flag is such that we simply don't pass _any_ libcxxx-related flags
to Clang; in turn, Clang will use its defaults.

For a Clang/Libcxx pair compiled together, Clang defaults to:
1. The headers of the sibling libcxx.
2. The libraries of the system.

This mismatch is actually a bug in the driver; once fixed, however, (2)
would point to the sibling libcxx as well, which is _not_ what test
authors intended with the USE_SYSTEM_STDLIB flag.

As such, this patch explicitly sets a path to the system's libraries.
This change is done only in Apple platforms so that we can test this
works in this case first.

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

Added: 
    

Modified: 
    lldb/packages/Python/lldbsuite/test/make/Makefile.rules

Removed: 
    


################################################################################
diff  --git a/lldb/packages/Python/lldbsuite/test/make/Makefile.rules b/lldb/packages/Python/lldbsuite/test/make/Makefile.rules
index 25c4d88763326..4c225ed360be5 100644
--- a/lldb/packages/Python/lldbsuite/test/make/Makefile.rules
+++ b/lldb/packages/Python/lldbsuite/test/make/Makefile.rules
@@ -428,6 +428,16 @@ ifeq (1,$(USE_LIBCPP))
 	endif
 endif
 
+ifeq (1, $(USE_SYSTEM_STDLIB))
+    ifeq "$(OS)" "Darwin"
+        ifeq "$(SDKROOT)" ""
+             $(error "SDKROOT must be set on Darwin to use the system libcxx")
+        endif
+        CXXFLAGS += -nostdlib++ -nostdinc++ -cxx-isystem $(SDKROOT)/usr/include/c++/v1
+        LDFLAGS += -L$(SDKROOT)/usr/lib -Wl,-rpath,$(SDKROOT)/usr/lib -lc++
+    endif
+endif
+
 # If no explicit request was made, but we have paths to a custom libcxx, use
 # them.
 ifeq ($(or $(USE_LIBSTDCPP), $(USE_LIBCPP), $(USE_SYSTEM_STDLIB)),)


        


More information about the lldb-commits mailing list