LLDB  mainline
Public Types | Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | List of all members
lldb_private::FileSpec Class Reference

#include "lldb/Utility/FileSpec.h"

Collaboration diagram for lldb_private::FileSpec:
Collaboration graph
[legend]

Public Types

using Style = llvm::sys::path::Style
 

Public Member Functions

 FileSpec ()
 
 FileSpec (llvm::StringRef path, Style style=Style::native)
 Constructor with path. More...
 
 FileSpec (llvm::StringRef path, const llvm::Triple &triple)
 
bool DirectoryEquals (const FileSpec &other) const
 
bool FileEquals (const FileSpec &other) const
 
bool operator== (const FileSpec &rhs) const
 Equal to operator. More...
 
bool operator!= (const FileSpec &rhs) const
 Not equal to operator. More...
 
bool operator< (const FileSpec &rhs) const
 Less than to operator. More...
 
 operator bool () const
 Convert to pointer operator. More...
 
bool operator! () const
 Logical NOT operator. More...
 
void Clear ()
 Clears the object state. More...
 
bool IsCaseSensitive () const
 Case sensitivity of path. More...
 
void Dump (llvm::raw_ostream &s) const
 Dump this object to a Stream. More...
 
Style GetPathStyle () const
 
const ConstStringGetDirectory () const
 Directory string const get accessor. More...
 
void SetDirectory (ConstString directory)
 Directory string set accessor. More...
 
void SetDirectory (llvm::StringRef directory)
 
void ClearDirectory ()
 Clear the directory in this object. More...
 
const ConstStringGetFilename () const
 Filename string const get accessor. More...
 
void SetFilename (ConstString filename)
 Filename string set accessor. More...
 
void SetFilename (llvm::StringRef filename)
 
void ClearFilename ()
 Clear the filename in this object. More...
 
bool IsSourceImplementationFile () const
 Returns true if the filespec represents an implementation source file (files with a ".c", ".cpp", ".m", ".mm" (many more) extension). More...
 
bool IsRelative () const
 Returns true if the filespec represents a relative path. More...
 
bool IsAbsolute () const
 Returns true if the filespec represents an absolute path. More...
 
void MakeAbsolute (const FileSpec &dir)
 Make the FileSpec absolute by treating it relative to dir. More...
 
void SetPath (llvm::StringRef p)
 Temporary helper for FileSystem change. More...
 
size_t GetPath (char *path, size_t max_path_length, bool denormalize=true) const
 Extract the full path to the file. More...
 
std::string GetPath (bool denormalize=true) const
 Extract the full path to the file. More...
 
ConstString GetPathAsConstString (bool denormalize=true) const
 Get the full path as a ConstString. More...
 
void GetPath (llvm::SmallVectorImpl< char > &path, bool denormalize=true) const
 Extract the full path to the file. More...
 
ConstString GetFileNameExtension () const
 Extract the extension of the file. More...
 
ConstString GetFileNameStrippingExtension () const
 Return the filename without the extension part. More...
 
size_t MemorySize () const
 Get the memory cost of this object. More...
 
void SetFile (llvm::StringRef path, Style style)
 Change the file specified with a new path. More...
 
void SetFile (llvm::StringRef path, const llvm::Triple &triple)
 Change the file specified with a new path. More...
 
bool IsResolved () const
 
void SetIsResolved (bool is_resolved)
 Set if the file path has been resolved or not. More...
 
FileSpec CopyByAppendingPathComponent (llvm::StringRef component) const
 
FileSpec CopyByRemovingLastPathComponent () const
 
void PrependPathComponent (llvm::StringRef component)
 
void PrependPathComponent (const FileSpec &new_path)
 
void AppendPathComponent (llvm::StringRef component)
 
void AppendPathComponent (const FileSpec &new_path)
 
bool RemoveLastPathComponent ()
 Removes the last path component by replacing the current path with its parent. More...
 
ConstString GetLastPathComponent () const
 

Static Public Member Functions

static int Compare (const FileSpec &lhs, const FileSpec &rhs, bool full)
 Compare two FileSpec objects. More...
 
static bool Equal (const FileSpec &a, const FileSpec &b, bool full)
 
static bool Match (const FileSpec &pattern, const FileSpec &file)
 Match FileSpec pattern against FileSpec file. More...
 
static llvm::Optional< StyleGuessPathStyle (llvm::StringRef absolute_path)
 Attempt to guess path style for a given path string. More...
 

Protected Types

enum  Absolute : uint8_t { Absolute::Calculate, Absolute::Yes, Absolute::No }
 

Protected Member Functions

void SetFile (llvm::StringRef path)
 
void PathWasModified ()
 Called anytime m_directory or m_filename is changed to clear any cached state in this object. More...
 

Protected Attributes

ConstString m_directory
 The uniqued directory path. More...
 
ConstString m_filename
 The uniqued filename path. More...
 
bool m_is_resolved = false
 True if this path has been resolved. More...
 
Absolute m_absolute = Absolute::Calculate
 Cache absoluteness. More...
 
Style m_style
 The syntax that this path uses (e.g. Windows / Posix) More...
 

Detailed Description

A file utility class.

A file specification class that divides paths up into a directory and basename. These string values of the paths are put into uniqued string pools for fast comparisons and efficient memory usage.

Another reason the paths are split into the directory and basename is to allow efficient debugger searching. Often in a debugger the user types in the basename of the file, for example setting a breakpoint by file and line, or specifying a module (shared library) to limit the scope in which to execute a command. The user rarely types in a full path. When the paths are already split up, it makes it easy for us to compare only the basenames of a lot of file specifications without having to split up the file path each time to get to the basename.

Definition at line 55 of file FileSpec.h.

Member Typedef Documentation

◆ Style

using lldb_private::FileSpec::Style = llvm::sys::path::Style

Definition at line 57 of file FileSpec.h.

Member Enumeration Documentation

◆ Absolute

enum lldb_private::FileSpec::Absolute : uint8_t
strongprotected
Enumerator
Calculate 
Yes 
No 

Definition at line 423 of file FileSpec.h.

Constructor & Destructor Documentation

◆ FileSpec() [1/3]

FileSpec::FileSpec ( )

Definition at line 66 of file FileSpec.cpp.

Referenced by CopyByRemovingLastPathComponent().

◆ FileSpec() [2/3]

