LLDB mainline
SymbolLocatorDebugSymbols.cpp File Reference
#include "SymbolLocatorDebugSymbols.h"
#include "Plugins/ObjectFile/wasm/ObjectFileWasm.h"
#include "lldb/Core/Debugger.h"
#include "lldb/Core/Module.h"
#include "lldb/Core/ModuleList.h"
#include "lldb/Core/ModuleSpec.h"
#include "lldb/Core/PluginManager.h"
#include "lldb/Core/Progress.h"
#include "lldb/Core/Section.h"
#include "lldb/Host/FileSystem.h"
#include "lldb/Host/Host.h"
#include "lldb/Host/HostInfo.h"
#include "lldb/Symbol/ObjectFile.h"
#include "lldb/Target/Target.h"
#include "lldb/Utility/ArchSpec.h"
#include "lldb/Utility/DataBuffer.h"
#include "lldb/Utility/DataExtractor.h"
#include "lldb/Utility/LLDBLog.h"
#include "lldb/Utility/Log.h"
#include "lldb/Utility/StreamString.h"
#include "lldb/Utility/Timer.h"
#include "lldb/Utility/UUID.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/ThreadPool.h"
#include "Host/macosx/cfcpp/CFCBundle.h"
#include "Host/macosx/cfcpp/CFCData.h"
#include "Host/macosx/cfcpp/CFCReleaser.h"
#include "Host/macosx/cfcpp/CFCString.h"
#include "mach/machine.h"
#include <CoreFoundation/CoreFoundation.h>
#include <cstring>
#include <dirent.h>
#include <dlfcn.h>
#include <memory>
#include <optional>
#include <pwd.h>

Go to the source code of this file.

Functions

static const DebugSymbolsDylibFunctions & GetDebugSymbolsDylibFunctions ()
static bool FileAtPathContainsArchAndUUID (const FileSpec &file_fspec, const ArchSpec *arch, const lldb_private::UUID *uuid)
static bool LookForDsymNextToExecutablePath (const ModuleSpec &mod_spec, const FileSpec &exec_fspec, FileSpec &dsym_fspec)
static bool LocateDSYMInVincinityOfExecutable (const ModuleSpec &module_spec, FileSpec &dsym_fspec)
static int LocateMacOSXFilesUsingDebugSymbols (const ModuleSpec &module_spec, ModuleSpec &return_module_spec)
static bool GetModuleSpecInfoFromUUIDDictionary (CFDictionaryRef uuid_dict, ModuleSpec &module_spec, Status &error, const std::string &command)
static llvm::StringRef GetDbgShellCommand ()
 It's expensive to check for the DBGShellCommands defaults setting.
static FileSpec GetDsymForUUIDExecutable ()
 Get the dsymForUUID executable and cache the result so we don't end up stat'ing the binary over and over.

Function Documentation

◆ FileAtPathContainsArchAndUUID()

◆ GetDbgShellCommand()

llvm::StringRef GetDbgShellCommand ( )
static

It's expensive to check for the DBGShellCommands defaults setting.

Only do it once per lldb run and cache the result.

Definition at line 967 of file SymbolLocatorDebugSymbols.cpp.

References PATH_MAX.

Referenced by lldb_private::SymbolLocatorDebugSymbols::DownloadObjectAndSymbolFile(), and GetDsymForUUIDExecutable().

◆ GetDebugSymbolsDylibFunctions()

const DebugSymbolsDylibFunctions & GetDebugSymbolsDylibFunctions ( )
static

◆ GetDsymForUUIDExecutable()

FileSpec GetDsymForUUIDExecutable ( )
static

Get the dsymForUUID executable and cache the result so we don't end up stat'ing the binary over and over.

Definition at line 990 of file SymbolLocatorDebugSymbols.cpp.

References GetDbgShellCommand(), lldb_private::FileSystem::Instance(), and lldb_private::FileSystem::Resolve().

Referenced by lldb_private::SymbolLocatorDebugSymbols::DownloadObjectAndSymbolFile().

◆ GetModuleSpecInfoFromUUIDDictionary()

◆ LocateDSYMInVincinityOfExecutable()

◆ LocateMacOSXFilesUsingDebugSymbols()

◆ LookForDsymNextToExecutablePath()