Initial import of lldb
Change-Id: Ib244e837bee349effa12b2ff6ffffbe3d730e929
This commit is contained in:
126
external/bsd/llvm/dist/lldb/scripts/Python/interface/SBFunction.i
vendored
Normal file
126
external/bsd/llvm/dist/lldb/scripts/Python/interface/SBFunction.i
vendored
Normal file
@@ -0,0 +1,126 @@
|
||||
//===-- 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);
|
||||
|
||||
lldb::SBInstructionList
|
||||
GetInstructions (lldb::SBTarget target, const char *flavor);
|
||||
|
||||
lldb::SBAddress
|
||||
GetStartAddress ();
|
||||
|
||||
lldb::SBAddress
|
||||
GetEndAddress ();
|
||||
|
||||
uint32_t
|
||||
GetPrologueByteSize ();
|
||||
|
||||
lldb::SBType
|
||||
GetType ();
|
||||
|
||||
lldb::SBBlock
|
||||
GetBlock ();
|
||||
|
||||
bool
|
||||
GetDescription (lldb::SBStream &description);
|
||||
|
||||
bool
|
||||
operator == (const lldb::SBFunction &rhs) const;
|
||||
|
||||
bool
|
||||
operator != (const lldb::SBFunction &rhs) const;
|
||||
|
||||
%pythoncode %{
|
||||
def get_instructions_from_current_target (self):
|
||||
return self.GetInstructions (target)
|
||||
|
||||
__swig_getmethods__["addr"] = GetStartAddress
|
||||
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.''')
|
||||
|
||||
__swig_getmethods__["end_addr"] = GetEndAddress
|
||||
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.''')
|
||||
|
||||
__swig_getmethods__["block"] = GetBlock
|
||||
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.''')
|
||||
|
||||
__swig_getmethods__["instructions"] = get_instructions_from_current_target
|
||||
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.''')
|
||||
|
||||
__swig_getmethods__["mangled"] = GetMangledName
|
||||
if _newclass: mangled = property(GetMangledName, None, doc='''A read only property that returns the mangled (linkage) name for this function as a string.''')
|
||||
|
||||
__swig_getmethods__["name"] = GetName
|
||||
if _newclass: name = property(GetName, None, doc='''A read only property that returns the name for this function as a string.''')
|
||||
|
||||
__swig_getmethods__["prologue_size"] = GetPrologueByteSize
|
||||
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.''')
|
||||
|
||||
__swig_getmethods__["type"] = GetType
|
||||
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.''')
|
||||
%}
|
||||
|
||||
};
|
||||
|
||||
} // namespace lldb
|
||||
Reference in New Issue
Block a user