diff options
Diffstat (limited to 'packages/Python/lldbsuite/test/functionalities/fat_archives')
5 files changed, 83 insertions, 0 deletions
diff --git a/packages/Python/lldbsuite/test/functionalities/fat_archives/Makefile b/packages/Python/lldbsuite/test/functionalities/fat_archives/Makefile new file mode 100644 index 0000000..e1832fd --- /dev/null +++ b/packages/Python/lldbsuite/test/functionalities/fat_archives/Makefile @@ -0,0 +1,14 @@ +all: clean + $(CC) -arch i386 -g -c a.c + ar -q liba-i386.a a.o + ranlib liba-i386.a + $(CC) -arch x86_64 -g -c a.c + ar -q liba-x86_64.a a.o + ranlib liba-x86_64.a + lipo -create -output liba.a liba-i386.a liba-x86_64.a + $(CC) -g -c main.c + $(CC) -o a.out main.o -L. -la + +clean: + rm -rf a.o a.out liba-i386.a liba-x86_64.a liba.a $(wildcard *un~ .*un~ main.o *.pyc) + diff --git a/packages/Python/lldbsuite/test/functionalities/fat_archives/TestFatArchives.py b/packages/Python/lldbsuite/test/functionalities/fat_archives/TestFatArchives.py new file mode 100644 index 0000000..19a2dba --- /dev/null +++ b/packages/Python/lldbsuite/test/functionalities/fat_archives/TestFatArchives.py @@ -0,0 +1,58 @@ +""" +Test some lldb command abbreviations. +""" +from __future__ import print_function + + + +import lldb +import os +import time +from lldbsuite.test.lldbtest import * +import lldbsuite.test.lldbutil as lldbutil +import lldbsuite.support.seven as seven + +def execute_command (command): + # print('%% %s' % (command)) + (exit_status, output) = seven.get_command_status_output(command) + # if output: + # print(output) + # print('status = %u' % (exit_status)) + return exit_status + +class FatArchiveTestCase(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + @skipUnlessDarwin + def test (self): + if self.getArchitecture() == 'x86_64': + execute_command ("make CC='%s'" % (os.environ["CC"])) + self.main () + else: + self.skipTest("This test requires x86_64 as the architecture for the inferior") + + def main (self): + '''This test compiles a quick example by making a fat file (universal) full of + skinny .o files and makes sure we can use them to resolve breakpoints when doing + DWARF in .o file debugging. The only thing this test needs to do is to compile and + set a breakpoint in the target and verify any breakpoint locations have valid debug + info for the function, and source file and line.''' + exe = os.path.join (os.getcwd(), "a.out") + + # Create the target + target = self.dbg.CreateTarget(exe) + + # Create a breakpoint by name + breakpoint = target.BreakpointCreateByName ('foo', exe) + self.assertTrue(breakpoint, VALID_BREAKPOINT) + + # Make sure the breakpoint resolves to a function, file and line + for bp_loc in breakpoint: + # Get a section offset address (lldb.SBAddress) from the breakpoint location + bp_loc_addr = bp_loc.GetAddress() + line_entry = bp_loc_addr.GetLineEntry() + function = bp_loc_addr.GetFunction() + self.assertTrue(function.IsValid(), "Verify breakpoint in fat BSD archive has valid function debug info") + self.assertTrue(line_entry.GetFileSpec(), "Verify breakpoint in fat BSD archive has source file information") + self.assertTrue(line_entry.GetLine() != 0, "Verify breakpoint in fat BSD archive has source line information") diff --git a/packages/Python/lldbsuite/test/functionalities/fat_archives/a.c b/packages/Python/lldbsuite/test/functionalities/fat_archives/a.c new file mode 100644 index 0000000..c100f9a --- /dev/null +++ b/packages/Python/lldbsuite/test/functionalities/fat_archives/a.c @@ -0,0 +1,4 @@ +int foo () +{ + return 5; +} diff --git a/packages/Python/lldbsuite/test/functionalities/fat_archives/a.h b/packages/Python/lldbsuite/test/functionalities/fat_archives/a.h new file mode 100644 index 0000000..a453664 --- /dev/null +++ b/packages/Python/lldbsuite/test/functionalities/fat_archives/a.h @@ -0,0 +1 @@ +int foo (); diff --git a/packages/Python/lldbsuite/test/functionalities/fat_archives/main.c b/packages/Python/lldbsuite/test/functionalities/fat_archives/main.c new file mode 100644 index 0000000..328319d --- /dev/null +++ b/packages/Python/lldbsuite/test/functionalities/fat_archives/main.c @@ -0,0 +1,6 @@ +#include "a.h" +#include <stdio.h> +int main() +{ + printf ("%d\n", foo()); +} |