1*99451b44SJordan Rupprecht"""
2*99451b44SJordan RupprechtFuzz tests an object after the default construction to make sure it does not crash lldb.
3*99451b44SJordan Rupprecht"""
4*99451b44SJordan Rupprecht
5*99451b44SJordan Rupprechtimport lldb
6*99451b44SJordan Rupprecht
7*99451b44SJordan Rupprecht
8*99451b44SJordan Rupprechtdef fuzz_obj(obj):
9*99451b44SJordan Rupprecht    obj.GetProcess()
10*99451b44SJordan Rupprecht    listener = lldb.SBListener()
11*99451b44SJordan Rupprecht    error = lldb.SBError()
12*99451b44SJordan Rupprecht    obj.Launch(listener, None, None, None, None, None, None, 0, True, error)
13*99451b44SJordan Rupprecht    obj.LaunchSimple(None, None, None)
14*99451b44SJordan Rupprecht    obj.AttachToProcessWithID(listener, 123, error)
15*99451b44SJordan Rupprecht    obj.AttachToProcessWithName(listener, 'lldb', False, error)
16*99451b44SJordan Rupprecht    obj.ConnectRemote(listener, "connect://to/here", None, error)
17*99451b44SJordan Rupprecht    obj.GetExecutable()
18*99451b44SJordan Rupprecht    obj.GetNumModules()
19*99451b44SJordan Rupprecht    obj.GetModuleAtIndex(0xffffffff)
20*99451b44SJordan Rupprecht    obj.GetDebugger()
21*99451b44SJordan Rupprecht    filespec = lldb.SBFileSpec()
22*99451b44SJordan Rupprecht    obj.FindModule(filespec)
23*99451b44SJordan Rupprecht    sc_list = obj.FindFunctions("the_func")
24*99451b44SJordan Rupprecht    sc_list = obj.FindFunctions("the_func", lldb.eFunctionNameTypeAny)
25*99451b44SJordan Rupprecht    obj.FindFirstType("dont_care")
26*99451b44SJordan Rupprecht    obj.FindTypes("dont_care")
27*99451b44SJordan Rupprecht    obj.FindFirstType(None)
28*99451b44SJordan Rupprecht    obj.GetInstructions(lldb.SBAddress(), bytearray())
29*99451b44SJordan Rupprecht    obj.GetSourceManager()
30*99451b44SJordan Rupprecht    obj.FindGlobalVariables("my_global_var", 1)
31*99451b44SJordan Rupprecht    address = obj.ResolveLoadAddress(0xffff)
32*99451b44SJordan Rupprecht    obj.ResolveSymbolContextForAddress(address, 0)
33*99451b44SJordan Rupprecht    obj.BreakpointCreateByLocation("filename", 20)
34*99451b44SJordan Rupprecht    obj.BreakpointCreateByLocation(filespec, 20)
35*99451b44SJordan Rupprecht    obj.BreakpointCreateByName("func", None)
36*99451b44SJordan Rupprecht    obj.BreakpointCreateByRegex("func.", None)
37*99451b44SJordan Rupprecht    obj.BreakpointCreateByAddress(0xf0f0)
38*99451b44SJordan Rupprecht    obj.GetNumBreakpoints()
39*99451b44SJordan Rupprecht    obj.GetBreakpointAtIndex(0)
40*99451b44SJordan Rupprecht    obj.BreakpointDelete(0)
41*99451b44SJordan Rupprecht    obj.FindBreakpointByID(0)
42*99451b44SJordan Rupprecht    obj.EnableAllBreakpoints()
43*99451b44SJordan Rupprecht    obj.DisableAllBreakpoints()
44*99451b44SJordan Rupprecht    obj.DeleteAllBreakpoints()
45*99451b44SJordan Rupprecht    obj.GetNumWatchpoints()
46*99451b44SJordan Rupprecht    obj.GetWatchpointAtIndex(0)
47*99451b44SJordan Rupprecht    obj.DeleteWatchpoint(0)
48*99451b44SJordan Rupprecht    obj.FindWatchpointByID(0)
49*99451b44SJordan Rupprecht    obj.EnableAllWatchpoints()
50*99451b44SJordan Rupprecht    obj.DisableAllWatchpoints()
51*99451b44SJordan Rupprecht    obj.DeleteAllWatchpoints()
52*99451b44SJordan Rupprecht    obj.GetAddressByteSize()
53*99451b44SJordan Rupprecht    obj.GetByteOrder()
54*99451b44SJordan Rupprecht    obj.GetTriple()
55*99451b44SJordan Rupprecht    error = lldb.SBError()
56*99451b44SJordan Rupprecht    obj.WatchAddress(123, 8, True, True, error)
57*99451b44SJordan Rupprecht    obj.GetBroadcaster()
58*99451b44SJordan Rupprecht    obj.GetDescription(lldb.SBStream(), lldb.eDescriptionLevelBrief)
59*99451b44SJordan Rupprecht    obj.Clear()
60*99451b44SJordan Rupprecht    for module in obj.module_iter():
61*99451b44SJordan Rupprecht        s = str(module)
62*99451b44SJordan Rupprecht    for bp in obj.breakpoint_iter():
63*99451b44SJordan Rupprecht        s = str(bp)
64*99451b44SJordan Rupprecht    for wp in obj.watchpoint_iter():
65*99451b44SJordan Rupprecht        s = str(wp)
66