124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- SBModule.h ----------------------------------------------*- C++ -*-===// 224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// The LLVM Compiler Infrastructure 424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source 624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details. 724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===// 924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef LLDB_SBModule_h_ 1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define LLDB_SBModule_h_ 1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 135f81547fd786584b10999c087528b323b5945896Eli Friedman#include "lldb/API/SBDefines.h" 143e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton#include "lldb/API/SBError.h" 153e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton#include "lldb/API/SBSection.h" 16466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton#include "lldb/API/SBSymbolContext.h" 17917c000e77fcf657099f59085d6436d179a39ea4Greg Clayton#include "lldb/API/SBValueList.h" 1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace lldb { 2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass SBModule 2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic: 2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SBModule (); 2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 27538eb82a89a68dbc57251915080bd5152b333978Greg Clayton SBModule (const SBModule &rhs); 287dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton 29f9215bae3f7f76ad98bace0097821a12415690c5Greg Clayton SBModule (const SBModuleSpec &module_spec); 30f9215bae3f7f76ad98bace0097821a12415690c5Greg Clayton 31538eb82a89a68dbc57251915080bd5152b333978Greg Clayton const SBModule & 32538eb82a89a68dbc57251915080bd5152b333978Greg Clayton operator = (const SBModule &rhs); 33538eb82a89a68dbc57251915080bd5152b333978Greg Clayton 34b5a8f1498e1ddaeed5187a878d57ea0b74af9c26Greg Clayton SBModule (lldb::SBProcess &process, 35b5a8f1498e1ddaeed5187a878d57ea0b74af9c26Greg Clayton lldb::addr_t header_addr); 36b5a8f1498e1ddaeed5187a878d57ea0b74af9c26Greg Clayton 3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ~SBModule (); 3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner IsValid () const; 4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 42e0bd571a8050da2b3462c35c9f209cbc9755c750Jim Ingham void 43e0bd571a8050da2b3462c35c9f209cbc9755c750Jim Ingham Clear(); 44e0bd571a8050da2b3462c35c9f209cbc9755c750Jim Ingham 45cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen //------------------------------------------------------------------ 46cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// Get const accessor for the module file specification. 47cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// 48cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// This function returns the file for the module on the host system 49cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// that is running LLDB. This can differ from the path on the 50cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// platform since we might be doing remote debugging. 51cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// 52cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// @return 53cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// A const reference to the file specification object. 54cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen //------------------------------------------------------------------ 5524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner lldb::SBFileSpec 5624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetFileSpec () const; 5724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 58cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen //------------------------------------------------------------------ 59cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// Get accessor for the module platform file specification. 60cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// 61cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// Platform file refers to the path of the module as it is known on 62cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// the remote system on which it is being debugged. For local 63cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// debugging this is always the same as Module::GetFileSpec(). But 64cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// remote debugging might mention a file '/usr/lib/liba.dylib' 65cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// which might be locally downloaded and cached. In this case the 66cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// platform file could be something like: 67cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// '/tmp/lldb/platform-cache/remote.host.computer/usr/lib/liba.dylib' 68cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// The file could also be cached in a local developer kit directory. 69cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// 70cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// @return 71cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// A const reference to the file specification object. 72cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen //------------------------------------------------------------------ 73180546b3feb8c7bcca70a56776a7c4fad99ba09cGreg Clayton lldb::SBFileSpec 74180546b3feb8c7bcca70a56776a7c4fad99ba09cGreg Clayton GetPlatformFileSpec () const; 75180546b3feb8c7bcca70a56776a7c4fad99ba09cGreg Clayton 76180546b3feb8c7bcca70a56776a7c4fad99ba09cGreg Clayton bool 77180546b3feb8c7bcca70a56776a7c4fad99ba09cGreg Clayton SetPlatformFileSpec (const lldb::SBFileSpec &platform_file); 78180546b3feb8c7bcca70a56776a7c4fad99ba09cGreg Clayton 791b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton lldb::ByteOrder 801b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton GetByteOrder (); 811b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton 821b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton uint32_t 831b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton GetAddressByteSize(); 841b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton 851b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton const char * 861b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton GetTriple (); 871b925206e3c4867fea9eb55a4c6460962cf32564Greg Clayton 8824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner const uint8_t * 8924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner GetUUIDBytes () const; 9024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 91919ee60577297be31eb69f14a5901e7c6170a9caJohnny Chen const char * 92919ee60577297be31eb69f14a5901e7c6170a9caJohnny Chen GetUUIDString () const; 93919ee60577297be31eb69f14a5901e7c6170a9caJohnny Chen 9424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 9524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner operator == (const lldb::SBModule &rhs) const; 9624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 9724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 9824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner operator != (const lldb::SBModule &rhs) const; 9924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1003e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton lldb::SBSection 1013e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton FindSection (const char *sect_name); 10224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1033e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton lldb::SBAddress 1043e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton ResolveFileAddress (lldb::addr_t vm_addr); 105466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton 106466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton lldb::SBSymbolContext 107466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton ResolveSymbolContextForAddress (const lldb::SBAddress& addr, 108466f6c4c0783c6b5197059caccab94faf1e605e9Greg Clayton uint32_t resolve_scope); 10924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 11098f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice bool 11198f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice GetDescription (lldb::SBStream &description); 11298f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice 113b451f5f1606fc5effdc809fa2261263851fff8f5Johnny Chen uint32_t 114b451f5f1606fc5effdc809fa2261263851fff8f5Johnny Chen GetNumCompileUnits(); 115b451f5f1606fc5effdc809fa2261263851fff8f5Johnny Chen 116b451f5f1606fc5effdc809fa2261263851fff8f5Johnny Chen lldb::SBCompileUnit 117b451f5f1606fc5effdc809fa2261263851fff8f5Johnny Chen GetCompileUnitAtIndex (uint32_t); 118b451f5f1606fc5effdc809fa2261263851fff8f5Johnny Chen 11943edca38dda703786e2dc7ad61169b5b445551e6Greg Clayton size_t 12043edca38dda703786e2dc7ad61169b5b445551e6Greg Clayton GetNumSymbols (); 12143edca38dda703786e2dc7ad61169b5b445551e6Greg Clayton 12267283641ef749fadab1884e81520e7e5ab42e91aGreg Clayton lldb::SBSymbol 12343edca38dda703786e2dc7ad61169b5b445551e6Greg Clayton GetSymbolAtIndex (size_t idx); 12443edca38dda703786e2dc7ad61169b5b445551e6Greg Clayton 125b3dafc6a81a014339015701c9872624f2aeddd43Greg Clayton lldb::SBSymbol 126b3dafc6a81a014339015701c9872624f2aeddd43Greg Clayton FindSymbol (const char *name, 127b3dafc6a81a014339015701c9872624f2aeddd43Greg Clayton lldb::SymbolType type = eSymbolTypeAny); 128b3dafc6a81a014339015701c9872624f2aeddd43Greg Clayton 129b3dafc6a81a014339015701c9872624f2aeddd43Greg Clayton lldb::SBSymbolContextList 130b3dafc6a81a014339015701c9872624f2aeddd43Greg Clayton FindSymbols (const char *name, 131b3dafc6a81a014339015701c9872624f2aeddd43Greg Clayton lldb::SymbolType type = eSymbolTypeAny); 132b3dafc6a81a014339015701c9872624f2aeddd43Greg Clayton 1333e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton size_t 1343e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton GetNumSections (); 1353e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton 1363e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton lldb::SBSection 1373e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton GetSectionAtIndex (size_t idx); 138cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen //------------------------------------------------------------------ 139cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// Find functions by name. 140cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// 141cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// @param[in] name 142cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// The name of the function we are looking for. 143cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// 144cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// @param[in] name_type_mask 145cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// A logical OR of one or more FunctionNameType enum bits that 146cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// indicate what kind of names should be used when doing the 147cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// lookup. Bits include fully qualified names, base names, 148cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// C++ methods, or ObjC selectors. 149cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// See FunctionNameType for more details. 150cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// 151cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// @return 1527dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton /// A lldb::SBSymbolContextList that gets filled in with all of 1537dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton /// the symbol contexts for all the matches. 154cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen //------------------------------------------------------------------ 1557dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton lldb::SBSymbolContextList 1564ed315fdc503cfdc18e89b1eb43bf87e07fd1673Greg Clayton FindFunctions (const char *name, 1577dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton uint32_t name_type_mask = lldb::eFunctionNameTypeAny); 1584ed315fdc503cfdc18e89b1eb43bf87e07fd1673Greg Clayton 159cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen //------------------------------------------------------------------ 160cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// Find global and static variables by name. 161cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// 162bbc6342babdd58daa34bb35e35d7d53f59beada1Johnny Chen /// @param[in] target 163bbc6342babdd58daa34bb35e35d7d53f59beada1Johnny Chen /// A valid SBTarget instance representing the debuggee. 164bbc6342babdd58daa34bb35e35d7d53f59beada1Johnny Chen /// 165cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// @param[in] name 166cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// The name of the global or static variable we are looking 167cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// for. 168cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// 169bbc6342babdd58daa34bb35e35d7d53f59beada1Johnny Chen /// @param[in] max_matches 170bbc6342babdd58daa34bb35e35d7d53f59beada1Johnny Chen /// Allow the number of matches to be limited to \a max_matches. 171cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// 172cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// @return 173cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen /// A list of matched variables in an SBValueList. 174cbb52a64ea9775af1fcca2e929d0d0b4aa698de4Johnny Chen //------------------------------------------------------------------ 175917c000e77fcf657099f59085d6436d179a39ea4Greg Clayton lldb::SBValueList 176917c000e77fcf657099f59085d6436d179a39ea4Greg Clayton FindGlobalVariables (lldb::SBTarget &target, 177917c000e77fcf657099f59085d6436d179a39ea4Greg Clayton const char *name, 178917c000e77fcf657099f59085d6436d179a39ea4Greg Clayton uint32_t max_matches); 179917c000e77fcf657099f59085d6436d179a39ea4Greg Clayton 180392bd8d8356a35a0ad7a9990e1e05d0509971c4bEnrico Granata //------------------------------------------------------------------ 181392bd8d8356a35a0ad7a9990e1e05d0509971c4bEnrico Granata /// Find the first global (or static) variable by name. 182392bd8d8356a35a0ad7a9990e1e05d0509971c4bEnrico Granata /// 183392bd8d8356a35a0ad7a9990e1e05d0509971c4bEnrico Granata /// @param[in] target 184392bd8d8356a35a0ad7a9990e1e05d0509971c4bEnrico Granata /// A valid SBTarget instance representing the debuggee. 185392bd8d8356a35a0ad7a9990e1e05d0509971c4bEnrico Granata /// 186392bd8d8356a35a0ad7a9990e1e05d0509971c4bEnrico Granata /// @param[in] name 187392bd8d8356a35a0ad7a9990e1e05d0509971c4bEnrico Granata /// The name of the global or static variable we are looking 188392bd8d8356a35a0ad7a9990e1e05d0509971c4bEnrico Granata /// for. 189392bd8d8356a35a0ad7a9990e1e05d0509971c4bEnrico Granata /// 190392bd8d8356a35a0ad7a9990e1e05d0509971c4bEnrico Granata /// @return 191392bd8d8356a35a0ad7a9990e1e05d0509971c4bEnrico Granata /// An SBValue that gets filled in with the found variable (if any). 192392bd8d8356a35a0ad7a9990e1e05d0509971c4bEnrico Granata //------------------------------------------------------------------ 193392bd8d8356a35a0ad7a9990e1e05d0509971c4bEnrico Granata lldb::SBValue 194392bd8d8356a35a0ad7a9990e1e05d0509971c4bEnrico Granata FindFirstGlobalVariable (lldb::SBTarget &target, const char *name); 195392bd8d8356a35a0ad7a9990e1e05d0509971c4bEnrico Granata 196979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata lldb::SBType 197979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata FindFirstType (const char* name); 198979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata 199979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata lldb::SBTypeList 200979e20d127335143ffc89c2e37ec3a8b717ff22dEnrico Granata FindTypes (const char* type); 201e0bd571a8050da2b3462c35c9f209cbc9755c750Jim Ingham 2020b93a7546473b15fb14dbc129f1fe5ed6ee14976Greg Clayton lldb::SBType 2030b93a7546473b15fb14dbc129f1fe5ed6ee14976Greg Clayton GetBasicType(lldb::BasicType type); 204a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton 205a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton //------------------------------------------------------------------ 206a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton /// Get all types matching \a type_mask from debug info in this 207a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton /// module. 208a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton /// 209a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton /// @param[in] type_mask 210a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton /// A bitfield that consists of one or more bits logically OR'ed 211a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton /// together from the lldb::TypeClass enumeration. This allows 212a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton /// you to request only structure types, or only class, struct 213a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton /// and union types. Passing in lldb::eTypeClassAny will return 214a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton /// all types found in the debug information for this module. 215a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton /// 216a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton /// @return 217a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton /// A list of types in this module that match \a type_mask 218a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton //------------------------------------------------------------------ 219a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton lldb::SBTypeList 220a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton GetTypes (uint32_t type_mask = lldb::eTypeClassAny); 221a8b56238ce138e70433a0ce0b4218c9257beae38Greg Clayton 22249f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton //------------------------------------------------------------------ 22349f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton /// Get the module version numbers. 22449f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton /// 22549f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton /// Many object files have a set of version numbers that describe 22649f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton /// the version of the executable or shared library. Typically there 22749f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton /// are major, minor and build, but there may be more. This function 22849f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton /// will extract the versions from object files if they are available. 22949f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton /// 23049f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton /// If \a versions is NULL, or if \a num_versions is 0, the return 23149f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton /// value will indicate how many version numbers are available in 23249f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton /// this object file. Then a subsequent call can be made to this 23349f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton /// function with a value of \a versions and \a num_versions that 23449f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton /// has enough storage to store some or all version numbers. 23549f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton /// 23649f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton /// @param[out] versions 23749f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton /// A pointer to an array of uint32_t types that is \a num_versions 23849f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton /// long. If this value is NULL, the return value will indicate 23949f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton /// how many version numbers are required for a subsequent call 24049f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton /// to this function so that all versions can be retrieved. If 24149f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton /// the value is non-NULL, then at most \a num_versions of the 24249f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton /// existing versions numbers will be filled into \a versions. 24349f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton /// If there is no version information available, \a versions 24449f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton /// will be filled with \a num_versions UINT32_MAX values 24549f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton /// and zero will be returned. 24649f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton /// 24749f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton /// @param[in] num_versions 24849f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton /// The maximum number of entries to fill into \a versions. If 24949f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton /// this value is zero, then the return value will indicate 25049f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton /// how many version numbers there are in total so another call 25149f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton /// to this function can be make with adequate storage in 25249f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton /// \a versions to get all of the version numbers. If \a 25349f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton /// num_versions is less than the actual number of version 25449f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton /// numbers in this object file, only \a num_versions will be 25549f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton /// filled into \a versions (if \a versions is non-NULL). 25649f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton /// 25749f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton /// @return 25849f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton /// This function always returns the number of version numbers 25949f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton /// that this object file has regardless of the number of 26049f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton /// version numbers that were copied into \a versions. 26149f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton //------------------------------------------------------------------ 26249f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton uint32_t 26349f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton GetVersion (uint32_t *versions, 26449f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton uint32_t num_versions); 26549f4bf21e0fb7675d67f95dafe66a098d3205650Greg Clayton 26624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprivate: 267b0e68d996b28cf81a28aeceefd69f7ed8d4aba99Greg Clayton friend class SBAddress; 268b0e68d996b28cf81a28aeceefd69f7ed8d4aba99Greg Clayton friend class SBFrame; 2693e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton friend class SBSection; 27024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner friend class SBSymbolContext; 27124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner friend class SBTarget; 27224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 27324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner explicit SBModule (const lldb::ModuleSP& module_sp); 27424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2750416bdf783a7dc2544b9ab034e225391f8f47343Greg Clayton ModuleSP 2760416bdf783a7dc2544b9ab034e225391f8f47343Greg Clayton GetSP () const; 2773e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton 2780416bdf783a7dc2544b9ab034e225391f8f47343Greg Clayton void 2790416bdf783a7dc2544b9ab034e225391f8f47343Greg Clayton SetSP (const ModuleSP &module_sp); 28024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 28163094e0bb161580564954dee512955c1c79d3476Greg Clayton lldb::ModuleSP m_opaque_sp; 28224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}; 28324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 28424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 28524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} // namespace lldb 28624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 28724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif // LLDB_SBModule_h_ 288