FileSpec::FileSpec ( llvm::StringRef  path,
Style  style = Style::native 
)
explicit

Constructor with path.

Takes a path to a file which can be just a filename, or a full path. If path is not nullptr or empty, this function will call FileSpec::SetFile (const char *path).

Parameters
[in]pathThe full or partial path to a file.
[in]styleThe style of the path
See also
FileSpec::SetFile (const char *path)

Definition at line 69 of file FileSpec.cpp.

References SetFile().

◆ FileSpec() [3/3]

FileSpec::FileSpec ( llvm::StringRef  path,
const llvm::Triple &  triple 
)
explicit

Definition at line 73 of file FileSpec.cpp.

Member Function Documentation

◆ AppendPathComponent() [1/2]

void FileSpec::AppendPathComponent ( const FileSpec new_path)

Definition at line 458 of file FileSpec.cpp.

References AppendPathComponent(), and GetPath().

◆ AppendPathComponent() [2/2]

void FileSpec::AppendPathComponent ( llvm::StringRef  component)

Definition at line 451 of file FileSpec.cpp.

References GetPath(), m_style, and SetFile().

Referenced by AppendPathComponent(), AppendPathComponents(), BuildCpusSection(), BuildModulesSection(), BuildThreadsSection(), lldb_private::HostInfoBase::ComputeGlobalTempFileDirectory(), lldb_private::HostInfoBase::ComputeProcessTempFileDirectory(), CopyByAppendingPathComponent(), lldb_private::TargetList::CreateTargetInternal(), lldb_private::PlatformDarwin::FindBundleBinaryInExecSearchPaths(), lldb_private::DataFileCache::GetCacheFilePath(), GetCommandLineToolsLibraryPath(), lldb_private::process_gdb_remote::GDBRemoteCommunicationServerPlatform::GetDomainSocketPath(), SymbolFileDWARF::GetDwoSymbolFileForCompileUnit(), lldb_private::PlatformRemoteDarwinDevice::GetFileInSDK(), lldb_private::Platform::GetModuleCacheRoot(), lldb_private::PlatformDarwin::GetSDKDirectoryForModules(), lldb_private::PlatformDarwinDevice::GetSharedModuleWithLocalCache(), lldb_private::REPL::GetSourcePath(), lldb_private::Platform::Install(), lldb_private::Target::Install(), lldb_private::Platform::LoadImage(), lldb_private::PlatformDarwin::LocateExecutable(), LookForDsymNextToExecutablePath(), lldb_private::HostInfoAndroid::ResolveLibraryPath(), SaveTraceBundleDescription(), lldb_private::process_gdb_remote::GDBRemoteCommunication::StartDebugserverProcess(), SymbolFileDWARF::UpdateExternalModuleListIfNeeded(), lldb_private::PlatformDarwinDevice::UpdateSDKDirectoryInfosIfNeeded(), WriteContextSwitchTrace(), and WriteIntelPTTrace().

◆ Clear()

void FileSpec::Clear ( )

Clears the object state.

Clear this object by releasing both the directory and filename string values and reverting them to empty strings.

Definition at line 257 of file FileSpec.cpp.

References lldb_private::ConstString::Clear(), m_directory, m_filename, and PathWasModified().

Referenced by lldb_private::FileAction::Clear(), lldb_private::LineEntry::Clear(), lldb_private::ProcessInfo::Clear(), lldb_private::OptionValueFileColonLine::Clear(), lldb_private::FileLineResolver::Clear(), lldb_private::Declaration::Clear(), lldb_private::ProcessLaunchInfo::Clear(), lldb_private::DynamicLoaderDarwin::ImageInfo::Clear(), lldb_private::ModuleSpec::Clear(), DYLDRendezvous::SOEntry::clear(), lldb_private::HostInfoBase::ComputeGlobalTempFileDirectory(), lldb_private::PlatformWindows::DoLoadImage(), PlatformPOSIX::DoLoadImage(), lldb_private::Host::GetBundleDirectory(), lldb_private::Function::GetEndLineSourceInfo(), lldb_private::PlatformRemoteDarwinDevice::GetFileInSDK(), lldb_private::File::GetFileSpec(), lldb_private::NativeFile::GetFileSpec(), lldb_private::process_netbsd::NativeProcessNetBSD::GetLoadedModuleFileSpec(), lldb_private::process_freebsd::NativeProcessFreeBSD::GetLoadedModuleFileSpec(), lldb_private::process_linux::NativeProcessLinux::GetLoadedModuleFileSpec(), lldb_private::Function::GetStartLineSourceInfo(), LocateDSYMInVincinityOfExecutable(), LocateMacOSXFilesUsingDebugSymbols(), lldb_private::ProcessInfo::SetExecutableFile(), SetFile(), lldb::SBLineEntry::SetFileSpec(), lldb_private::Platform::SetWorkingDirectory(), and lldb_private::process_gdb_remote::GDBRemoteCommunication::StartDebugserverProcess().

◆ ClearDirectory()

void FileSpec::ClearDirectory ( )

◆ ClearFilename()

void FileSpec::ClearFilename ( )

Clear the filename in this object.

Definition at line 352 of file FileSpec.cpp.

References lldb_private::ConstString::Clear(), m_filename, and PathWasModified().

◆ Compare()

int FileSpec::Compare ( const FileSpec lhs,
const FileSpec rhs,
bool  full 
)
static

Compare two FileSpec objects.

If full is true, then both the directory and the filename must match. If full is false, then the directory names for lhs and rhs are only compared if they are both not empty. This allows a FileSpec object to only contain a filename and it can match FileSpec objects that have matching filenames with different paths.

Parameters
[in]lhsA const reference to the Left Hand Side object to compare.
[in]rhsA const reference to the Right Hand Side object to compare.
[in]fullIf true, then both the directory and filenames will have to match for a compare to return zero (equal to). If false and either directory from lhs or rhs is empty, then only the filename will be compared, else a full comparison is done.
Returns
-1 if lhs is less than rhs, 0 if lhs is equal to rhs, 1 if lhs is greater than rhs

Definition at line 271 of file FileSpec.cpp.

References lldb_private::ConstString::Compare(), IsCaseSensitive(), m_directory, and m_filename.

Referenced by lldb_private::Declaration::Compare(), lldb_private::LineEntry::Compare(), lldb_private::Declaration::FileAndLineEqual(), operator<(), and lldb_private::FileLineResolver::SearchCallback().

