SBFunction.i revision 2a94be1aa46c90d6749d8c96ed396d5ebde452cd
1//===-- SWIG Interface for SBFunction ---------------------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10namespace lldb { 11 12%feature("docstring", 13"Represents a generic function, which can be inlined or not. 14 15For example (from test/lldbutil.py, but slightly modified for doc purpose), 16 17 ... 18 19 frame = thread.GetFrameAtIndex(i) 20 addr = frame.GetPCAddress() 21 load_addr = addr.GetLoadAddress(target) 22 function = frame.GetFunction() 23 mod_name = frame.GetModule().GetFileSpec().GetFilename() 24 25 if not function: 26 # No debug info for 'function'. 27 symbol = frame.GetSymbol() 28 file_addr = addr.GetFileAddress() 29 start_addr = symbol.GetStartAddress().GetFileAddress() 30 symbol_name = symbol.GetName() 31 symbol_offset = file_addr - start_addr 32 print >> output, ' frame #{num}: {addr:#016x} {mod}`{symbol} + {offset}'.format( 33 num=i, addr=load_addr, mod=mod_name, symbol=symbol_name, offset=symbol_offset) 34 else: 35 # Debug info is available for 'function'. 36 func_name = frame.GetFunctionName() 37 file_name = frame.GetLineEntry().GetFileSpec().GetFilename() 38 line_num = frame.GetLineEntry().GetLine() 39 print >> output, ' frame #{num}: {addr:#016x} {mod}`{func} at {file}:{line} {args}'.format( 40 num=i, addr=load_addr, mod=mod_name, 41 func='%s [inlined]' % func_name] if frame.IsInlined() else func_name, 42 file=file_name, line=line_num, args=get_args_as_string(frame, showFuncName=False)) 43 44 ... 45") SBFunction; 46class SBFunction 47{ 48public: 49 50 SBFunction (); 51 52 SBFunction (const lldb::SBFunction &rhs); 53 54 ~SBFunction (); 55 56 bool 57 IsValid () const; 58 59 const char * 60 GetName() const; 61 62 const char * 63 GetMangledName () const; 64 65 lldb::SBInstructionList 66 GetInstructions (lldb::SBTarget target); 67 68 lldb::SBAddress 69 GetStartAddress (); 70 71 lldb::SBAddress 72 GetEndAddress (); 73 74 uint32_t 75 GetPrologueByteSize (); 76 77 lldb::SBType 78 GetType (); 79 80 lldb::SBBlock 81 GetBlock (); 82 83 bool 84 GetDescription (lldb::SBStream &description); 85 86 %pythoncode %{ 87 def get_instructions_from_current_target (self): 88 return self.GetInstructions (target) 89 90 __swig_getmethods__["addr"] = GetStartAddress 91 if _newclass: addr = property(GetStartAddress, None, doc='''A read only property that returns an lldb object that represents the start address (lldb.SBAddress) for this function.''') 92 93 __swig_getmethods__["end_addr"] = GetEndAddress 94 if _newclass: end_addr = property(GetEndAddress, None, doc='''A read only property that returns an lldb object that represents the end address (lldb.SBAddress) for this function.''') 95 96 __swig_getmethods__["block"] = GetBlock 97 if _newclass: block = property(GetBlock, None, doc='''A read only property that returns an lldb object that represents the top level lexical block (lldb.SBBlock) for this function.''') 98 99 __swig_getmethods__["instructions"] = get_instructions_from_current_target 100 if _newclass: instructions = property(get_instructions_from_current_target, None, doc='''A read only property that returns an lldb object that represents the instructions (lldb.SBInstructionList) for this function.''') 101 102 __swig_getmethods__["mangled"] = GetMangledName 103 if _newclass: mangled = property(GetMangledName, None, doc='''A read only property that returns the mangled (linkage) name for this function as a string.''') 104 105 __swig_getmethods__["name"] = GetName 106 if _newclass: name = property(GetName, None, doc='''A read only property that returns the name for this function as a string.''') 107 108 __swig_getmethods__["prologue_size"] = GetPrologueByteSize 109 if _newclass: prologue_size = property(GetPrologueByteSize, None, doc='''A read only property that returns the size in bytes of the prologue instructions as an unsigned integer.''') 110 111 __swig_getmethods__["type"] = GetType 112 if _newclass: type = property(GetType, None, doc='''A read only property that returns an lldb object that represents the return type (lldb.SBType) for this function.''') 113 %} 114 115}; 116 117} // namespace lldb 118