From f5b2b76008dca191c327c5c8c070e5f089608329 Mon Sep 17 00:00:00 2001 From: Raphael Isemann Date: Thu, 10 Oct 2019 12:57:14 +0000 Subject: [PATCH] [lldb] Make sure import-std-module/sysroot actually passes for the right reasons This test was previously passing because myabs was actually emitted into the debug information and we called that. The test itself was broken as it didn't use the libc++ directory structure (the /v1/ directory was just called /include/). This patch gives myabs a default argument which we can't get from debug information and inlines the function to make sure we can't call it from LLDB without loading the C++ module. llvm-svn: 374335 --- .../expression/import-std-module/sysroot/Makefile | 2 +- .../import-std-module/sysroot/TestStdModuleSysroot.py | 4 +++- .../expression/import-std-module/sysroot/main.cpp | 1 + .../sysroot/root/usr/include/c++/include/algorithm | 7 ------- .../sysroot/root/usr/include/c++/v1/algorithm | 11 +++++++++++ .../usr/include/c++/{include => v1}/module.modulemap | 0 6 files changed, 16 insertions(+), 9 deletions(-) delete mode 100644 lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/sysroot/root/usr/include/c++/include/algorithm create mode 100644 lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/sysroot/root/usr/include/c++/v1/algorithm rename lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/sysroot/root/usr/include/c++/{include => v1}/module.modulemap (100%) diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/sysroot/Makefile b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/sysroot/Makefile index c1790dfbf767..4915cdae8764 100644 --- a/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/sysroot/Makefile +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/sysroot/Makefile @@ -3,7 +3,7 @@ # system headers. NO_TEST_COMMON_H := 1 -CXXFLAGS_EXTRAS = -I $(SRCDIR)/root/usr/include/c++/include/ -I $(SRCDIR)/root/usr/include/ -nostdinc -nostdinc++ +CXXFLAGS_EXTRAS = -I $(SRCDIR)/root/usr/include/c++/v1/ -I $(SRCDIR)/root/usr/include/ -nostdinc -nostdinc++ CXX_SOURCES := main.cpp include Makefile.rules diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/sysroot/TestStdModuleSysroot.py b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/sysroot/TestStdModuleSysroot.py index fbf00cddcfa9..90072fc3fdf6 100644 --- a/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/sysroot/TestStdModuleSysroot.py +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/sysroot/TestStdModuleSysroot.py @@ -27,4 +27,6 @@ class ImportStdModule(TestBase): # Call our custom function in our sysroot std module. # If this gives us the correct result, then we used the sysroot. - self.expect("expr std::myabs(-42)", substrs=['(int) $0 = 42']) + # We rely on the default argument of -123 to make sure we actually have the C++ module. + # (We don't have default arguments in the debug information). + self.expect("expr std::myabs()", substrs=['(int) $0 = 123']) diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/sysroot/main.cpp b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/sysroot/main.cpp index 2fbc76b9a765..c01fadc5d8e4 100644 --- a/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/sysroot/main.cpp +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/sysroot/main.cpp @@ -2,5 +2,6 @@ int main(int argc, char **argv) { libc_struct s; + std::vector v; return 0; // Set break point at this line. } diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/sysroot/root/usr/include/c++/include/algorithm b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/sysroot/root/usr/include/c++/include/algorithm deleted file mode 100644 index e8cbcca8e846..000000000000 --- a/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/sysroot/root/usr/include/c++/include/algorithm +++ /dev/null @@ -1,7 +0,0 @@ -#include "libc_header.h" - -namespace std { - int myabs(int i) { - return i < 0 ? -i : i; - } -} diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/sysroot/root/usr/include/c++/v1/algorithm b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/sysroot/root/usr/include/c++/v1/algorithm new file mode 100644 index 000000000000..43f7becdbeb6 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/sysroot/root/usr/include/c++/v1/algorithm @@ -0,0 +1,11 @@ +#include "libc_header.h" + +namespace std { + // Makes sure we get a support file for this header. + struct vector { int i; }; + + inline int myabs(int i = -123) { + double nil; + return i < 0 ? -i : i; + } +} diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/sysroot/root/usr/include/c++/include/module.modulemap b/lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/sysroot/root/usr/include/c++/v1/module.modulemap similarity index 100% rename from lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/sysroot/root/usr/include/c++/include/module.modulemap rename to lldb/packages/Python/lldbsuite/test/commands/expression/import-std-module/sysroot/root/usr/include/c++/v1/module.modulemap