◆ CopyByAppendingPathComponent()

FileSpec FileSpec::CopyByAppendingPathComponent ( llvm::StringRef  component) const

◆ CopyByRemovingLastPathComponent()

FileSpec FileSpec::CopyByRemovingLastPathComponent ( ) const

◆ DirectoryEquals()

bool FileSpec::DirectoryEquals ( const FileSpec other) const

Definition at line 226 of file FileSpec.cpp.

References lldb_private::ConstString::Equals(), IsCaseSensitive(), and m_directory.

Referenced by operator==().

◆ Dump()

void FileSpec::Dump ( llvm::raw_ostream &  s) const

Dump this object to a Stream.

Dump the object to the supplied stream s. If the object contains a valid directory name, it will be displayed followed by a directory delimiter, and the filename.

Parameters
[in]sThe stream to which to dump the object description.

Definition at line 322 of file FileSpec.cpp.

References GetPath(), m_filename, m_style, and string().

Referenced by lldb_private::wasm::ObjectFileWasm::Dump(), lldb_private::ProcessInstanceInfo::Dump(), DumpFullpath(), lldb_private::LineEntry::DumpStopContext(), lldb_private::FormatEntity::FormatFileSpec(), lldb_private::Module::LoadScriptingResourceInTarget(), lldb_private::operator<<(), and UUIDsMatch().

◆ Equal()

bool FileSpec::Equal ( const FileSpec a,
const FileSpec b,
bool  full 
)
static

◆ FileEquals()

bool FileSpec::FileEquals ( const FileSpec other) const

Definition at line 231 of file FileSpec.cpp.

References lldb_private::ConstString::Equals(), IsCaseSensitive(), and m_filename.

Referenced by Equal(), Match(), and operator==().

◆ GetDirectory()

const ConstString& lldb_private::FileSpec::GetDirectory ( ) const
inline

◆ GetFilename()

const ConstString& lldb_private::FileSpec::GetFilename ( ) const
inline

Filename string const get accessor.

Returns
A const reference to the filename string object.

Definition at line 239 of file FileSpec.h.

References m_filename.

Referenced by CommandObjectTargetSymbolsAdd::AddModuleSymbols(), lldb_private::AppleObjCRuntime::AppleIsModuleObjCLibrary(), lldb_private::SourceManager::File::CommonInitializer(), lldb_private::Declaration::Dump(), lldb_private::ProcessInstanceInfo::Dump(), lldb_private::Target::Dump(), DumpBasename(), DumpCompileUnitLineTable(), ObjectFileELF::DumpDependentModules(), DumpFile(), CommandObjectSourceInfo::DumpFileLinesInCompUnit(), CommandObjectSourceInfo::DumpLinesInSymbolContexts(), lldb_private::Section::DumpName(), lldb_private::LineEntry::DumpStopContext(), lldb_private::Declaration::DumpStopContext(), lldb_private::RenderScriptRuntime::FixupScriptDetails(), lldb_private::FormatEntity::FormatFileSpec(), lldb_private::ModuleCache::Get(), lldb_private::Module::GetCacheKey(), lldb_private::PlatformRemoteDarwinDevice::GetConnectedSDKIndex(), lldb_private::AddressResolverFileLine::GetDescription(), lldb_private::BreakpointLocation::GetDescription(), lldb_private::Module::GetDescription(), lldb_private::Address::GetDescription(), lldb::SBProcess::GetDescription(), lldb_private::SearchFilterByModule::GetDescription(), lldb_private::Target::GetEntryPointAddress(), lldb_private::DWARFCallFrameInfo::GetFDEIndex(), GetFreeBSDProcessArgs(), lldb_private::ScriptedProcess::GetLoadedDynamicLibrariesInfos(), lldb_private::process_netbsd::NativeProcessNetBSD::GetLoadedModuleFileSpec(), lldb_private::process_freebsd::NativeProcessFreeBSD::GetLoadedModuleFileSpec(), lldb_private::process_linux::NativeProcessLinux::GetLoadedModuleFileSpec(), GetMacOSXProcessArgs(), lldb_private::Breakpoint::GetMatchingFileLine(), ObjectFilePECOFF::GetModuleSpecifications(), lldb_private::ProcessInfo::GetName(), lldb_private::ProcessInfo::GetNameAsStringRef(), GetNetBSDProcessArgs(), GetOpenBSDProcessArgs(), lldb_private::Target::GetOrCreateModule(), lldb_private::ModuleList::GetSharedModule(), lldb_private::PlatformDarwinDevice::GetSharedModuleWithLocalCache(), lldb_private::Args::GetShellSafeArgument(), lldb_private::SymbolFileOnDemand::GetSymbolFileName(), lldb_private::Platform::Install(), lldb_private::Thread::JumpToLine(), lldb_private::formatters::LibcxxFunctionSummaryProvider(), lldb_private::Platform::LoadImage(), lldb_private::Platform::LoadImageUsingPaths(), loadMatchingPDBFile(), LocateDSYMInVincinityOfExecutable(), lldb_private::Symbols::LocateExecutableObjectFile(), lldb_private::PlatformDarwin::LocateExecutableScriptingResources(), lldb_private::Symbols::LocateExecutableSymbolFile(), LocateExecutableSymbolFileDsym(), LookForDsymNextToExecutablePath(), Match(), lldb_private::InstrumentationRuntime::ModulesDidLoad(), CommandObjectSourceList::SourceInfo::operator<(), ObjectFileMachO::ParseSymtab(), ObjectFileELF::ParseSymtab(), lldb_private::ModuleCache::Put(), RecurseCopy_Callback(), lldb_private::RegisterAssertFrameRecognizer(), RegisterObjCExceptionRecognizer(), lldb_private::Module::ReportWarningOptimization(), lldb_private::FileSystem::Resolve(), lldb_private::FileSystem::ResolveExecutableLocation(), lldb_private::AddressResolverFileLine::SearchCallback(), and lldb_private::BreakpointResolverFileLine::SearchCallback().

◆ GetFileNameExtension()

ConstString FileSpec::GetFileNameExtension ( ) const

Extract the extension of the file.

Returns a ConstString that represents the extension of the filename for this FileSpec object. If this object does not represent a file, or the filename has no extension, ConstString(nullptr) is returned. The dot ('.') character is not returned as part of the extension

