summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test
diff options
context:
space:
mode:
authorJim Ingham <jingham@apple.com>2017-03-20 19:21:31 +0000
committerJim Ingham <jingham@apple.com>2017-03-20 19:21:31 +0000
commit1aa0ed4e0d202fde2c7225aaae513b228cb9a2b3 (patch)
tree056809d44acb64eddd452f939cde96b9a97ff07d /lldb/packages/Python/lldbsuite/test
parent2dc4a3e91b2b448a5fd30b605802faf55308232a (diff)
downloadbcm5719-llvm-1aa0ed4e0d202fde2c7225aaae513b228cb9a2b3.tar.gz
bcm5719-llvm-1aa0ed4e0d202fde2c7225aaae513b228cb9a2b3.zip
Get ObjectFileMachO to handle @executable_path
Only do this when we are debugging an executable, since we don't have a good way to trace from an ObjectFile back to its containing executable. Detecting pre-run libs before running is "best effort" in lldb, but this one is pretty easy. llvm-svn: 298290
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test')
-rw-r--r--lldb/packages/Python/lldbsuite/test/functionalities/pre_run_dylibs/Makefile8
-rw-r--r--lldb/packages/Python/lldbsuite/test/functionalities/pre_run_dylibs/TestPreRunDylibs.py38
-rw-r--r--lldb/packages/Python/lldbsuite/test/functionalities/pre_run_dylibs/foo.cpp3
-rw-r--r--lldb/packages/Python/lldbsuite/test/functionalities/pre_run_dylibs/foo.h6
-rw-r--r--lldb/packages/Python/lldbsuite/test/functionalities/pre_run_dylibs/main.cpp9
5 files changed, 64 insertions, 0 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/pre_run_dylibs/Makefile b/lldb/packages/Python/lldbsuite/test/functionalities/pre_run_dylibs/Makefile
new file mode 100644
index 00000000000..c4855ca9b12
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/functionalities/pre_run_dylibs/Makefile
@@ -0,0 +1,8 @@
+LEVEL = ../../make
+
+DYLIB_NAME := unlikely_name
+DYLIB_CXX_SOURCES := foo.cpp
+CXX_SOURCES := main.cpp
+CFLAGS_EXTRAS += -fPIC
+
+include $(LEVEL)/Makefile.rules
diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/pre_run_dylibs/TestPreRunDylibs.py b/lldb/packages/Python/lldbsuite/test/functionalities/pre_run_dylibs/TestPreRunDylibs.py
new file mode 100644
index 00000000000..258c3d3fbb9
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/functionalities/pre_run_dylibs/TestPreRunDylibs.py
@@ -0,0 +1,38 @@
+from __future__ import print_function
+
+import unittest2
+import lldb
+from lldbsuite.test.lldbtest import *
+import lldbsuite.test.lldbutil as lldbutil
+from lldbsuite.test.decorators import *
+
+class TestPreRunLibraries(TestBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+ NO_DEBUG_INFO_TESTCASE = True
+
+ def setUp(self):
+ # Call super's setUp().
+ TestBase.setUp(self)
+
+ @skipIf(oslist=no_match(['darwin','macos']))
+ def test(self):
+ """Test that we find directly linked dylib pre-run."""
+
+ self.build()
+ target = self.dbg.CreateTarget("a.out")
+ self.assertTrue(target, VALID_TARGET)
+
+ # I don't know what the name of a shared library
+ # extension is in general, so instead of using FindModule,
+ # I'll iterate through the module and do a basename match.
+ found_it = False
+ for module in target.modules:
+ file_name = module.GetFileSpec().GetFilename()
+ if file_name.find("unlikely_name") != -1:
+ found_it = True
+ break
+
+ self.assertTrue(found_it, "Couldn't find unlikely_to_occur_name in loaded libraries.")
+
+
diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/pre_run_dylibs/foo.cpp b/lldb/packages/Python/lldbsuite/test/functionalities/pre_run_dylibs/foo.cpp
new file mode 100644
index 00000000000..8dad0a23f36
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/functionalities/pre_run_dylibs/foo.cpp
@@ -0,0 +1,3 @@
+#include "foo.h"
+
+int call_foo1() { return foo1(); }
diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/pre_run_dylibs/foo.h b/lldb/packages/Python/lldbsuite/test/functionalities/pre_run_dylibs/foo.h
new file mode 100644
index 00000000000..060b91f5a5e
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/functionalities/pre_run_dylibs/foo.h
@@ -0,0 +1,6 @@
+LLDB_TEST_API inline int foo1() { return 1; } // !BR1
+
+LLDB_TEST_API inline int foo2() { return 2; } // !BR2
+
+LLDB_TEST_API extern int call_foo1();
+LLDB_TEST_API extern int call_foo2();
diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/pre_run_dylibs/main.cpp b/lldb/packages/Python/lldbsuite/test/functionalities/pre_run_dylibs/main.cpp
new file mode 100644
index 00000000000..c9295a5c7d3
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/functionalities/pre_run_dylibs/main.cpp
@@ -0,0 +1,9 @@
+#include "foo.h"
+
+int call_foo2() { return foo2(); }
+
+int
+main() // !BR_main
+{
+ return call_foo1() + call_foo2();
+}
OpenPOWER on IntegriCloud