63 lines
2.4 KiB
Python
63 lines
2.4 KiB
Python
"""
|
|
Test some lldb command abbreviations.
|
|
"""
|
|
import commands
|
|
import lldb
|
|
import os
|
|
import time
|
|
import unittest2
|
|
from lldbtest import *
|
|
import lldbutil
|
|
|
|
def execute_command (command):
|
|
# print '%% %s' % (command)
|
|
(exit_status, output) = commands.getstatusoutput (command)
|
|
# if output:
|
|
# print output
|
|
# print 'status = %u' % (exit_status)
|
|
return exit_status
|
|
|
|
class FatArchiveTestCase(TestBase):
|
|
|
|
mydir = os.path.join("functionalities", "fat_archives")
|
|
|
|
@unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
|
|
@dwarf_test
|
|
def test_with_dwarf (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")
|
|
|
|
if __name__ == '__main__':
|
|
import atexit
|
|
lldb.SBDebugger.Initialize()
|
|
atexit.register(lambda: lldb.SBDebugger.Terminate())
|
|
unittest2.main()
|
|
|