Returns
Returns the extension of the file as a ConstString object.

Definition at line 400 of file FileSpec.cpp.

References lldb_private::ConstString::GetStringRef(), m_filename, and m_style.

Referenced by IsSourceImplementationFile(), lldb_private::Lua::LoadModule(), LoadPluginCallback(), and ObjectFileELF::ParseSymbols().

◆ GetFileNameStrippingExtension()

ConstString FileSpec::GetFileNameStrippingExtension ( ) const

Return the filename without the extension part.

Returns a ConstString that represents the filename of this object without the extension part (e.g. for a file named "foo.bar", "foo" is returned)

Returns
Returns the filename without extension as a ConstString object.

Definition at line 405 of file FileSpec.cpp.

References lldb_private::ConstString::GetStringRef(), m_filename, and m_style.

Referenced by CommandObjectTargetSymbolsAdd::AddModuleSymbols(), lldb_private::Lua::LoadModule(), and lldb_private::PlatformDarwin::LocateExecutableScriptingResources().

◆ GetLastPathComponent()

ConstString FileSpec::GetLastPathComponent ( ) const

◆ GetPath() [1/3]

std::string FileSpec::GetPath ( bool  denormalize = true) const

Extract the full path to the file.

Extract the directory and path into a std::string, which is returned.

Returns
Returns a std::string with the directory and filename concatenated.

Definition at line 374 of file FileSpec.cpp.

References GetPath(), and string().

◆ GetPath() [2/3]

size_t FileSpec::GetPath ( char *  path,
size_t  max_path_length,
bool  denormalize = true 
) const

Extract the full path to the file.

Extract the directory and path into a fixed buffer. This is needed as the directory and path are stored in separate string values.

Parameters
[out]pathThe buffer in which to place the extracted full path.
[in]max_path_lengthThe maximum length of path.
Returns
Returns the number of characters that would be needed to properly copy the full path into path. If the returned number is less than max_path_length, then the path is properly copied and terminated. If the return value is >= max_path_length, then the path was truncated (but is still NULL terminated).

Definition at line 364 of file FileSpec.cpp.

References string().

