diff options
-rw-r--r-- | lldb/include/lldb/API/SBFunction.h | 41 | ||||
-rw-r--r-- | lldb/scripts/Python/interface/SBFunction.i | 81 |
2 files changed, 81 insertions, 41 deletions
diff --git a/lldb/include/lldb/API/SBFunction.h b/lldb/include/lldb/API/SBFunction.h index 72fc4fcd435..62ce65e687a 100644 --- a/lldb/include/lldb/API/SBFunction.h +++ b/lldb/include/lldb/API/SBFunction.h @@ -16,49 +16,8 @@ namespace lldb { -#ifdef SWIG -%feature("docstring", -"Represents a generic function, which can be inlined or not. - -For example (from test/lldbutil.py, but slightly modified for doc purpose), - - ... - - frame = thread.GetFrameAtIndex(i) - addr = frame.GetPCAddress() - load_addr = addr.GetLoadAddress(target) - function = frame.GetFunction() - mod_name = frame.GetModule().GetFileSpec().GetFilename() - - if not function: - # No debug info for 'function'. - symbol = frame.GetSymbol() - file_addr = addr.GetFileAddress() - start_addr = symbol.GetStartAddress().GetFileAddress() - symbol_name = symbol.GetName() - symbol_offset = file_addr - start_addr - print >> output, ' frame #{num}: {addr:#016x} {mod}`{symbol} + {offset}'.format( - num=i, addr=load_addr, mod=mod_name, symbol=symbol_name, offset=symbol_offset) - else: - # Debug info is available for 'function'. - func_name = frame.GetFunctionName() - file_name = frame.GetLineEntry().GetFileSpec().GetFilename() - line_num = frame.GetLineEntry().GetLine() - print >> output, ' frame #{num}: {addr:#016x} {mod}`{func} at {file}:{line} {args}'.format( - num=i, addr=load_addr, mod=mod_name, - func='%s [inlined]' % func_name] if frame.IsInlined() else func_name, - file=file_name, line=line_num, args=get_args_as_string(frame, showFuncName=False)) - - ... - -" - ) SBFunction; -#endif class SBFunction { -#ifdef SWIG - %feature("autodoc", "1"); -#endif public: SBFunction (); diff --git a/lldb/scripts/Python/interface/SBFunction.i b/lldb/scripts/Python/interface/SBFunction.i new file mode 100644 index 00000000000..ac3d1231597 --- /dev/null +++ b/lldb/scripts/Python/interface/SBFunction.i @@ -0,0 +1,81 @@ +//===-- SWIG Interface for SBFunction ---------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +namespace lldb { + +%feature("docstring", +"Represents a generic function, which can be inlined or not. + +For example (from test/lldbutil.py, but slightly modified for doc purpose), + + ... + + frame = thread.GetFrameAtIndex(i) + addr = frame.GetPCAddress() + load_addr = addr.GetLoadAddress(target) + function = frame.GetFunction() + mod_name = frame.GetModule().GetFileSpec().GetFilename() + + if not function: + # No debug info for 'function'. + symbol = frame.GetSymbol() + file_addr = addr.GetFileAddress() + start_addr = symbol.GetStartAddress().GetFileAddress() + symbol_name = symbol.GetName() + symbol_offset = file_addr - start_addr + print >> output, ' frame #{num}: {addr:#016x} {mod}`{symbol} + {offset}'.format( + num=i, addr=load_addr, mod=mod_name, symbol=symbol_name, offset=symbol_offset) + else: + # Debug info is available for 'function'. + func_name = frame.GetFunctionName() + file_name = frame.GetLineEntry().GetFileSpec().GetFilename() + line_num = frame.GetLineEntry().GetLine() + print >> output, ' frame #{num}: {addr:#016x} {mod}`{func} at {file}:{line} {args}'.format( + num=i, addr=load_addr, mod=mod_name, + func='%s [inlined]' % func_name] if frame.IsInlined() else func_name, + file=file_name, line=line_num, args=get_args_as_string(frame, showFuncName=False)) + + ... +") SBFunction; +class SBFunction +{ +public: + + SBFunction (); + + SBFunction (const lldb::SBFunction &rhs); + + ~SBFunction (); + + bool + IsValid () const; + + const char * + GetName() const; + + const char * + GetMangledName () const; + + lldb::SBInstructionList + GetInstructions (lldb::SBTarget target); + + SBAddress + GetStartAddress (); + + SBAddress + GetEndAddress (); + + uint32_t + GetPrologueByteSize (); + + bool + GetDescription (lldb::SBStream &description); +}; + +} // namespace lldb |