summaryrefslogtreecommitdiffstats
path: root/gnu/llvm/lldb/packages/Python/lldbsuite/test/macosx/DBGSourcePathRemapping
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/llvm/lldb/packages/Python/lldbsuite/test/macosx/DBGSourcePathRemapping')
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/macosx/DBGSourcePathRemapping/Inputs/main.c8
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/macosx/DBGSourcePathRemapping/Inputs/relative.c5
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/macosx/DBGSourcePathRemapping/Makefile10
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/macosx/DBGSourcePathRemapping/TestDSYMSourcePathRemapping.py61
4 files changed, 84 insertions, 0 deletions
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/macosx/DBGSourcePathRemapping/Inputs/main.c b/gnu/llvm/lldb/packages/Python/lldbsuite/test/macosx/DBGSourcePathRemapping/Inputs/main.c
new file mode 100644
index 00000000000..41a6a46c926
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/macosx/DBGSourcePathRemapping/Inputs/main.c
@@ -0,0 +1,8 @@
+void relative();
+
+int main()
+{
+ relative();
+ // Hello Absolute!
+ return 0;
+}
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/macosx/DBGSourcePathRemapping/Inputs/relative.c b/gnu/llvm/lldb/packages/Python/lldbsuite/test/macosx/DBGSourcePathRemapping/Inputs/relative.c
new file mode 100644
index 00000000000..02331834cf2
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/macosx/DBGSourcePathRemapping/Inputs/relative.c
@@ -0,0 +1,5 @@
+void stop() {}
+void relative() {
+ stop();
+ // Hello Relative!
+}
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/macosx/DBGSourcePathRemapping/Makefile b/gnu/llvm/lldb/packages/Python/lldbsuite/test/macosx/DBGSourcePathRemapping/Makefile
new file mode 100644
index 00000000000..8c82c73b13f
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/macosx/DBGSourcePathRemapping/Makefile
@@ -0,0 +1,10 @@
+BOTDIR = $(BUILDDIR)/buildbot
+USERDIR = $(BUILDDIR)/user
+C_SOURCES = $(BOTDIR)/main.c
+LD_EXTRAS = $(BOTDIR)/relative.o
+
+include Makefile.rules
+
+$(EXE): relative.o
+relative.o: $(BOTDIR)/relative.c
+ cd $(BOTDIR) && $(CC) -c $(CFLAGS) -o $@ relative.c
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/macosx/DBGSourcePathRemapping/TestDSYMSourcePathRemapping.py b/gnu/llvm/lldb/packages/Python/lldbsuite/test/macosx/DBGSourcePathRemapping/TestDSYMSourcePathRemapping.py
new file mode 100644
index 00000000000..0f5daf51e97
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/macosx/DBGSourcePathRemapping/TestDSYMSourcePathRemapping.py
@@ -0,0 +1,61 @@
+import lldb
+from lldbsuite.test.decorators import *
+import lldbsuite.test.lldbtest as lldbtest
+import lldbsuite.test.lldbutil as lldbutil
+import os
+import unittest2
+
+
+class TestDSYMSourcePathRemapping(lldbtest.TestBase):
+
+ mydir = lldbtest.TestBase.compute_mydir(__file__)
+
+ def build(self):
+ botdir = self.getBuildArtifact('buildbot')
+ userdir = self.getBuildArtifact('user')
+ inputs = self.getSourcePath('Inputs')
+ lldbutil.mkdir_p(botdir)
+ lldbutil.mkdir_p(userdir)
+ import shutil
+ for f in ['main.c', 'relative.c']:
+ shutil.copyfile(os.path.join(inputs, f), os.path.join(botdir, f))
+ shutil.copyfile(os.path.join(inputs, f), os.path.join(userdir, f))
+
+ super(TestDSYMSourcePathRemapping, self).build()
+
+ # Remove the build sources.
+ self.assertTrue(os.path.isdir(botdir))
+ shutil.rmtree(botdir)
+
+ # Create a plist.
+ import subprocess
+ dsym = self.getBuildArtifact('a.out.dSYM')
+ uuid = subprocess.check_output(["/usr/bin/dwarfdump", "--uuid", dsym]
+ ).decode("utf-8").split(" ")[1]
+ import re
+ self.assertTrue(re.match(r'[0-9a-fA-F-]+', uuid))
+ plist = os.path.join(dsym, 'Contents', 'Resources', uuid + '.plist')
+ with open(plist, 'w') as f:
+ f.write('<?xml version="1.0" encoding="UTF-8"?>\n')
+ f.write('<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n')
+ f.write('<plist version="1.0">\n')
+ f.write('<dict>\n')
+ f.write(' <key>DBGSourcePathRemapping</key>\n')
+ f.write(' <dict>\n')
+ f.write(' <key>' + botdir + '</key>\n')
+ f.write(' <string>' + userdir + '</string>\n')
+ f.write(' </dict>\n')
+ f.write('</dict>\n')
+ f.write('</plist>\n')
+
+
+ @skipIf(debug_info=no_match("dsym"))
+ def test(self):
+ self.build()
+
+ target, process, _, _ = lldbutil.run_to_name_breakpoint(
+ self, 'main')
+ self.expect("source list -n main", substrs=["Hello Absolute"])
+ bkpt = target.BreakpointCreateByName('relative')
+ lldbutil.continue_to_breakpoint(process, bkpt)
+ self.expect("source list -n relative", substrs=["Hello Relative"])