Referenced by lldb_private::PlatformDarwin::AddClangModuleCompilationOptionsForSDKType(), CommandObjectTargetSymbolsAdd::AddModuleSymbols(), lldb_private::Block::AddRange(), lldb_private::CppModuleConfiguration::analyzeFile(), AppendPathComponent(), lldb_private::Process::Attach(), BuildCpusSection(), lldb_private::process_gdb_remote::ProcessGDBRemote::BuildDynamicRegisterInfo(), BuildModulesSection(), BuildThreadsSection(), SymbolFilePDB::CalculateAbilities(), lldb_private::process_gdb_remote::GDBRemoteCommunicationClient::CalculateMD5(), lldb_private::Platform::CalculateMD5(), lldb_private::TargetProperties::CheckJITObjectsDir(), lldb_private::ComputeClangResourceDirectory(), lldb_private::HostInfoBase::ComputeGlobalTempFileDirectory(), lldb_private::HostInfoPosix::ComputeHeaderDirectory(), lldb_private::HostInfoMacOSX::ComputeHeaderDirectory(), lldb_private::HostInfoBase::ComputePathRelativeToLibrary(), lldb_private::HostInfoBase::ComputeProcessTempFileDirectory(), lldb_private::HostInfoMacOSX::ComputeSupportExeDirectory(), lldb_private::HostInfoLinux::ComputeSystemPluginsDirectory(), lldb_private::HostInfoMacOSX::ComputeSystemPluginsDirectory(), lldb_private::ProcessLaunchInfo::ConvertArgumentsForLaunchingInShell(), CopyByRemovingLastPathComponent(), lldb_private::ClangModulesDeclVendor::Create(), lldb_private::Target::CreateBreakpointsFromFile(), lldb_private::FileSystem::CreateDataBuffer(), ProcessFreeBSDKernel::CreateInstance(), SymbolVendorMacOSX::CreateInstance(), ProcessMachCore::CreateInstance(), lldb_private::minidump::ProcessMinidump::CreateInstance(), lldb_private::wasm::ObjectFileWasm::CreateInstance(), ProcessElfCore::CreateInstance(), lldb_private::TypeSystemClang::CreateInstance(), lldb_private::process_gdb_remote::GDBRemoteCommunicationServerCommon::CreateProcessInfoResponse(), lldb_private::platform_gdb_server::PlatformRemoteGDBServer::CreateSymlink(), lldb_private::process_gdb_remote::GDBRemoteCommunicationClient::CreateSymlink(), lldb_private::TargetList::CreateTargetInternal(), lldb_private::FileSystem::CreateWritableDataBuffer(), lldb_private::DebuggerThread::DebuggerThreadLaunchRoutine(), lldb_private::DebuggerThread::DebugLaunch(), lldb_private::PlatformQemuUser::DebugProcess(), DefaultComputeClangResourceDirectory(), lldb_private::FileSystem::DirBegin(), CommandObjectSourceList::DisplayFunctionSource(), CommandObjectTargetCreate::DoExecute(), CommandObjectMemoryRead::DoExecute(), CommandObjectSettingsWrite::DoExecute(), CommandObjectTargetVariable::DoExecute(), CommandObjectPlatformProcessLaunch::DoExecute(), CommandObjectTargetModulesAdd::DoExecute(), CommandObjectTargetModulesLoad::DoExecute(), CommandObjectTargetSymbolsAdd::DoExecute(), CommandObjectRenderScriptRuntimeAllocationDump::DoExecute(), lldb_private::PlatformWindows::DoLoadImage(), PlatformPOSIX::DoLoadImage(), lldb_private::Platform::DownloadModuleSlice(), lldb_private::Symtab::Dump(), lldb_private::FileAction::Dump(), Dump(), lldb_private::Module::Dump(), DumpFullpath(), DumpTargetInfo(), lldb_private::OptionValueFileSpec::DumpValue(), lldb_private::FileSystem::Exists(), lldb_private::PathMappingList::FindFile(), lldb_private::PlatformDarwin::FindSDKInXcodeForModules(), lldb_private::DynamicLoaderDarwin::FindTargetModuleForImageInfo(), lldb_private::Function::GetBlock(), lldb_private::FileSystem::GetByteSize(), lldb_private::GetClangResourceDir(), lldb_private::BreakpointResolverFileLine::GetDescription(), lldb_private::FileLineResolver::GetDescription(), lldb_private::Module::GetDescription(), lldb_private::PlatformDarwinDevice::GetDeviceSupportDirectoryForOSVersion(), lldb_private::process_gdb_remote::GDBRemoteCommunicationServerPlatform::GetDomainSocketPath(), SymbolFileDWARF::GetDwoSymbolFileForCompileUnit(), GetEnvDeveloperDir(), PlatformPOSIX::GetFile(), lldb_private::platform_android::PlatformAndroid::GetFile(), lldb_private::OptionValueFileSpec::GetFileContents(), lldb_private::process_gdb_remote::GDBRemoteCommunicationClient::GetFileExists(), lldb_private::NativeProcessWindows::GetFileLoadAddress(), lldb_private::process_gdb_remote::ProcessGDBRemote::GetFileLoadAddress(), lldb_private::platform_gdb_server::PlatformRemoteGDBServer::GetFilePermissions(), lldb_private::process_gdb_remote::GDBRemoteCommunicationClient::GetFilePermissions(), lldb_private::Platform::GetFilePermissions(), lldb_private::process_gdb_remote::GDBRemoteCommunicationClient::GetFileSize(), lldb_private::Platform::GetFileSize(), GetLastPathComponent(), lldb_private::NativeProcessWindows::GetLoadedModuleFileSpec(), lldb_private::InstrumentationRuntimeTSan::GetLocationDescription(), lldb_private::FileSystem::GetModificationTime(), SymbolFileDWARFDebugMap::GetModuleByCompUnitInfo(), lldb_private::process_gdb_remote::GDBRemoteCommunicationServerCommon::GetModuleInfo(), lldb_private::process_gdb_remote::GDBRemoteCommunicationClient::GetModuleInfo(), lldb_private::platform_gdb_server::PlatformRemoteGDBServer::GetModuleSpec(), lldb_private::process_gdb_remote::ProcessGDBRemote::GetModuleSpec(), lldb_private::ObjectFilePDB::GetModuleSpecifications(), ObjectFileELF::GetModuleSpecifications(), GetModuleSpecInfoFromUUIDDictionary(), lldb_private::SymbolContext::GetParentOfInlinedScope(), GetPath(), GetPathAsConstString(), lldb_private::FileSystem::GetPermissions(), GetRelativePath(), lldb_private::platform_gdb_server::PlatformRemoteGDBServer::GetRemoteWorkingDirectory(), lldb_private::platform_linux::PlatformLinux::GetResumeCountForLaunchInfo(), lldb_private::platform_netbsd::PlatformNetBSD::GetResumeCountForLaunchInfo(), lldb_private::PlatformDarwin::GetResumeCountForLaunchInfo(), lldb_private::IRExecutionUnit::GetRunnableInfo(), lldb_private::PlatformMacOSX::GetSDKDirectory(), lldb::SBSection::GetSectionData(), ObjectFileMachO::GetSharedCacheUUID(), lldb_private::PlatformRemoteDarwinDevice::GetSharedModule(), lldb_private::PlatformDarwin::GetSharedModule(), lldb_private::ModuleList::GetSharedModule(), lldb_private::PlatformDarwinDevice::GetSharedModuleWithLocalCache(), lldb_private::REPL::GetSourcePath(), lldb_private::PlatformRemoteDarwinDevice::GetStatus(), lldb_private::FileSystem::GetStatus(), lldb_private::PlatformRemoteDarwinDevice::GetSymbolFile(), lldb_private::PlatformAppleSimulator::GetSymbolFile(), lldb_private::Value::GetValueAsData(), lldb_private::HostInfoMacOSX::GetXcodeContentsDirectory(), lldb_private::process_gdb_remote::GDBRemoteCommunicationServerCommon::Handle_jModulesInfo(), lldb_private::process_gdb_remote::GDBRemoteCommunicationServerCommon::Handle_qModuleInfo(), HandleFileAction(), lldb_private::Module::Hash(), HexagonDYLDRendezvous::HexagonDYLDRendezvous(), lldb::SBPlatform::Install(), lldb_private::Platform::Install(), lldb_private::platform_android::AdbClient::SyncService::internalPullFile(), lldb_private::platform_android::AdbClient::SyncService::internalPushFile(), lldb_private::platform_android::AdbClient::SyncService::internalStat(), IsAbsolute(), lldb_private::FileSystem::IsDirectory(), lldb_private::FileSystem::IsLocal(), lldb_private::Target::Launch(), lldb_private::process_gdb_remote::GDBRemoteCommunicationServerPlatform::LaunchGDBServer(), lldb_private::Process::LaunchPrivate(), lldb_private::ProcessLauncherWindows::LaunchProcess(), lldb_private::ProcessDebugger::LaunchProcess(), lldb_private::Platform::LaunchProcess(), lldb_private::RenderScriptRuntime::LoadAllocation(), LoadPlugin(), LoadPluginCallback(), lldb_private::Trace::LoadPostMortemTraceFromFile(), lldb_private::Module::LoadScriptingResourceInTarget(), LocateDSYMInVincinityOfExecutable(), lldb_private::PlatformDarwin::LocateExecutableScriptingResources(), lldb_private::Symbols::LocateExecutableSymbolFile(), LocateMacOSXFilesUsingDebugSymbols(), lldb_private::ModuleList::LogUUIDAndPaths(), lldb_private::FileSystem::MakeAbsolute(), MakeAbsoluteAndRemap(), MakeCacheFolderForFile(), lldb_private::platform_gdb_server::PlatformRemoteGDBServer::MakeDirectory(), lldb_private::process_gdb_remote::GDBRemoteCommunicationClient::MakeDirectory(), lldb_private::Platform::MakeDirectory(), lldb_private::ObjectFile::MapFileData(), ObjectFileELF::MapFileDataWritable(), lldb_private::Module::Module(), lldb_private::ObjectFile::ObjectFile(), lldb_private::Trace::OnDataFileRead(), lldb_private::FileSystem::Open(), lldb_private::process_gdb_remote::GDBRemoteCommunicationClient::OpenFile(), ObjectFilePECOFF::ParseDependentModules(), SymbolFileDWARF::ParseImportedModules(), lldb_private::StructuredData::ParseJSONFromFile(), lldb_private::lldb_renderscript::RSModuleDescriptor::ParseRSInfo(), PrependPathComponent(), lldb_private::ModuleCache::Put(), lldb::SBPlatform::Put(), PlatformPOSIX::PutFile(), lldb_private::platform_android::PlatformAndroid::PutFile(), lldb_private::Platform::PutFile(), lldb_private::FileSystem::Readable(), lldb_private::FileSystem::Readlink(), lldb_private::Process::ReadModuleFromMemory(), RecurseCopy_Callback(), lldb_private::FileSystem::RemoveFile(), RemoveLastPathComponent(), lldb_private::DebuggerStats::ReportStatistics(), lldb_private::FileSystem::Resolve(), lldb_private::RemoteAwarePlatform::ResolveExecutable(), lldb_private::PlatformRemoteDarwinDevice::ResolveExecutable(), lldb_private::PlatformAppleSimulator::ResolveExecutable(), lldb_private::Platform::ResolveExecutable(), DynamicLoaderPOSIXDYLD::ResolveExecutableModule(), lldb_private::Module::ResolveSymbolContextsForFileSpec(), lldb_private::FileSystem::ResolveSymbolicLink(), lldb_private::PathMappingList::ReverseRemapPath(), lldb_private::Host::RunShellCommand(), lldb_private::process_gdb_remote::GDBRemoteCommunicationClient::RunShellCommand(), ObjectFileMachO::SaveCore(), lldb_private::PluginManager::SaveCore(), lldb_private::SaveMiniDump(), lldb_private::trace_intel_pt::TraceIntelPTBundleSaver::SaveToDisk(), SaveTraceBundleDescription(), lldb_private::process_gdb_remote::GDBRemoteCommunicationClient::SendArgumentsPacket(), lldb_private::Target::SerializeBreakpointsToFile(), lldb_private::BreakpointResolverFileLine::SerializeToStructuredData(), lldb_private::BreakpointResolverAddress::SerializeToStructuredData(), lldb_private::SearchFilterByModule::SerializeToStructuredData(), lldb_private::ProcessInfo::SetExecutableFile(), lldb_private::platform_gdb_server::PlatformRemoteGDBServer::SetFilePermissions(), lldb_private::process_gdb_remote::GDBRemoteCommunicationClient::SetFilePermissions(), lldb_private::Platform::SetFilePermissions(), CommandObjectSourceList::CommandOptions::SetOptionValue(), lldb_private::Symbol::SetReExportedSymbolSharedLibrary(), lldb_private::platform_gdb_server::PlatformRemoteGDBServer::SetRemoteWorkingDirectory(), lldb_private::Platform::SetRemoteWorkingDirectory(), lldb_private::SectionLoadList::SetSectionUnloaded(), lldb_private::process_gdb_remote::GDBRemoteCommunicationClient::SetSTDERR(), lldb_private::process_gdb_remote::GDBRemoteCommunicationClient::SetSTDIN(), lldb_private::process_gdb_remote::GDBRemoteCommunicationClient::SetSTDOUT(), lldb_private::Module::SetSymbolFileFileSpec(), SetupModuleHeaderPaths(), lldb_private::process_gdb_remote::GDBRemoteCommunicationClient::SetWorkingDir(), lldb_private::Platform::SetWorkingDirectory(), lldb_private::platform_android::AdbClient::ShellToFile(), lldb_private::process_gdb_remote::GDBRemoteCommunication::StartDebugserverProcess(), lldb::SBThread::StepOverUntil(), lldb_private::FileSystem::Symlink(), lldb_private::OptionValueFileSpec::ToJSON(), lldb_private::platform_gdb_server::PlatformRemoteGDBServer::Unlink(), lldb_private::process_gdb_remote::GDBRemoteCommunicationClient::Unlink(), lldb_private::Platform::Unlink(), lldb_private::DynamicLoaderDarwin::UnloadModuleSections(), DYLDRendezvous::UpdateExecutablePath(), SymbolFileDWARF::UpdateExternalModuleListIfNeeded(), lldb_private::PlatformDarwinDevice::UpdateSDKDirectoryInfosIfNeeded(), lldb_private::ModuleListProperties::UpdateSymlinkMappings(), WriteBytesToDisk(), and lldb_private::Module::~Module().

