summaryrefslogtreecommitdiff
path: root/lldb/scripts/Python/interface/SBModule.i
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/scripts/Python/interface/SBModule.i')
-rw-r--r--lldb/scripts/Python/interface/SBModule.i400
1 files changed, 0 insertions, 400 deletions
diff --git a/lldb/scripts/Python/interface/SBModule.i b/lldb/scripts/Python/interface/SBModule.i
deleted file mode 100644
index 1b6d4ecac432..000000000000
--- a/lldb/scripts/Python/interface/SBModule.i
+++ /dev/null
@@ -1,400 +0,0 @@
-//===-- SWIG Interface for SBModule -----------------------------*- 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 an executable image and its associated object and symbol files.
-
-The module is designed to be able to select a single slice of an
-executable image as it would appear on disk and during program
-execution.
-
-You can retrieve SBModule from SBSymbolContext, which in turn is available
-from SBFrame.
-
-SBModule supports symbol iteration, for example,
-
- for symbol in module:
- name = symbol.GetName()
- saddr = symbol.GetStartAddress()
- eaddr = symbol.GetEndAddress()
-
-and rich comparion methods which allow the API program to use,
-
- if thisModule == thatModule:
- print 'This module is the same as that module'
-
-to test module equality. A module also contains object file sections, namely
-SBSection. SBModule supports section iteration through section_iter(), for
-example,
-
- print 'Number of sections: %d' % module.GetNumSections()
- for sec in module.section_iter():
- print sec
-
-And to iterate the symbols within a SBSection, use symbol_in_section_iter(),
-
- # Iterates the text section and prints each symbols within each sub-section.
- for subsec in text_sec:
- print INDENT + repr(subsec)
- for sym in exe_module.symbol_in_section_iter(subsec):
- print INDENT2 + repr(sym)
- print INDENT2 + 'symbol type: %s' % symbol_type_to_str(sym.GetType())
-
-produces this following output:
-
- [0x0000000100001780-0x0000000100001d5c) a.out.__TEXT.__text
- id = {0x00000004}, name = 'mask_access(MaskAction, unsigned int)', range = [0x00000001000017c0-0x0000000100001870)
- symbol type: code
- id = {0x00000008}, name = 'thread_func(void*)', range = [0x0000000100001870-0x00000001000019b0)
- symbol type: code
- id = {0x0000000c}, name = 'main', range = [0x00000001000019b0-0x0000000100001d5c)
- symbol type: code
- id = {0x00000023}, name = 'start', address = 0x0000000100001780
- symbol type: code
- [0x0000000100001d5c-0x0000000100001da4) a.out.__TEXT.__stubs
- id = {0x00000024}, name = '__stack_chk_fail', range = [0x0000000100001d5c-0x0000000100001d62)
- symbol type: trampoline
- id = {0x00000028}, name = 'exit', range = [0x0000000100001d62-0x0000000100001d68)
- symbol type: trampoline
- id = {0x00000029}, name = 'fflush', range = [0x0000000100001d68-0x0000000100001d6e)
- symbol type: trampoline
- id = {0x0000002a}, name = 'fgets', range = [0x0000000100001d6e-0x0000000100001d74)
- symbol type: trampoline
- id = {0x0000002b}, name = 'printf', range = [0x0000000100001d74-0x0000000100001d7a)
- symbol type: trampoline
- id = {0x0000002c}, name = 'pthread_create', range = [0x0000000100001d7a-0x0000000100001d80)
- symbol type: trampoline
- id = {0x0000002d}, name = 'pthread_join', range = [0x0000000100001d80-0x0000000100001d86)
- symbol type: trampoline
- id = {0x0000002e}, name = 'pthread_mutex_lock', range = [0x0000000100001d86-0x0000000100001d8c)
- symbol type: trampoline
- id = {0x0000002f}, name = 'pthread_mutex_unlock', range = [0x0000000100001d8c-0x0000000100001d92)
- symbol type: trampoline
- id = {0x00000030}, name = 'rand', range = [0x0000000100001d92-0x0000000100001d98)
- symbol type: trampoline
- id = {0x00000031}, name = 'strtoul', range = [0x0000000100001d98-0x0000000100001d9e)
- symbol type: trampoline
- id = {0x00000032}, name = 'usleep', range = [0x0000000100001d9e-0x0000000100001da4)
- symbol type: trampoline
- [0x0000000100001da4-0x0000000100001e2c) a.out.__TEXT.__stub_helper
- [0x0000000100001e2c-0x0000000100001f10) a.out.__TEXT.__cstring
- [0x0000000100001f10-0x0000000100001f68) a.out.__TEXT.__unwind_info
- [0x0000000100001f68-0x0000000100001ff8) a.out.__TEXT.__eh_frame
-"
-) SBModule;
-class SBModule
-{
-public:
-
- SBModule ();
-
- SBModule (const SBModule &rhs);
-
- SBModule (lldb::SBProcess &process,
- lldb::addr_t header_addr);
-
- ~SBModule ();
-
- bool
- IsValid () const;
-
- void
- Clear();
-
- %feature("docstring", "
- //------------------------------------------------------------------
- /// Get const accessor for the module file specification.
- ///
- /// This function returns the file for the module on the host system
- /// that is running LLDB. This can differ from the path on the
- /// platform since we might be doing remote debugging.
- ///
- /// @return
- /// A const reference to the file specification object.
- //------------------------------------------------------------------
- ") GetFileSpec;
- lldb::SBFileSpec
- GetFileSpec () const;
-
- %feature("docstring", "
- //------------------------------------------------------------------
- /// Get accessor for the module platform file specification.
- ///
- /// Platform file refers to the path of the module as it is known on
- /// the remote system on which it is being debugged. For local
- /// debugging this is always the same as Module::GetFileSpec(). But
- /// remote debugging might mention a file '/usr/lib/liba.dylib'
- /// which might be locally downloaded and cached. In this case the
- /// platform file could be something like:
- /// '/tmp/lldb/platform-cache/remote.host.computer/usr/lib/liba.dylib'
- /// The file could also be cached in a local developer kit directory.
- ///
- /// @return
- /// A const reference to the file specification object.
- //------------------------------------------------------------------
- ") GetPlatformFileSpec;
- lldb::SBFileSpec
- GetPlatformFileSpec () const;
-
- bool
- SetPlatformFileSpec (const lldb::SBFileSpec &platform_file);
-
- %feature("docstring", "Returns the UUID of the module as a Python string."
- ) GetUUIDString;
- const char *
- GetUUIDString () const;
-
- lldb::SBSection
- FindSection (const char *sect_name);
-
- lldb::SBAddress
- ResolveFileAddress (lldb::addr_t vm_addr);
-
- lldb::SBSymbolContext
- ResolveSymbolContextForAddress (const lldb::SBAddress& addr,
- uint32_t resolve_scope);
-
- bool
- GetDescription (lldb::SBStream &description);
-
- uint32_t
- GetNumCompileUnits();
-
- lldb::SBCompileUnit
- GetCompileUnitAtIndex (uint32_t);
-
- size_t
- GetNumSymbols ();
-
- lldb::SBSymbol
- GetSymbolAtIndex (size_t idx);
-
- size_t
- GetNumSections ();
-
- lldb::SBSection
- GetSectionAtIndex (size_t idx);
-
-
- %feature("docstring", "
- //------------------------------------------------------------------
- /// Find functions by name.
- ///
- /// @param[in] name
- /// The name of the function we are looking for.
- ///
- /// @param[in] name_type_mask
- /// A logical OR of one or more FunctionNameType enum bits that
- /// indicate what kind of names should be used when doing the
- /// lookup. Bits include fully qualified names, base names,
- /// C++ methods, or ObjC selectors.
- /// See FunctionNameType for more details.
- ///
- /// @return
- /// A symbol context list that gets filled in with all of the
- /// matches.
- //------------------------------------------------------------------
- ") FindFunctions;
- lldb::SBSymbolContextList
- FindFunctions (const char *name,
- uint32_t name_type_mask = lldb::eFunctionNameTypeAny);
-
- lldb::SBType
- FindFirstType (const char* name);
-
- lldb::SBTypeList
- FindTypes (const char* type);
-
-
- %feature("docstring", "
- //------------------------------------------------------------------
- /// Find global and static variables by name.
- ///
- /// @param[in] target
- /// A valid SBTarget instance representing the debuggee.
- ///
- /// @param[in] name
- /// The name of the global or static variable we are looking
- /// for.
- ///
- /// @param[in] max_matches
- /// Allow the number of matches to be limited to \a max_matches.
- ///
- /// @return
- /// A list of matched variables in an SBValueList.
- //------------------------------------------------------------------
- ") FindGlobalVariables;
- lldb::SBValueList
- FindGlobalVariables (lldb::SBTarget &target,
- const char *name,
- uint32_t max_matches);
-
- lldb::ByteOrder
- GetByteOrder ();
-
- uint32_t
- GetAddressByteSize();
-
- const char *
- GetTriple ();
-
- uint32_t
- GetVersion (uint32_t *versions,
- uint32_t num_versions);
-
- %pythoncode %{
- class symbols_access(object):
- re_compile_type = type(re.compile('.'))
- '''A helper object that will lazily hand out lldb.SBModule objects for a target when supplied an index, or by full or partial path.'''
- def __init__(self, sbmodule):
- self.sbmodule = sbmodule
-
- def __len__(self):
- if self.sbmodule:
- return self.sbmodule.GetNumSymbols()
- return 0
-
- def __getitem__(self, key):
- count = len(self)
- if type(key) is int:
- if key < count:
- return self.sbmodule.GetSymbolAtIndex(key)
- elif type(key) is str:
- matches = []
- for idx in range(count):
- symbol = self.sbmodule.GetSymbolAtIndex(idx)
- if symbol.name == key or symbol.mangled == key:
- matches.append(symbol)
- return matches
- elif isinstance(key, self.re_compile_type):
- matches = []
- for idx in range(count):
- symbol = self.sbmodule.GetSymbolAtIndex(idx)
- added = False
- name = symbol.name
- if name:
- re_match = key.search(name)
- if re_match:
- matches.append(symbol)
- added = True
- if not added:
- mangled = symbol.mangled
- if mangled:
- re_match = key.search(mangled)
- if re_match:
- matches.append(symbol)
- return matches
- else:
- print "error: unsupported item type: %s" % type(key)
- return None
-
- def get_symbols_access_object(self):
- '''An accessor function that returns a symbols_access() object which allows lazy symbol access from a lldb.SBModule object.'''
- return self.symbols_access (self)
-
- def get_symbols_array(self):
- '''An accessor function that returns a list() that contains all symbols in a lldb.SBModule object.'''
- symbols = []
- for idx in range(self.num_symbols):
- symbols.append(self.GetSymbolAtIndex(idx))
- return symbols
-
- class sections_access(object):
- re_compile_type = type(re.compile('.'))
- '''A helper object that will lazily hand out lldb.SBModule objects for a target when supplied an index, or by full or partial path.'''
- def __init__(self, sbmodule):
- self.sbmodule = sbmodule
-
- def __len__(self):
- if self.sbmodule:
- return self.sbmodule.GetNumSections()
- return 0
-
- def __getitem__(self, key):
- count = len(self)
- if type(key) is int:
- if key < count:
- return self.sbmodule.GetSectionAtIndex(key)
- elif type(key) is str:
- for idx in range(count):
- section = self.sbmodule.GetSectionAtIndex(idx)
- if section.name == key:
- return section
- elif isinstance(key, self.re_compile_type):
- matches = []
- for idx in range(count):
- section = self.sbmodule.GetSectionAtIndex(idx)
- name = section.name
- if name:
- re_match = key.search(name)
- if re_match:
- matches.append(section)
- return matches
- else:
- print "error: unsupported item type: %s" % type(key)
- return None
-
- def get_sections_access_object(self):
- '''An accessor function that returns a sections_access() object which allows lazy section array access.'''
- return self.sections_access (self)
-
- def get_sections_array(self):
- '''An accessor function that returns an array object that contains all sections in this module object.'''
- if not hasattr(self, 'sections'):
- self.sections = []
- for idx in range(self.num_sections):
- self.sections.append(self.GetSectionAtIndex(idx))
- return self.sections
-
- __swig_getmethods__["symbols"] = get_symbols_array
- if _newclass: x = property(get_symbols_array, None)
-
- __swig_getmethods__["symbol"] = get_symbols_access_object
- if _newclass: x = property(get_symbols_access_object, None)
-
- __swig_getmethods__["sections"] = get_sections_array
- if _newclass: x = property(get_sections_array, None)
-
- __swig_getmethods__["section"] = get_sections_access_object
- if _newclass: x = property(get_sections_access_object, None)
-
- def get_uuid(self):
- return uuid.UUID (self.GetUUIDString())
-
- __swig_getmethods__["uuid"] = get_uuid
- if _newclass: x = property(get_uuid, None)
-
- __swig_getmethods__["file"] = GetFileSpec
- if _newclass: x = property(GetFileSpec, None)
-
- __swig_getmethods__["platform_file"] = GetPlatformFileSpec
- if _newclass: x = property(GetPlatformFileSpec, None)
-
- __swig_getmethods__["byte_order"] = GetByteOrder
- if _newclass: x = property(GetByteOrder, None)
-
- __swig_getmethods__["addr_size"] = GetAddressByteSize
- if _newclass: x = property(GetAddressByteSize, None)
-
- __swig_getmethods__["triple"] = GetTriple
- if _newclass: x = property(GetTriple, None)
-
- __swig_getmethods__["num_symbols"] = GetNumSymbols
- if _newclass: x = property(GetNumSymbols, None)
-
- __swig_getmethods__["num_sections"] = GetNumSections
- if _newclass: x = property(GetNumSections, None)
-
- %}
-
-};
-
-} // namespace lldb