diff options
Diffstat (limited to 'contrib/llvm-project/lldb/bindings/interface/SBModuleDocstrings.i')
-rw-r--r-- | contrib/llvm-project/lldb/bindings/interface/SBModuleDocstrings.i | 214 |
1 files changed, 214 insertions, 0 deletions
diff --git a/contrib/llvm-project/lldb/bindings/interface/SBModuleDocstrings.i b/contrib/llvm-project/lldb/bindings/interface/SBModuleDocstrings.i new file mode 100644 index 000000000000..289cf5335de6 --- /dev/null +++ b/contrib/llvm-project/lldb/bindings/interface/SBModuleDocstrings.i @@ -0,0 +1,214 @@ +%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 :py:class:`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 comparison 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 +:py:class:`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 +" +) lldb::SBModule; + +%feature("docstring", " + Check if the module is file backed. + + @return + + True, if the module is backed by an object file on disk. + False, if the module is backed by an object file in memory." +) lldb::SBModule::IsFileBacked; + +%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." +) lldb::SBModule::GetFileSpec; + +%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." +) lldb::SBModule::GetPlatformFileSpec; + +%feature("docstring", "Returns the UUID of the module as a Python string." +) lldb::SBModule::GetUUIDString; + +%feature("docstring", " + Find compile units related to this module and passed source + file. + + @param[in] sb_file_spec + A :py:class:`SBFileSpec` object that contains source file + specification. + + @return + A :py:class:`SBSymbolContextList` that gets filled in with all of + the symbol contexts for all the matches." +) lldb::SBModule::FindCompileUnits; + +%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." +) lldb::SBModule::FindFunctions; + +%feature("docstring", " + Get all types matching type_mask from debug info in this + module. + + @param[in] type_mask + A bitfield that consists of one or more bits logically OR'ed + together from the lldb::TypeClass enumeration. This allows + you to request only structure types, or only class, struct + and union types. Passing in lldb::eTypeClassAny will return + all types found in the debug information for this module. + + @return + A list of types in this module that match type_mask" +) lldb::SBModule::GetTypes; + +%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 max_matches. + + @return + A list of matched variables in an SBValueList." +) lldb::SBModule::FindGlobalVariables; + +%feature("docstring", " + Find the first global (or static) variable 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. + + @return + An SBValue that gets filled in with the found variable (if any)." +) lldb::SBModule::FindFirstGlobalVariable; + +%feature("docstring", " + Returns the number of modules in the module cache. This is an + implementation detail exposed for testing and should not be relied upon. + + @return + The number of modules in the module cache." +) lldb::SBModule::GetNumberAllocatedModules; + +%feature("docstring", " + Removes all modules which are no longer needed by any part of LLDB from + the module cache. + + This is an implementation detail exposed for testing and should not be + relied upon. Use SBDebugger::MemoryPressureDetected instead to reduce + LLDB's memory consumption during execution. +") lldb::SBModule::GarbageCollectAllocatedModules; |