◆ GetPath() [3/3]

void FileSpec::GetPath ( llvm::SmallVectorImpl< char > &  path,
bool  denormalize = true 
) const

Extract the full path to the file.

Extract the directory and path into an llvm::SmallVectorImpl<>

Definition at line 384 of file FileSpec.cpp.

References lldb_private::ConstString::GetStringRef(), m_directory, m_filename, and m_style.

◆ GetPathAsConstString()

ConstString FileSpec::GetPathAsConstString ( bool  denormalize = true) const

Get the full path as a ConstString.

This method should only be used when you need a ConstString or the const char * from a ConstString to ensure permanent lifetime of C string. Anyone needing the path temporarily should use the GetPath() method that returns a std:string.

Definition at line 380 of file FileSpec.cpp.

References GetPath().

Referenced by lldb_private::HostInfoBase::ComputeGlobalTempFileDirectory(), lldb_private::HostInfoBase::ComputeProcessTempFileDirectory(), lldb_private::HostInfoMacOSX::ComputeUserPluginsDirectory(), lldb_private::platform_android::PlatformAndroid::GetFile(), lldb_private::FileAction::GetPath(), lldb_private::Platform::Install(), lldb_private::PlatformDarwin::LocateExecutable(), and RecurseCopy_Callback().

◆ GetPathStyle()

FileSpec::Style FileSpec::GetPathStyle ( ) const

◆ GuessPathStyle()

llvm::Optional< FileSpec::Style > FileSpec::GuessPathStyle ( llvm::StringRef  absolute_path)
static

Attempt to guess path style for a given path string.

It returns a style, if it was able to make a reasonable guess, or None if it wasn't. The guess will be correct if the input path was a valid absolute path on the system which produced it. On other paths the result of this function is unreliable (e.g. "c:\foo.txt" is a valid relative posix path).

Definition at line 307 of file FileSpec.cpp.

Referenced by lldb_private::PathMappingList::RemapPath(), and lldb_private::PathMappingList::ReverseRemapPath().

◆ IsAbsolute()

