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 10 namespace lldb { 11 12 %feature("docstring", 13 "Represents a generic function, which can be inlined or not. 14 15 For 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; 46 class SBFunction 47 { 48 public: 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::SBInstructionList 69 GetInstructions (lldb::SBTarget target, const char *flavor); 70 71 lldb::SBAddress 72 GetStartAddress (); 73 74 lldb::SBAddress 75 GetEndAddress (); 76 77 uint32_t 78 GetPrologueByteSize (); 79 80 lldb::SBType 81 GetType (); 82 83 lldb::SBBlock 84 GetBlock (); 85 86 bool 87 GetDescription (lldb::SBStream &description); 88 89 bool 90 operator == (const lldb::SBFunction &rhs) const; 91 92 bool 93 operator != (const lldb::SBFunction &rhs) const; 94 95 %pythoncode %{ 96 def get_instructions_from_current_target (self): 97 return self.GetInstructions (target) 98 99 __swig_getmethods__["addr"] = GetStartAddress 100 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.''') 101 102 __swig_getmethods__["end_addr"] = GetEndAddress 103 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.''') 104 105 __swig_getmethods__["block"] = GetBlock 106 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.''') 107 108 __swig_getmethods__["instructions"] = get_instructions_from_current_target 109 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.''') 110 111 __swig_getmethods__["mangled"] = GetMangledName 112 if _newclass: mangled = property(GetMangledName, None, doc='''A read only property that returns the mangled (linkage) name for this function as a string.''') 113 114 __swig_getmethods__["name"] = GetName 115 if _newclass: name = property(GetName, None, doc='''A read only property that returns the name for this function as a string.''') 116 117 __swig_getmethods__["prologue_size"] = GetPrologueByteSize 118 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.''') 119 120 __swig_getmethods__["type"] = GetType 121 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.''') 122 %} 123 124 }; 125 126 } // namespace lldb 127