bool FileSpec::IsAbsolute ( ) const

Returns true if the filespec represents an absolute path.

Returns
true if the filespec represents an absolute path, false otherwise.

Definition at line 495 of file FileSpec.cpp.

References Calculate, GetPath(), m_absolute, m_style, No, and Yes.

Referenced by lldb_private::HostInfoLinux::ComputeSupportExeDirectory(), IsRelative(), lldb_private::Platform::LoadImageUsingPaths(), and lldb_private::Symbols::LocateExecutableSymbolFile().

◆ IsCaseSensitive()

bool lldb_private::FileSpec::IsCaseSensitive ( ) const
inline

Case sensitivity of path.

Returns
true if the file path is case sensitive (POSIX), false if case insensitive (Windows).

Definition at line 204 of file FileSpec.h.

References m_style.

Referenced by Compare(), lldb_private::BreakpointResolverFileLine::DeduceSourceMapping(), DirectoryEquals(), and FileEquals().

◆ IsRelative()

bool FileSpec::IsRelative ( ) const

◆ IsResolved()

bool lldb_private::FileSpec::IsResolved ( ) const
inline

Definition at line 379 of file FileSpec.h.

References m_is_resolved.

◆ IsSourceImplementationFile()

bool FileSpec::IsSourceImplementationFile ( ) const

Returns true if the filespec represents an implementation source file (files with a ".c", ".cpp", ".m", ".mm" (many more) extension).

Returns
true if the filespec represents an implementation source file, false otherwise.

Definition at line 478 of file FileSpec.cpp.

References lldb_private::RegularExpression::Execute(), GetFileNameExtension(), and lldb_private::ConstString::GetStringRef().

Referenced by lldb_private::Target::CreateBreakpoint().

◆ MakeAbsolute()

void FileSpec::MakeAbsolute ( const FileSpec dir)

Make the FileSpec absolute by treating it relative to dir.

Absolute FileSpecs are never changed by this function.

Definition at line 514 of file FileSpec.cpp.

References IsRelative(), and PrependPathComponent().

Referenced by CommandObjectCommandsSource::DoExecute(), and MakeAbsoluteAndRemap().

◆ Match()

bool FileSpec::Match ( const FileSpec pattern,
const FileSpec file 
)
static

◆ MemorySize()

size_t FileSpec::MemorySize ( ) const

Get the memory cost of this object.

Return the size in bytes that this object takes in memory. This returns the size in bytes of this object, not any shared string values it may refer to.

Returns
The number of bytes that this object occupies in memory.

Definition at line 411 of file FileSpec.cpp.

References m_directory, m_filename, and lldb_private::ConstString::MemorySize().

◆ operator bool()

FileSpec::operator bool ( ) const
explicit

Convert to pointer operator.

This allows code to check a FileSpec object to see if it contains anything valid using code such as:

FileSpec file_spec(...);
if (file_spec)
{ ...
Returns
A pointer to this object if either the directory or filename is valid, nullptr otherwise.

Definition at line 217 of file FileSpec.cpp.

◆ operator!()

bool FileSpec::operator! ( ) const

Logical NOT operator.

This allows code to check a FileSpec object to see if it is invalid using code such as:

FileSpec file_spec(...);
if (!file_spec)
{ ...
Returns
Returns true if the object has an empty directory and filename, false otherwise.

Definition at line 224 of file FileSpec.cpp.

References m_directory, and m_filename.

◆ operator!=()

bool FileSpec::operator!= ( const FileSpec rhs) const

Not equal to operator.

Tests if this object is not equal to rhs.

Parameters
[in]rhsA const FileSpec object reference to compare this object to.
Returns
true if this object is equal to rhs, false otherwise.

Definition at line 242 of file FileSpec.cpp.

◆ operator<()

bool FileSpec::operator< ( const FileSpec rhs) const

Less than to operator.

Tests if this object is less than rhs.

Parameters
[in]rhsA const FileSpec object reference to compare this object to.
Returns
true if this object is less than rhs, false otherwise.

Definition at line 245 of file FileSpec.cpp.

References Compare().

◆ operator==()

bool FileSpec::operator== ( const FileSpec rhs) const

Equal to operator.

Tests if this object is equal to rhs.

Parameters
[in]rhsA const FileSpec object reference to compare this object to.
Returns
true if this object is equal to rhs, false otherwise.

Definition at line 237 of file FileSpec.cpp.

References DirectoryEquals(), and FileEquals().

◆ PathWasModified()

void lldb_private::FileSpec::PathWasModified ( )
inlineprotected

Called anytime m_directory or m_filename is changed to clear any cached state in this object.

Definition at line 418 of file FileSpec.h.

References Calculate, m_absolute, and m_is_resolved.

Referenced by Clear(), ClearDirectory(), ClearFilename(), SetDirectory(), and SetFilename().

◆ PrependPathComponent() [1/2]

void FileSpec::PrependPathComponent ( const FileSpec new_path)

Definition at line 447 of file FileSpec.cpp.

References GetPath(), and PrependPathComponent().

◆ PrependPathComponent() [2/2]

void FileSpec::PrependPathComponent ( llvm::StringRef  component)

◆ RemoveLastPathComponent()

bool FileSpec::RemoveLastPathComponent ( )

Removes the last path component by replacing the current path with its parent.

When the current path has no parent, this is a no-op.

Returns
A boolean value indicating whether the path was updated.

Definition at line 462 of file FileSpec.cpp.

References GetPath(), m_style, and SetFile().

Referenced by SymbolVendorMacOSX::CreateInstance(), lldb_private::PlatformDarwin::FindBundleBinaryInExecSearchPaths(), GetModuleSpecInfoFromUUIDDictionary(), LocateDSYMInVincinityOfExecutable(), and LookForDsymNextToExecutablePath().

◆ SetDirectory() [1/2]

void FileSpec::SetDirectory ( ConstString  directory)

◆ SetDirectory() [2/2]

void FileSpec::SetDirectory ( llvm::StringRef  directory)

Definition at line 337 of file FileSpec.cpp.

References m_directory, and PathWasModified().

◆ SetFile() [1/3]

void FileSpec::SetFile ( llvm::StringRef  path)
protected

Definition at line 167 of file FileSpec.cpp.

References m_style, and SetFile().

◆ SetFile() [2/3]

void FileSpec::SetFile ( llvm::StringRef  path,
const llvm::Triple &  triple 
)

Change the file specified with a new path.

Update the contents of this object with a new path. The path will be split up into a directory and filename and stored as uniqued string values for quick comparison and efficient memory usage.

Parameters
[in]pathA full, partial, or relative path to a file.
[in]tripleThe triple which is used to set the Path style.

Definition at line 208 of file FileSpec.cpp.

References SetFile().

◆ SetFile() [3/3]

void FileSpec::SetFile ( llvm::StringRef  path,
Style  style 
)

Change the file specified with a new path.

Update the contents of this object with a new path. The path will be split up into a directory and filename and stored as uniqued string values for quick comparison and efficient memory usage.

Parameters
[in]pathA full, partial, or relative path to a file.
[in]styleThe style for the given path.

Definition at line 172 of file FileSpec.cpp.

References Clear(), m_directory, m_filename, m_style, and lldb_private::ConstString::SetString().

Referenced by lldb::SBTarget::AddModule(), AppendPathComponent(), lldb::SBTarget::AttachToProcessWithName(), lldb_private::process_gdb_remote::GDBRemoteCommunicationServerLLGS::AttachWaitProcess(), lldb_private::BreakpointResolverAddress::CreateFromStructuredData(), lldb_private::process_gdb_remote::GDBRemoteCommunicationClient::DecodeProcessInfoResponse(), CommandObjectTargetCreate::DoExecute(), CommandObjectTargetSymbolsAdd::DoExecute(), ProcessElfCore::DoLoadCore(), lldb_private::PlatformWindows::DoLoadImage(), PlatformPOSIX::DoLoadImage(), FileSpec(), DYLDRendezvous::FillSOEntryFromModuleInfo(), SymbolFileDWARF::GetDwoSymbolFileForCompileUnit(), GetExePathAndArch(), lldb_private::PlatformRemoteDarwinDevice::GetFileInSDK(), lldb_private::NativeFile::GetFileSpec(), GetFreeBSDProcessArgs(), GetMacOSXProcessArgs(), lldb_private::Host::GetModuleFileSpecForHostAddress(), GetModuleSpecInfoFromUUIDDictionary(), GetNetBSDProcessArgs(), GetOpenBSDProcessArgs(), lldb_private::HostInfoFreeBSD::GetProgramFileSpec(), lldb_private::HostInfoNetBSD::GetProgramFileSpec(), lldb_private::HostInfoMacOSX::GetProgramFileSpec(), lldb_private::HostInfoLinux::GetProgramFileSpec(), lldb_private::HostInfoWindows::GetProgramFileSpec(), lldb_private::PlatformRemoteDarwinDevice::GetSymbolFile(), lldb_private::PlatformAppleSimulator::GetSymbolFile(), lldb_private::process_gdb_remote::GDBRemoteCommunicationClient::GetWorkingDir(), lldb_private::process_gdb_remote::GDBRemoteCommunicationServerCommon::Handle_A(), lldb_private::process_gdb_remote::GDBRemoteCommunicationServerCommon::Handle_qfProcessInfo(), lldb_private::process_gdb_remote::GDBRemoteCommunicationServerLLGS::Handle_vRun(), MakeAbsoluteAndRemap(), DynamicLoaderMacOSXDYLD::ParseLoadCommands(), ObjectFileMachO::ParseSymtab(), PrependPathComponent(), lldb_private::ProcessInstanceInfoMatch::ProcessInstanceInfoMatch(), lldb_private::FileSystem::Readlink(), DYLDRendezvous::ReadSOEntryFromMemory(), RemoveLastPathComponent(), lldb_private::RemoteAwarePlatform::ResolveExecutable(), lldb_private::PathMappingList::ReverseRemapPath(), lldb_private::ProcessInfo::SetArguments(), SetFile(), SetPath(), lldb_private::OptionValueFileSpec::SetValueFromString(), lldb_private::ObjectFile::SplitArchivePathWithObject(), lldb_private::process_gdb_remote::GDBRemoteCommunication::StartDebugserverProcess(), SymbolFileDWARF::UpdateExternalModuleListIfNeeded(), and DYLDRendezvous::UpdateFileSpecIfNecessary().

◆ SetFilename() [1/2]

void FileSpec::SetFilename ( ConstString  filename)

◆ SetFilename() [2/2]

void FileSpec::SetFilename ( llvm::StringRef  filename)

Definition at line 347 of file FileSpec.cpp.

References m_filename, and PathWasModified().

◆ SetIsResolved()

void lldb_private::FileSpec::SetIsResolved ( bool  is_resolved)
inline

Set if the file path has been resolved or not.

If you know a file path is already resolved and avoided passing a true parameter for any functions that take a "bool resolve_path" parameter, you can set the value manually using this call to make sure we don't try and resolve it later, or try and resolve a path that has already been resolved.

Parameters
[in]is_resolvedA boolean value that will replace the current value that indicates if the paths in this object have been resolved.

Definition at line 392 of file FileSpec.h.

References m_is_resolved.

Referenced by lldb_private::FileSystem::Resolve().

◆ SetPath()

void lldb_private::FileSpec::SetPath ( llvm::StringRef  p)
inline

Member Data Documentation

◆ m_absolute

Absolute lldb_private::FileSpec::m_absolute = Absolute::Calculate
mutableprotected

Cache absoluteness.

Definition at line 433 of file FileSpec.h.

Referenced by IsAbsolute(), and PathWasModified().

◆ m_directory

ConstString lldb_private::FileSpec::m_directory
protected

The uniqued directory path.

Definition at line 430 of file FileSpec.h.

Referenced by Clear(), ClearDirectory(), Compare(), DirectoryEquals(), GetDirectory(), GetPath(), MemorySize(), operator!(), SetDirectory(), and SetFile().

◆ m_filename

ConstString lldb_private::FileSpec::m_filename
protected

◆ m_is_resolved

bool lldb_private::FileSpec::m_is_resolved = false
mutableprotected

True if this path has been resolved.

Definition at line 432 of file FileSpec.h.

Referenced by IsResolved(), PathWasModified(), and SetIsResolved().

◆ m_style

Style lldb_private::FileSpec::m_style
protected

The documentation for this class was generated from the following files:
lldb_private::FileSpec::FileSpec
FileSpec()
Definition: FileSpec.cpp:66