Thanks, Pavel. I think if we do this again we should indirect the new API through the LLDB FileSpec API or at least a global function somewhere in LLDB, so that we can change implementations without having to touch so much source code.
Sean > On Mar 7, 2017, at 5:19 AM, Pavel Labath via lldb-commits > <lldb-commits@lists.llvm.org> wrote: > > Author: labath > Date: Tue Mar 7 07:19:15 2017 > New Revision: 297139 > > URL: http://llvm.org/viewvc/llvm-project?rev=297139&view=rev > Log: > Revert "Use LLVM for all stat-related functionality." > > this reverts r297116 because it breaks the unittests and > TestCompDirSymlink. The ModuleCache unit test is trivially fixable, but > the CompDirSymlink failure is a symptom of a deeper problem: llvm's stat > functionality is not a drop-in replacement for lldb's. The former is > based on stat(2) (which does symlink resolution), while the latter is > based on lstat(2) (which does not). > > This also reverts subsequent build fixes (r297128, r297120, 297117) and > r297119 (Remove FileSpec dependency on FileSystem) which builds on top > of this. > > Modified: > lldb/trunk/include/lldb/Host/FileSpec.h > lldb/trunk/source/API/SBPlatform.cpp > lldb/trunk/source/Commands/CommandCompletions.cpp > lldb/trunk/source/Commands/CommandObjectTarget.cpp > lldb/trunk/source/Core/Debugger.cpp > lldb/trunk/source/Core/FileSpecList.cpp > lldb/trunk/source/Core/Module.cpp > lldb/trunk/source/Core/ModuleList.cpp > lldb/trunk/source/Core/PluginManager.cpp > lldb/trunk/source/Host/common/FileSpec.cpp > lldb/trunk/source/Host/common/MonitoringProcessLauncher.cpp > lldb/trunk/source/Host/common/Symbols.cpp > lldb/trunk/source/Host/macosx/Host.mm > lldb/trunk/source/Host/macosx/HostInfoMacOSX.mm > lldb/trunk/source/Host/macosx/Symbols.cpp > lldb/trunk/source/Host/posix/FileSystem.cpp > lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangModulesDeclVendor.cpp > lldb/trunk/source/Plugins/Platform/MacOSX/PlatformAppleTVSimulator.cpp > lldb/trunk/source/Plugins/Platform/MacOSX/PlatformAppleWatchSimulator.cpp > lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp > lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.h > lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwinKernel.cpp > lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwinKernel.h > lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteAppleTV.cpp > lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteAppleTV.h > lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteAppleWatch.cpp > lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteAppleWatch.h > lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp > lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.h > lldb/trunk/source/Plugins/Platform/MacOSX/PlatformiOSSimulator.cpp > lldb/trunk/source/Plugins/Process/Darwin/NativeProcessDarwin.cpp > lldb/trunk/source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp > lldb/trunk/source/Plugins/Process/Linux/NativeProcessLinux.cpp > > lldb/trunk/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp > lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp > lldb/trunk/source/Target/ModuleCache.cpp > lldb/trunk/source/Target/Platform.cpp > lldb/trunk/source/Target/TargetList.cpp > > Modified: lldb/trunk/include/lldb/Host/FileSpec.h > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Host/FileSpec.h?rev=297139&r1=297138&r2=297139&view=diff > ============================================================================== > --- lldb/trunk/include/lldb/Host/FileSpec.h (original) > +++ lldb/trunk/include/lldb/Host/FileSpec.h Tue Mar 7 07:19:15 2017 > @@ -22,7 +22,6 @@ > #include "lldb/lldb-private.h" > > #include "llvm/ADT/Triple.h" > -#include "llvm/Support/FileSystem.h" > #include "llvm/Support/FormatVariadic.h" > > namespace lldb_private { > @@ -47,6 +46,17 @@ namespace lldb_private { > //---------------------------------------------------------------------- > class FileSpec { > public: > + typedef enum FileType { > + eFileTypeInvalid = -1, > + eFileTypeUnknown = 0, > + eFileTypeDirectory, > + eFileTypePipe, > + eFileTypeRegular, > + eFileTypeSocket, > + eFileTypeSymbolicLink, > + eFileTypeOther > + } FileType; > + > enum PathSyntax { > ePathSyntaxPosix, > ePathSyntaxWindows, > @@ -445,6 +455,8 @@ public: > //------------------------------------------------------------------ > ConstString GetFileNameStrippingExtension() const; > > + FileType GetFileType() const; > + > //------------------------------------------------------------------ > /// Return the current permissions of the path. > /// > @@ -459,6 +471,20 @@ public: > //------------------------------------------------------------------ > uint32_t GetPermissions() const; > > + bool IsDirectory() const { > + return GetFileType() == FileSpec::eFileTypeDirectory; > + } > + > + bool IsPipe() const { return GetFileType() == FileSpec::eFileTypePipe; } > + > + bool IsRegularFile() const { > + return GetFileType() == FileSpec::eFileTypeRegular; > + } > + > + bool IsSocket() const { return GetFileType() == FileSpec::eFileTypeSocket; > } > + > + bool IsSymbolicLink() const; > + > //------------------------------------------------------------------ > /// Get the memory cost of this object. > /// > @@ -570,7 +596,7 @@ public: > }; > > typedef EnumerateDirectoryResult (*EnumerateDirectoryCallbackType)( > - void *baton, llvm::sys::fs::file_type file_type, const FileSpec &spec); > + void *baton, FileType file_type, const FileSpec &spec); > > static EnumerateDirectoryResult > EnumerateDirectory(llvm::StringRef dir_path, bool find_directories, > @@ -578,8 +604,8 @@ public: > EnumerateDirectoryCallbackType callback, > void *callback_baton); > > - typedef std::function<EnumerateDirectoryResult( > - llvm::sys::fs::file_type file_type, const FileSpec &spec)> > + typedef std::function<EnumerateDirectoryResult(FileType file_type, > + const FileSpec &spec)> > DirectoryCallback; > > static EnumerateDirectoryResult > > Modified: lldb/trunk/source/API/SBPlatform.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/API/SBPlatform.cpp?rev=297139&r1=297138&r2=297139&view=diff > ============================================================================== > --- lldb/trunk/source/API/SBPlatform.cpp (original) > +++ lldb/trunk/source/API/SBPlatform.cpp Tue Mar 7 07:19:15 2017 > @@ -19,8 +19,6 @@ > #include "lldb/Target/Target.h" > #include "lldb/Utility/Error.h" > > -#include "llvm/Support/FileSystem.h" > - > #include <functional> > > using namespace lldb; > @@ -365,7 +363,7 @@ SBError SBPlatform::Put(SBFileSpec &src, > if (src.Exists()) { > uint32_t permissions = src.ref().GetPermissions(); > if (permissions == 0) { > - if (llvm::sys::fs::is_directory(src.ref().GetPath())) > + if (src.ref().GetFileType() == FileSpec::eFileTypeDirectory) > permissions = eFilePermissionsDirectoryDefault; > else > permissions = eFilePermissionsFileDefault; > > Modified: lldb/trunk/source/Commands/CommandCompletions.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/CommandCompletions.cpp?rev=297139&r1=297138&r2=297139&view=diff > ============================================================================== > --- lldb/trunk/source/Commands/CommandCompletions.cpp (original) > +++ lldb/trunk/source/Commands/CommandCompletions.cpp Tue Mar 7 07:19:15 2017 > @@ -33,7 +33,6 @@ > #include "lldb/Utility/CleanUp.h" > > #include "llvm/ADT/SmallString.h" > -#include "llvm/Support/FileSystem.h" > > using namespace lldb_private; > > @@ -110,7 +109,7 @@ typedef struct DiskFilesOrDirectoriesBat > } DiskFilesOrDirectoriesBaton; > > FileSpec::EnumerateDirectoryResult > -DiskFilesOrDirectoriesCallback(void *baton, llvm::sys::fs::file_type > file_type, > +DiskFilesOrDirectoriesCallback(void *baton, FileSpec::FileType file_type, > const FileSpec &spec) { > const char *name = spec.GetFilename().AsCString(); > > @@ -139,10 +138,10 @@ DiskFilesOrDirectoriesCallback(void *bat > strcpy(end_ptr, name); > > bool isa_directory = false; > - if (file_type == llvm::sys::fs::file_type::directory_file) > + if (file_type == FileSpec::eFileTypeDirectory) > isa_directory = true; > - else if (file_type == llvm::sys::fs::file_type::symlink_file) { > - if (llvm::sys::fs::is_directory(partial_name_copy)) > + else if (file_type == FileSpec::eFileTypeSymbolicLink) { > + if (FileSpec(partial_name_copy, false).IsDirectory()) > isa_directory = true; > } > > > Modified: lldb/trunk/source/Commands/CommandObjectTarget.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/CommandObjectTarget.cpp?rev=297139&r1=297138&r2=297139&view=diff > ============================================================================== > --- lldb/trunk/source/Commands/CommandObjectTarget.cpp (original) > +++ lldb/trunk/source/Commands/CommandObjectTarget.cpp Tue Mar 7 07:19:15 > 2017 > @@ -50,8 +50,6 @@ > #include "lldb/Target/Thread.h" > #include "lldb/Target/ThreadSpec.h" > > -#include "llvm/Support/FileSystem.h" > - > // C Includes > // C++ Includes > #include <cerrno> > @@ -4138,21 +4136,20 @@ protected: > module_sp->SetSymbolFileFileSpec(FileSpec()); > } > > - namespace fs = llvm::sys::fs; > if (module_spec.GetUUID().IsValid()) { > StreamString ss_symfile_uuid; > module_spec.GetUUID().Dump(&ss_symfile_uuid); > result.AppendErrorWithFormat( > "symbol file '%s' (%s) does not match any existing module%s\n", > symfile_path, ss_symfile_uuid.GetData(), > - !fs::is_regular_file(symbol_fspec.GetPath()) > + (symbol_fspec.GetFileType() != FileSpec::eFileTypeRegular) > ? "\n please specify the full path to the symbol file" > : ""); > } else { > result.AppendErrorWithFormat( > "symbol file '%s' does not match any existing module%s\n", > symfile_path, > - !fs::is_regular_file(symbol_fspec.GetPath()) > + (symbol_fspec.GetFileType() != FileSpec::eFileTypeRegular) > ? "\n please specify the full path to the symbol file" > : ""); > } > > Modified: lldb/trunk/source/Core/Debugger.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/Debugger.cpp?rev=297139&r1=297138&r2=297139&view=diff > ============================================================================== > --- lldb/trunk/source/Core/Debugger.cpp (original) > +++ lldb/trunk/source/Core/Debugger.cpp Tue Mar 7 07:19:15 2017 > @@ -557,7 +557,7 @@ bool Debugger::LoadPlugin(const FileSpec > } > > static FileSpec::EnumerateDirectoryResult > -LoadPluginCallback(void *baton, llvm::sys::fs::file_type ft, > +LoadPluginCallback(void *baton, FileSpec::FileType file_type, > const FileSpec &file_spec) { > Error error; > > @@ -569,13 +569,13 @@ LoadPluginCallback(void *baton, llvm::sy > > Debugger *debugger = (Debugger *)baton; > > - namespace fs = llvm::sys::fs; > // If we have a regular file, a symbolic link or unknown file type, try > // and process the file. We must handle unknown as sometimes the directory > // enumeration might be enumerating a file system that doesn't have correct > // file type information. > - if (ft == fs::file_type::regular_file || ft == fs::file_type::symlink_file > || > - ft == fs::file_type::type_unknown) { > + if (file_type == FileSpec::eFileTypeRegular || > + file_type == FileSpec::eFileTypeSymbolicLink || > + file_type == FileSpec::eFileTypeUnknown) { > FileSpec plugin_file_spec(file_spec); > plugin_file_spec.ResolvePath(); > > @@ -588,9 +588,9 @@ LoadPluginCallback(void *baton, llvm::sy > debugger->LoadPlugin(plugin_file_spec, plugin_load_error); > > return FileSpec::eEnumerateDirectoryResultNext; > - } else if (ft == fs::file_type::directory_file || > - ft == fs::file_type::symlink_file || > - ft == fs::file_type::type_unknown) { > + } else if (file_type == FileSpec::eFileTypeUnknown || > + file_type == FileSpec::eFileTypeDirectory || > + file_type == FileSpec::eFileTypeSymbolicLink) { > // Try and recurse into anything that a directory or symbolic link. > // We must also do this for unknown as sometimes the directory enumeration > // might be enumerating a file system that doesn't have correct file type > > Modified: lldb/trunk/source/Core/FileSpecList.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/FileSpecList.cpp?rev=297139&r1=297138&r2=297139&view=diff > ============================================================================== > --- lldb/trunk/source/Core/FileSpecList.cpp (original) > +++ lldb/trunk/source/Core/FileSpecList.cpp Tue Mar 7 07:19:15 2017 > @@ -16,7 +16,6 @@ > // Other libraries and framework includes > // Project includes > #include "lldb/Utility/Stream.h" > -#include "llvm/Support/FileSystem.h" > > using namespace lldb_private; > using namespace std; > @@ -151,23 +150,32 @@ size_t FileSpecList::GetFilesMatchingPar > FileSpecList &matches) { > #if 0 // FIXME: Just sketching... > matches.Clear(); > - using namespace llvm::sys::fs; > - file_status stats; > - if (status(path, stats)) > - return 0; > - if (exists(stats)) { > - if (stats.type() == file_type::symlink_file) { > - // Shouldn't there be a method that realpath's a file? > - } > - if (is_regular_file(stats) || (is_directory(stats) && dir_okay)) { > - matches.Append(FileSpec(path)); > - return 1; > - } else if (is_directory(stats)) { > - // Fill the match list with all the files in the directory: > - } else { > - return 0; > - } > - } else { > + FileSpec path_spec = FileSpec (path); > + if (path_spec.Exists ()) > + { > + FileSpec::FileType type = path_spec.GetFileType(); > + if (type == FileSpec::eFileTypeSymbolicLink) > + // Shouldn't there be a Resolve on a file spec that real-path's > it? > + { > + } > + > + if (type == FileSpec::eFileTypeRegular > + || (type == FileSpec::eFileTypeDirectory && dir_okay)) > + { > + matches.Append (path_spec); > + return 1; > + } > + else if (type == FileSpec::eFileTypeDirectory) > + { > + // Fill the match list with all the files in the directory: > + } > + else > + { > + return 0; > + } > + } > + else > + { > ConstString dir_name = path_spec.GetDirectory(); > ConstString file_name = GetFilename(); > if (dir_name == nullptr) > > Modified: lldb/trunk/source/Core/Module.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/Module.cpp?rev=297139&r1=297138&r2=297139&view=diff > ============================================================================== > --- lldb/trunk/source/Core/Module.cpp (original) > +++ lldb/trunk/source/Core/Module.cpp Tue Mar 7 07:19:15 2017 > @@ -12,7 +12,6 @@ > // C Includes > // C++ Includes > // Other libraries and framework includes > -#include "llvm/Support/FileSystem.h" > #include "llvm/Support/Signals.h" > #include "llvm/Support/raw_os_ostream.h" > > @@ -1440,7 +1439,7 @@ void Module::SetSymbolFileFileSpec(const > // ("/tmp/a.out.dSYM/Contents/Resources/DWARF/a.out"). So we need to > // check this > > - if (llvm::sys::fs::is_directory(file.GetPath())) { > + if (file.IsDirectory()) { > std::string new_path(file.GetPath()); > std::string old_path(obj_file->GetFileSpec().GetPath()); > if (old_path.find(new_path) == 0) { > > Modified: lldb/trunk/source/Core/ModuleList.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/ModuleList.cpp?rev=297139&r1=297138&r2=297139&view=diff > ============================================================================== > --- lldb/trunk/source/Core/ModuleList.cpp (original) > +++ lldb/trunk/source/Core/ModuleList.cpp Tue Mar 7 07:19:15 2017 > @@ -26,7 +26,6 @@ > #include "lldb/Symbol/VariableList.h" > #include "lldb/Utility/Log.h" > > -#include "llvm/Support/FileSystem.h" > #include "llvm/Support/Threading.h" > > using namespace lldb; > @@ -767,8 +766,7 @@ Error ModuleList::GetSharedModule(const > auto search_path_spec = > module_search_paths_ptr->GetFileSpecAtIndex(idx); > if (!search_path_spec.ResolvePath()) > continue; > - namespace fs = llvm::sys::fs; > - if (!fs::is_directory(search_path_spec.GetPath())) > + if (!search_path_spec.Exists() || !search_path_spec.IsDirectory()) > continue; > search_path_spec.AppendPathComponent( > module_spec.GetFileSpec().GetFilename().AsCString()); > > Modified: lldb/trunk/source/Core/PluginManager.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/PluginManager.cpp?rev=297139&r1=297138&r2=297139&view=diff > ============================================================================== > --- lldb/trunk/source/Core/PluginManager.cpp (original) > +++ lldb/trunk/source/Core/PluginManager.cpp Tue Mar 7 07:19:15 2017 > @@ -79,18 +79,18 @@ template <typename FPtrTy> static FPtrTy > } > > static FileSpec::EnumerateDirectoryResult > -LoadPluginCallback(void *baton, llvm::sys::fs::file_type ft, > +LoadPluginCallback(void *baton, FileSpec::FileType file_type, > const FileSpec &file_spec) { > // PluginManager *plugin_manager = (PluginManager *)baton; > Error error; > > - namespace fs = llvm::sys::fs; > // If we have a regular file, a symbolic link or unknown file type, try > // and process the file. We must handle unknown as sometimes the directory > // enumeration might be enumerating a file system that doesn't have correct > // file type information. > - if (ft == fs::file_type::regular_file || ft == fs::file_type::symlink_file > || > - ft == fs::file_type::type_unknown) { > + if (file_type == FileSpec::eFileTypeRegular || > + file_type == FileSpec::eFileTypeSymbolicLink || > + file_type == FileSpec::eFileTypeUnknown) { > FileSpec plugin_file_spec(file_spec); > plugin_file_spec.ResolvePath(); > > @@ -135,8 +135,9 @@ LoadPluginCallback(void *baton, llvm::sy > } > } > > - if (ft == fs::file_type::directory_file || > - ft == fs::file_type::symlink_file || ft == > fs::file_type::type_unknown) { > + if (file_type == FileSpec::eFileTypeUnknown || > + file_type == FileSpec::eFileTypeDirectory || > + file_type == FileSpec::eFileTypeSymbolicLink) { > // Try and recurse into anything that a directory or symbolic link. > // We must also do this for unknown as sometimes the directory enumeration > // might be enumerating a file system that doesn't have correct file type > > Modified: lldb/trunk/source/Host/common/FileSpec.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/common/FileSpec.cpp?rev=297139&r1=297138&r2=297139&view=diff > ============================================================================== > --- lldb/trunk/source/Host/common/FileSpec.cpp (original) > +++ lldb/trunk/source/Host/common/FileSpec.cpp Tue Mar 7 07:19:15 2017 > @@ -27,6 +27,7 @@ > > #include "lldb/Core/StringList.h" > #include "lldb/Host/FileSpec.h" > +#include "lldb/Host/FileSystem.h" > #include "lldb/Utility/CleanUp.h" > #include "lldb/Utility/RegularExpression.h" > #include "lldb/Utility/Stream.h" > @@ -44,18 +45,10 @@ using namespace lldb_private; > > namespace { > > -static constexpr FileSpec::PathSyntax GetNativeSyntax() { > -#if defined(LLVM_ON_WIN32) > - return FileSpec::ePathSyntaxWindows; > -#else > - return FileSpec::ePathSyntaxPosix; > -#endif > -} > - > bool PathSyntaxIsPosix(FileSpec::PathSyntax syntax) { > return (syntax == FileSpec::ePathSyntaxPosix || > (syntax == FileSpec::ePathSyntaxHostNative && > - GetNativeSyntax() == FileSpec::ePathSyntaxPosix)); > + FileSystem::GetNativePathSyntax() == FileSpec::ePathSyntaxPosix)); > } > > const char *GetPathSeparators(FileSpec::PathSyntax syntax) { > @@ -91,6 +84,13 @@ void Denormalize(llvm::SmallVectorImpl<c > std::replace(path.begin(), path.end(), '/', '\\'); > } > > +bool GetFileStats(const FileSpec *file_spec, struct stat *stats_ptr) { > + char resolved_path[PATH_MAX]; > + if (file_spec->GetPath(resolved_path, sizeof(resolved_path))) > + return FileSystem::Stat(resolved_path, stats_ptr) == 0; > + return false; > +} > + > size_t FilenamePos(llvm::StringRef str, FileSpec::PathSyntax syntax) { > if (str.size() == 2 && IsPathSeparator(str[0], syntax) && str[0] == str[1]) > return 0; > @@ -273,7 +273,7 @@ void FileSpec::Resolve(llvm::SmallVector > } > } > > -FileSpec::FileSpec() : m_syntax(GetNativeSyntax()) {} > +FileSpec::FileSpec() : m_syntax(FileSystem::GetNativePathSyntax()) {} > > //------------------------------------------------------------------ > // Default constructor that can take an optional full path to a > @@ -336,7 +336,9 @@ void FileSpec::SetFile(llvm::StringRef p > m_filename.Clear(); > m_directory.Clear(); > m_is_resolved = false; > - m_syntax = (syntax == ePathSyntaxHostNative) ? GetNativeSyntax() : syntax; > + m_syntax = (syntax == ePathSyntaxHostNative) > + ? FileSystem::GetNativePathSyntax() > + : syntax; > > if (pathname.empty()) > return; > @@ -613,10 +615,16 @@ void FileSpec::Dump(Stream *s) const { > //------------------------------------------------------------------ > // Returns true if the file exists. > //------------------------------------------------------------------ > -bool FileSpec::Exists() const { return llvm::sys::fs::exists(GetPath()); } > +bool FileSpec::Exists() const { > + struct stat file_stats; > + return GetFileStats(this, &file_stats); > +} > > bool FileSpec::Readable() const { > - return GetPermissions() & llvm::sys::fs::perms::all_read; > + const uint32_t permissions = GetPermissions(); > + if (permissions & eFilePermissionsEveryoneR) > + return true; > + return false; > } > > bool FileSpec::ResolveExecutableLocation() { > @@ -669,21 +677,67 @@ bool FileSpec::ResolvePath() { > } > > uint64_t FileSpec::GetByteSize() const { > - uint64_t Size = 0; > - if (llvm::sys::fs::file_size(GetPath(), Size)) > - return 0; > - return Size; > + struct stat file_stats; > + if (GetFileStats(this, &file_stats)) > + return file_stats.st_size; > + return 0; > } > > FileSpec::PathSyntax FileSpec::GetPathSyntax() const { return m_syntax; } > > -uint32_t FileSpec::GetPermissions() const { > - namespace fs = llvm::sys::fs; > - fs::file_status st; > - if (fs::status(GetPath(), st)) > - return fs::perms::perms_not_known; > +FileSpec::FileType FileSpec::GetFileType() const { > + struct stat file_stats; > + if (GetFileStats(this, &file_stats)) { > + mode_t file_type = file_stats.st_mode & S_IFMT; > + switch (file_type) { > + case S_IFDIR: > + return eFileTypeDirectory; > + case S_IFREG: > + return eFileTypeRegular; > +#ifndef _WIN32 > + case S_IFIFO: > + return eFileTypePipe; > + case S_IFSOCK: > + return eFileTypeSocket; > + case S_IFLNK: > + return eFileTypeSymbolicLink; > +#endif > + default: > + break; > + } > + return eFileTypeUnknown; > + } > + return eFileTypeInvalid; > +} > + > +bool FileSpec::IsSymbolicLink() const { > + char resolved_path[PATH_MAX]; > + if (!GetPath(resolved_path, sizeof(resolved_path))) > + return false; > + > +#ifdef _WIN32 > + std::wstring wpath; > + if (!llvm::ConvertUTF8toWide(resolved_path, wpath)) > + return false; > + auto attrs = ::GetFileAttributesW(wpath.c_str()); > + if (attrs == INVALID_FILE_ATTRIBUTES) > + return false; > > - return st.permissions(); > + return (attrs & FILE_ATTRIBUTE_REPARSE_POINT); > +#else > + struct stat file_stats; > + if (::lstat(resolved_path, &file_stats) != 0) > + return false; > + > + return (file_stats.st_mode & S_IFMT) == S_IFLNK; > +#endif > +} > + > +uint32_t FileSpec::GetPermissions() const { > + uint32_t file_permissions = 0; > + if (*this) > + FileSystem::GetFilePermissions(*this, file_permissions); > + return file_permissions; > } > > //------------------------------------------------------------------ > @@ -799,8 +853,7 @@ FileSpec::ForEachItemInDirectory(llvm::S > } > > do { > - namespace fs = llvm::sys::fs; > - fs::file_type ft = fs::file_type::type_unknown; > + FileSpec::FileType file_type = eFileTypeUnknown; > if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { > size_t len = wcslen(ffd.cFileName); > > @@ -810,11 +863,11 @@ FileSpec::ForEachItemInDirectory(llvm::S > if (len == 2 && ffd.cFileName[0] == L'.' && ffd.cFileName[1] == L'.') > continue; > > - ft = fs::file_type::directory_file; > + file_type = eFileTypeDirectory; > } else if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DEVICE) { > - ft = fs::file_type::type_unknown; > + file_type = eFileTypeOther; > } else { > - ft = fs::file_type::regular_file; > + file_type = eFileTypeRegular; > } > > std::string fileName; > @@ -826,7 +879,7 @@ FileSpec::ForEachItemInDirectory(llvm::S > // Don't resolve the file type or path > FileSpec child_path_spec(child_path.data(), false); > > - EnumerateDirectoryResult result = callback(ft, child_path_spec); > + EnumerateDirectoryResult result = callback(file_type, child_path_spec); > > switch (result) { > case eEnumerateDirectoryResultNext: > @@ -887,38 +940,37 @@ FileSpec::ForEachItemInDirectory(llvm::S > continue; > } > > - using namespace llvm::sys::fs; > - file_type ft = file_type::type_unknown; > + FileSpec::FileType file_type = eFileTypeUnknown; > > switch (dp->d_type) { > default: > case DT_UNKNOWN: > - ft = file_type::type_unknown; > + file_type = eFileTypeUnknown; > break; > case DT_FIFO: > - ft = file_type::fifo_file; > + file_type = eFileTypePipe; > break; > case DT_CHR: > - ft = file_type::character_file; > + file_type = eFileTypeOther; > break; > case DT_DIR: > - ft = file_type::directory_file; > + file_type = eFileTypeDirectory; > break; > case DT_BLK: > - ft = file_type::block_file; > + file_type = eFileTypeOther; > break; > case DT_REG: > - ft = file_type::regular_file; > + file_type = eFileTypeRegular; > break; > case DT_LNK: > - ft = file_type::symlink_file; > + file_type = eFileTypeSymbolicLink; > break; > case DT_SOCK: > - ft = file_type::socket_file; > + file_type = eFileTypeSocket; > break; > #if !defined(__OpenBSD__) > case DT_WHT: > - ft = file_type::type_unknown; > + file_type = eFileTypeOther; > break; > #endif > } > @@ -933,7 +985,8 @@ FileSpec::ForEachItemInDirectory(llvm::S > // Don't resolve the file type or path > FileSpec child_path_spec(child_path, false); > > - EnumerateDirectoryResult result = callback(ft, child_path_spec); > + EnumerateDirectoryResult result = > + callback(file_type, child_path_spec); > > switch (result) { > case eEnumerateDirectoryResultNext: > @@ -987,14 +1040,14 @@ FileSpec::EnumerateDirectory(llvm::Strin > void *callback_baton) { > return ForEachItemInDirectory( > dir_path, > - [&find_directories, &find_files, &find_other, &callback, > &callback_baton]( > - llvm::sys::fs::file_type file_type, const FileSpec &file_spec) { > + [&find_directories, &find_files, &find_other, &callback, > + &callback_baton](FileType file_type, const FileSpec &file_spec) { > switch (file_type) { > - case llvm::sys::fs::file_type::directory_file: > + case FileType::eFileTypeDirectory: > if (find_directories) > return callback(callback_baton, file_type, file_spec); > break; > - case llvm::sys::fs::file_type::regular_file: > + case FileType::eFileTypeRegular: > if (find_files) > return callback(callback_baton, file_type, file_spec); > break; > > Modified: lldb/trunk/source/Host/common/MonitoringProcessLauncher.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/common/MonitoringProcessLauncher.cpp?rev=297139&r1=297138&r2=297139&view=diff > ============================================================================== > --- lldb/trunk/source/Host/common/MonitoringProcessLauncher.cpp (original) > +++ lldb/trunk/source/Host/common/MonitoringProcessLauncher.cpp Tue Mar 7 > 07:19:15 2017 > @@ -17,8 +17,6 @@ > #include "lldb/Utility/Error.h" > #include "lldb/Utility/Log.h" > > -#include "llvm/Support/FileSystem.h" > - > using namespace lldb; > using namespace lldb_private; > > @@ -40,8 +38,8 @@ MonitoringProcessLauncher::LaunchProcess > > FileSpec exe_spec(resolved_info.GetExecutableFile()); > > - llvm::sys::fs::file_status stats; > - if (status(exe_spec.GetPath(), stats) || !is_regular_file(stats)) { > + FileSpec::FileType file_type = exe_spec.GetFileType(); > + if (file_type != FileSpec::eFileTypeRegular) { > ModuleSpec module_spec(exe_spec, arch_spec); > lldb::ModuleSP exe_module_sp; > error = > @@ -54,7 +52,7 @@ MonitoringProcessLauncher::LaunchProcess > exe_spec = exe_module_sp->GetFileSpec(); > } > > - if (exists(stats)) { > + if (exe_spec.Exists()) { > exe_spec.GetPath(exe_path, sizeof(exe_path)); > } else { > resolved_info.GetExecutableFile().GetPath(exe_path, sizeof(exe_path)); > > Modified: lldb/trunk/source/Host/common/Symbols.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/common/Symbols.cpp?rev=297139&r1=297138&r2=297139&view=diff > ============================================================================== > --- lldb/trunk/source/Host/common/Symbols.cpp (original) > +++ lldb/trunk/source/Host/common/Symbols.cpp Tue Mar 7 07:19:15 2017 > @@ -229,7 +229,7 @@ FileSpec Symbols::LocateExecutableSymbol > for (size_t idx = 0; idx < num_directories; ++idx) { > FileSpec dirspec = debug_file_search_paths.GetFileSpecAtIndex(idx); > dirspec.ResolvePath(); > - if (!llvm::sys::fs::is_directory(dirspec.GetPath())) > + if (!dirspec.Exists() || !dirspec.IsDirectory()) > continue; > > std::vector<std::string> files; > > Modified: lldb/trunk/source/Host/macosx/Host.mm > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/macosx/Host.mm?rev=297139&r1=297138&r2=297139&view=diff > ============================================================================== > --- lldb/trunk/source/Host/macosx/Host.mm (original) > +++ lldb/trunk/source/Host/macosx/Host.mm Tue Mar 7 07:19:15 2017 > @@ -75,8 +75,6 @@ > #include "lldb/Utility/NameMatches.h" > #include "lldb/Utility/StreamString.h" > > -#include "llvm/Support/FileSystem.h" > - > #include "cfcpp/CFCBundle.h" > #include "cfcpp/CFCMutableArray.h" > #include "cfcpp/CFCMutableDictionary.h" > @@ -103,7 +101,7 @@ using namespace lldb_private; > bool Host::GetBundleDirectory(const FileSpec &file, > FileSpec &bundle_directory) { > #if defined(__APPLE__) > - if (llvm::sys::fs::is_directory(file.GetPath())) { > + if (file.GetFileType() == FileSpec::eFileTypeDirectory) { > char path[PATH_MAX]; > if (file.GetPath(path, sizeof(path))) { > CFCBundle bundle(path); > @@ -120,7 +118,7 @@ bool Host::GetBundleDirectory(const File > > bool Host::ResolveExecutableInBundle(FileSpec &file) { > #if defined(__APPLE__) > - if (llvm::sys::fs::is_directory(file.GetPath())) { > + if (file.GetFileType() == FileSpec::eFileTypeDirectory) { > char path[PATH_MAX]; > if (file.GetPath(path, sizeof(path))) { > CFCBundle bundle(path); > @@ -1186,8 +1184,8 @@ Error Host::LaunchProcess(ProcessLaunchI > ModuleSpec exe_module_spec(launch_info.GetExecutableFile(), > launch_info.GetArchitecture()); > > - if (!llvm::sys::fs::is_regular_file( > - exe_module_spec.GetFileSpec().GetPath())) { > + FileSpec::FileType file_type = exe_module_spec.GetFileSpec().GetFileType(); > + if (file_type != FileSpec::eFileTypeRegular) { > lldb::ModuleSP exe_module_sp; > error = host_platform_sp->ResolveExecutable(exe_module_spec, > exe_module_sp, > NULL); > > Modified: lldb/trunk/source/Host/macosx/HostInfoMacOSX.mm > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/macosx/HostInfoMacOSX.mm?rev=297139&r1=297138&r2=297139&view=diff > ============================================================================== > --- lldb/trunk/source/Host/macosx/HostInfoMacOSX.mm (original) > +++ lldb/trunk/source/Host/macosx/HostInfoMacOSX.mm Tue Mar 7 07:19:15 2017 > @@ -18,7 +18,6 @@ > #include "lldb/Utility/SafeMachO.h" > > #include "llvm/ADT/SmallString.h" > -#include "llvm/Support/FileSystem.h" > #include "llvm/Support/raw_ostream.h" > > // C++ Includes > @@ -153,7 +152,7 @@ bool HostInfoMacOSX::ComputeSupportExeDi > // the lldb driver. > raw_path.append("/../bin"); > FileSpec support_dir_spec(raw_path, true); > - if (!llvm::sys::fs::is_directory(support_dir_spec.GetPath())) { > + if (!support_dir_spec.Exists() || !support_dir_spec.IsDirectory()) { > Log *log = lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_HOST); > if (log) > log->Printf("HostInfoMacOSX::%s(): failed to find support directory", > > Modified: lldb/trunk/source/Host/macosx/Symbols.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/macosx/Symbols.cpp?rev=297139&r1=297138&r2=297139&view=diff > ============================================================================== > --- lldb/trunk/source/Host/macosx/Symbols.cpp (original) > +++ lldb/trunk/source/Host/macosx/Symbols.cpp Tue Mar 7 07:19:15 2017 > @@ -38,8 +38,6 @@ > #include "lldb/Utility/UUID.h" > #include "mach/machine.h" > > -#include "llvm/Support/FileSystem.h" > - > using namespace lldb; > using namespace lldb_private; > using namespace llvm::MachO; > @@ -103,7 +101,7 @@ int LocateMacOSXFilesUsingDebugSymbols(c > } > FileSpec dsym_filespec(path, path[0] == '~'); > > - if (llvm::sys::fs::is_directory(dsym_filespec.GetPath())) { > + if (dsym_filespec.GetFileType() == FileSpec::eFileTypeDirectory) > { > dsym_filespec = > Symbols::FindSymbolFileInBundle(dsym_filespec, uuid, arch); > ++items_found; > @@ -166,10 +164,8 @@ int LocateMacOSXFilesUsingDebugSymbols(c > FileSpec file_spec(path, true); > ModuleSpecList module_specs; > ModuleSpec matched_module_spec; > - using namespace llvm::sys::fs; > - switch (get_file_type(file_spec.GetPath())) { > - > - case file_type::directory_file: // Bundle directory? > + switch (file_spec.GetFileType()) { > + case FileSpec::eFileTypeDirectory: // Bundle directory? > { > CFCBundle bundle(path); > CFCReleaser<CFURLRef> bundle_exe_url( > @@ -197,17 +193,15 @@ int LocateMacOSXFilesUsingDebugSymbols(c > } > } break; > > - case file_type::fifo_file: // Forget pipes > - case file_type::socket_file: // We can't process socket > files > - case file_type::file_not_found: // File doesn't exist... > - case file_type::status_error: > + case FileSpec::eFileTypePipe: // Forget pipes > + case FileSpec::eFileTypeSocket: // We can't process socket > files > + case FileSpec::eFileTypeInvalid: // File doesn't exist... > break; > > - case file_type::type_unknown: > - case file_type::regular_file: > - case file_type::symlink_file: > - case file_type::block_file: > - case file_type::character_file: > + case FileSpec::eFileTypeUnknown: > + case FileSpec::eFileTypeRegular: > + case FileSpec::eFileTypeSymbolicLink: > + case FileSpec::eFileTypeOther: > if (ObjectFile::GetModuleSpecifications(file_spec, 0, 0, > module_specs) && > module_specs.FindMatchingModuleSpec(module_spec, > > Modified: lldb/trunk/source/Host/posix/FileSystem.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/posix/FileSystem.cpp?rev=297139&r1=297138&r2=297139&view=diff > ============================================================================== > --- lldb/trunk/source/Host/posix/FileSystem.cpp (original) > +++ lldb/trunk/source/Host/posix/FileSystem.cpp Tue Mar 7 07:19:15 2017 > @@ -29,8 +29,6 @@ > #include "lldb/Utility/Error.h" > #include "lldb/Utility/StreamString.h" > > -#include "llvm/Support/FileSystem.h" > - > using namespace lldb; > using namespace lldb_private; > > @@ -63,7 +61,7 @@ Error FileSystem::MakeDirectory(const Fi > return error; > } break; > case EEXIST: { > - if (llvm::sys::fs::is_directory(file_spec.GetPath())) > + if (file_spec.IsDirectory()) > return Error(); // It is a directory and it already exists > } break; > } > @@ -85,9 +83,9 @@ Error FileSystem::DeleteDirectory(const > FileSpec::ForEachItemInDirectory( > file_spec.GetCString(), > [&error, &sub_directories]( > - llvm::sys::fs::file_type ft, > + FileSpec::FileType file_type, > const FileSpec &spec) -> FileSpec::EnumerateDirectoryResult { > - if (ft == llvm::sys::fs::file_type::directory_file) { > + if (file_type == FileSpec::eFileTypeDirectory) { > // Save all directorires and process them after iterating > through > // this directory > sub_directories.push_back(spec); > > Modified: > lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangModulesDeclVendor.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangModulesDeclVendor.cpp?rev=297139&r1=297138&r2=297139&view=diff > ============================================================================== > --- > lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangModulesDeclVendor.cpp > (original) > +++ > lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangModulesDeclVendor.cpp > Tue Mar 7 07:19:15 2017 > @@ -20,7 +20,6 @@ > #include "clang/Parse/Parser.h" > #include "clang/Sema/Lookup.h" > #include "clang/Serialization/ASTReader.h" > -#include "llvm/Support/FileSystem.h" > #include "llvm/Support/Path.h" > #include "llvm/Support/Threading.h" > > @@ -607,7 +606,7 @@ ClangModulesDeclVendor::Create(Target &t > { > FileSpec clang_resource_dir = GetResourceDir(); > > - if (llvm::sys::fs::is_directory(clang_resource_dir.GetPath())) { > + if (clang_resource_dir.IsDirectory()) { > compiler_invocation_arguments.push_back("-resource-dir"); > compiler_invocation_arguments.push_back(clang_resource_dir.GetPath()); > } > > Modified: > lldb/trunk/source/Plugins/Platform/MacOSX/PlatformAppleTVSimulator.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/MacOSX/PlatformAppleTVSimulator.cpp?rev=297139&r1=297138&r2=297139&view=diff > ============================================================================== > --- lldb/trunk/source/Plugins/Platform/MacOSX/PlatformAppleTVSimulator.cpp > (original) > +++ lldb/trunk/source/Plugins/Platform/MacOSX/PlatformAppleTVSimulator.cpp > Tue Mar 7 07:19:15 2017 > @@ -28,8 +28,6 @@ > #include "lldb/Utility/Log.h" > #include "lldb/Utility/StreamString.h" > > -#include "llvm/Support/FileSystem.h" > - > using namespace lldb; > using namespace lldb_private; > > @@ -248,9 +246,9 @@ Error PlatformAppleTVSimulator::ResolveE > } > > static FileSpec::EnumerateDirectoryResult > -EnumerateDirectoryCallback(void *baton, llvm::sys::fs::file_type ft, > +EnumerateDirectoryCallback(void *baton, FileSpec::FileType file_type, > const FileSpec &file_spec) { > - if (ft == llvm::sys::fs::file_type::directory_file) { > + if (file_type == FileSpec::eFileTypeDirectory) { > const char *filename = file_spec.GetFilename().GetCString(); > if (filename && > strncmp(filename, "AppleTVSimulator", strlen("AppleTVSimulator")) == > > Modified: > lldb/trunk/source/Plugins/Platform/MacOSX/PlatformAppleWatchSimulator.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/MacOSX/PlatformAppleWatchSimulator.cpp?rev=297139&r1=297138&r2=297139&view=diff > ============================================================================== > --- lldb/trunk/source/Plugins/Platform/MacOSX/PlatformAppleWatchSimulator.cpp > (original) > +++ lldb/trunk/source/Plugins/Platform/MacOSX/PlatformAppleWatchSimulator.cpp > Tue Mar 7 07:19:15 2017 > @@ -248,9 +248,9 @@ Error PlatformAppleWatchSimulator::Resol > } > > static FileSpec::EnumerateDirectoryResult > -EnumerateDirectoryCallback(void *baton, llvm::sys::fs::file_type ft, > +EnumerateDirectoryCallback(void *baton, FileSpec::FileType file_type, > const FileSpec &file_spec) { > - if (ft == llvm::sys::fs::file_type::directory_file) { > + if (file_type == FileSpec::eFileTypeDirectory) { > const char *filename = file_spec.GetFilename().GetCString(); > if (filename && > strncmp(filename, "AppleWatchSimulator", > > Modified: lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp?rev=297139&r1=297138&r2=297139&view=diff > ============================================================================== > --- lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp (original) > +++ lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp Tue Mar 7 > 07:19:15 2017 > @@ -41,7 +41,6 @@ > #include "lldb/Utility/Error.h" > #include "lldb/Utility/Log.h" > #include "llvm/ADT/STLExtras.h" > -#include "llvm/Support/FileSystem.h" > #include "llvm/Support/Threading.h" > > #if defined(__APPLE__) > @@ -202,15 +201,8 @@ Error PlatformDarwin::ResolveSymbolFile( > FileSpec &sym_file) { > Error error; > sym_file = sym_spec.GetSymbolFileSpec(); > - > - llvm::sys::fs::file_status st; > - if (status(sym_file.GetPath(), st)) { > - error.SetErrorString("Could not stat file!"); > - return error; > - } > - > - if (exists(st)) { > - if (is_directory(st)) { > + if (sym_file.Exists()) { > + if (sym_file.GetFileType() == FileSpec::eFileTypeDirectory) { > sym_file = Symbols::FindSymbolFileInBundle( > sym_file, sym_spec.GetUUIDPtr(), sym_spec.GetArchitecturePtr()); > } > @@ -1202,7 +1194,7 @@ const char *PlatformDarwin::GetDeveloper > developer_dir_path[i] = '\0'; > > FileSpec devel_dir(developer_dir_path, false); > - if (llvm::sys::fs::is_directory(devel_dir.GetPath())) { > + if (devel_dir.Exists() && devel_dir.IsDirectory()) { > developer_dir_path_valid = true; > } > } > @@ -1447,8 +1439,9 @@ bool PlatformDarwin::SDKSupportsModules( > return false; > } > > -FileSpec::EnumerateDirectoryResult PlatformDarwin::DirectoryEnumerator( > - void *baton, llvm::sys::fs::file_type file_type, const FileSpec &spec) { > +FileSpec::EnumerateDirectoryResult > +PlatformDarwin::DirectoryEnumerator(void *baton, FileSpec::FileType > file_type, > + const FileSpec &spec) { > SDKEnumeratorInfo *enumerator_info = static_cast<SDKEnumeratorInfo > *>(baton); > > if (SDKSupportsModules(enumerator_info->sdk_type, spec)) { > @@ -1463,9 +1456,8 @@ FileSpec PlatformDarwin::FindSDKInXcodeF > const FileSpec &sdks_spec) { > // Look inside Xcode for the required installed iOS SDK version > > - if (!llvm::sys::fs::is_directory(sdks_spec.GetPath())) { > + if (!sdks_spec.IsDirectory()) > return FileSpec(); > - } > > const bool find_directories = true; > const bool find_files = false; > @@ -1479,7 +1471,7 @@ FileSpec PlatformDarwin::FindSDKInXcodeF > find_files, find_other, DirectoryEnumerator, > &enumerator_info); > > - if (llvm::sys::fs::is_directory(enumerator_info.found_path.GetPath())) > + if (enumerator_info.found_path.IsDirectory()) > return enumerator_info.found_path; > else > return FileSpec(); > @@ -1638,7 +1630,7 @@ void PlatformDarwin::AddClangModuleCompi > sysroot_spec = GetSDKDirectoryForModules(sdk_type); > } > > - if (llvm::sys::fs::is_directory(sysroot_spec.GetPath())) { > + if (sysroot_spec.IsDirectory()) { > options.push_back("-isysroot"); > options.push_back(sysroot_spec.GetPath()); > } > > Modified: lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.h > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.h?rev=297139&r1=297138&r2=297139&view=diff > ============================================================================== > --- lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.h (original) > +++ lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwin.h Tue Mar 7 > 07:19:15 2017 > @@ -18,7 +18,6 @@ > #include "Plugins/Platform/POSIX/PlatformPOSIX.h" > #include "lldb/Host/FileSpec.h" > #include "llvm/ADT/StringRef.h" > -#include "llvm/Support/FileSystem.h" > > #include <string> > #include <tuple> > @@ -113,7 +112,7 @@ protected: > }; > > static lldb_private::FileSpec::EnumerateDirectoryResult > - DirectoryEnumerator(void *baton, llvm::sys::fs::file_type file_type, > + DirectoryEnumerator(void *baton, lldb_private::FileSpec::FileType > file_type, > const lldb_private::FileSpec &spec); > > static lldb_private::FileSpec > > Modified: lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwinKernel.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwinKernel.cpp?rev=297139&r1=297138&r2=297139&view=diff > ============================================================================== > --- lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwinKernel.cpp > (original) > +++ lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwinKernel.cpp Tue > Mar 7 07:19:15 2017 > @@ -36,8 +36,6 @@ > #include "lldb/Utility/Log.h" > #include "lldb/Utility/StreamString.h" > > -#include "llvm/Support/FileSystem.h" > - > #include <CoreFoundation/CoreFoundation.h> > > #include "Host/macosx/cfcpp/CFCBundle.h" > @@ -383,7 +381,7 @@ void PlatformDarwinKernel::CollectKextAn > > // Add simple directory > /Applications/Xcode.app/Contents/Developer/../Symbols > FileSpec possible_dir(developer_dir + "/../Symbols", true); > - if (llvm::sys::fs::is_directory(possible_dir.GetPath())) > + if (possible_dir.Exists() && possible_dir.IsDirectory()) > m_search_directories.push_back(possible_dir); > > // Add simple directory of the current working directory > @@ -398,7 +396,7 @@ void PlatformDarwinKernel::GetUserSpecif > for (uint32_t i = 0; i < user_dirs_count; i++) { > FileSpec dir = user_dirs.GetFileSpecAtIndex(i); > dir.ResolvePath(); > - if (llvm::sys::fs::is_directory(dir.GetPath())) { > + if (dir.Exists() && dir.IsDirectory()) { > m_search_directories.push_back(dir); > } > } > @@ -414,7 +412,7 @@ void PlatformDarwinKernel::AddRootSubdir > nullptr}; > for (int i = 0; subdirs[i] != nullptr; i++) { > FileSpec testdir(dir + subdirs[i], true); > - if (llvm::sys::fs::is_directory(testdir.GetPath())) > + if (testdir.Exists() && testdir.IsDirectory()) > thisp->m_search_directories.push_back(testdir); > } > > @@ -437,12 +435,12 @@ void PlatformDarwinKernel::AddSDKSubdirs > // Helper function to find *.sdk and *.kdk directories in a given directory. > FileSpec::EnumerateDirectoryResult > PlatformDarwinKernel::FindKDKandSDKDirectoriesInDirectory( > - void *baton, llvm::sys::fs::file_type ft, const FileSpec &file_spec) { > + void *baton, FileSpec::FileType file_type, const FileSpec &file_spec) { > static ConstString g_sdk_suffix = ConstString("sdk"); > static ConstString g_kdk_suffix = ConstString("kdk"); > > PlatformDarwinKernel *thisp = (PlatformDarwinKernel *)baton; > - if (ft == llvm::sys::fs::file_type::directory_file && > + if (file_type == FileSpec::eFileTypeDirectory && > (file_spec.GetFileNameExtension() == g_sdk_suffix || > file_spec.GetFileNameExtension() == g_kdk_suffix)) { > AddRootSubdirsToSearchPaths(thisp, file_spec.GetPath()); > @@ -488,19 +486,20 @@ void PlatformDarwinKernel::SearchForKext > > FileSpec::EnumerateDirectoryResult > PlatformDarwinKernel::GetKernelsAndKextsInDirectoryWithRecursion( > - void *baton, llvm::sys::fs::file_type ft, const FileSpec &file_spec) { > - return GetKernelsAndKextsInDirectoryHelper(baton, ft, file_spec, true); > + void *baton, FileSpec::FileType file_type, const FileSpec &file_spec) { > + return GetKernelsAndKextsInDirectoryHelper(baton, file_type, file_spec, > true); > } > > FileSpec::EnumerateDirectoryResult > PlatformDarwinKernel::GetKernelsAndKextsInDirectoryNoRecursion( > - void *baton, llvm::sys::fs::file_type ft, const FileSpec &file_spec) { > - return GetKernelsAndKextsInDirectoryHelper(baton, ft, file_spec, false); > + void *baton, FileSpec::FileType file_type, const FileSpec &file_spec) { > + return GetKernelsAndKextsInDirectoryHelper(baton, file_type, file_spec, > + false); > } > > FileSpec::EnumerateDirectoryResult > PlatformDarwinKernel::GetKernelsAndKextsInDirectoryHelper( > - void *baton, llvm::sys::fs::file_type ft, const FileSpec &file_spec, > + void *baton, FileSpec::FileType file_type, const FileSpec &file_spec, > bool recurse) { > static ConstString g_kext_suffix = ConstString("kext"); > static ConstString g_dsym_suffix = ConstString("dSYM"); > @@ -513,8 +512,8 @@ PlatformDarwinKernel::GetKernelsAndKexts > file_spec.GetPath().c_str()); > > PlatformDarwinKernel *thisp = (PlatformDarwinKernel *)baton; > - if (ft == llvm::sys::fs::file_type::regular_file || > - ft == llvm::sys::fs::file_type::symlink_file) { > + if (file_type == FileSpec::eFileTypeRegular || > + file_type == FileSpec::eFileTypeSymbolicLink) { > ConstString filename = file_spec.GetFilename(); > if ((strncmp(filename.GetCString(), "kernel", 6) == 0 || > strncmp(filename.GetCString(), "mach", 4) == 0) && > @@ -525,17 +524,17 @@ PlatformDarwinKernel::GetKernelsAndKexts > thisp->m_kernel_binaries_without_dsyms.push_back(file_spec); > return FileSpec::eEnumerateDirectoryResultNext; > } > - } else if (ft == llvm::sys::fs::file_type::directory_file && > + } else if (file_type == FileSpec::eFileTypeDirectory && > file_spec_extension == g_kext_suffix) { > AddKextToMap(thisp, file_spec); > // Look to see if there is a PlugIns subdir with more kexts > FileSpec contents_plugins(file_spec.GetPath() + "/Contents/PlugIns", > false); > std::string search_here_too; > - if (llvm::sys::fs::is_directory(contents_plugins.GetPath())) { > + if (contents_plugins.Exists() && contents_plugins.IsDirectory()) { > search_here_too = contents_plugins.GetPath(); > } else { > FileSpec plugins(file_spec.GetPath() + "/PlugIns", false); > - if (llvm::sys::fs::is_directory(plugins.GetPath())) { > + if (plugins.Exists() && plugins.IsDirectory()) { > search_here_too = plugins.GetPath(); > } > } > @@ -592,7 +591,7 @@ bool PlatformDarwinKernel::KextHasdSYMSi > std::string filename = dsym_fspec.GetFilename().AsCString(); > filename += ".dSYM"; > dsym_fspec.GetFilename() = ConstString(filename); > - if (llvm::sys::fs::is_directory(dsym_fspec.GetPath())) { > + if (dsym_fspec.Exists() && dsym_fspec.IsDirectory()) { > return true; > } > // Should probably get the CFBundleExecutable here or call > @@ -606,7 +605,7 @@ bool PlatformDarwinKernel::KextHasdSYMSi > deep_bundle_str += executable_name.AsCString(); > deep_bundle_str += ".dSYM"; > dsym_fspec.SetFile(deep_bundle_str, true); > - if (llvm::sys::fs::is_directory(dsym_fspec.GetPath())) { > + if (dsym_fspec.Exists() && dsym_fspec.IsDirectory()) { > return true; > } > > @@ -616,7 +615,7 @@ bool PlatformDarwinKernel::KextHasdSYMSi > shallow_bundle_str += executable_name.AsCString(); > shallow_bundle_str += ".dSYM"; > dsym_fspec.SetFile(shallow_bundle_str, true); > - if (llvm::sys::fs::is_directory(dsym_fspec.GetPath())) { > + if (dsym_fspec.Exists() && dsym_fspec.IsDirectory()) { > return true; > } > return false; > @@ -630,7 +629,7 @@ bool PlatformDarwinKernel::KernelHasdSYM > std::string filename = kernel_binary.GetFilename().AsCString(); > filename += ".dSYM"; > kernel_dsym.GetFilename() = ConstString(filename); > - if (llvm::sys::fs::is_directory(kernel_dsym.GetPath())) { > + if (kernel_dsym.Exists() && kernel_dsym.IsDirectory()) { > return true; > } > return false; > > Modified: lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwinKernel.h > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwinKernel.h?rev=297139&r1=297138&r2=297139&view=diff > ============================================================================== > --- lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwinKernel.h > (original) > +++ lldb/trunk/source/Plugins/Platform/MacOSX/PlatformDarwinKernel.h Tue Mar > 7 07:19:15 2017 > @@ -20,8 +20,6 @@ > // Other libraries and framework includes > #include "lldb/Host/FileSpec.h" > > -#include "llvm/Support/FileSystem.h" > - > // Project includes > #include "PlatformDarwin.h" > > @@ -107,25 +105,26 @@ protected: > void AddSDKSubdirsToSearchPaths(const std::string &dir); > > static lldb_private::FileSpec::EnumerateDirectoryResult > - FindKDKandSDKDirectoriesInDirectory(void *baton, llvm::sys::fs::file_type > ft, > - const lldb_private::FileSpec > &file_spec); > + FindKDKandSDKDirectoriesInDirectory( > + void *baton, lldb_private::FileSpec::FileType file_type, > + const lldb_private::FileSpec &file_spec); > > void SearchForKextsAndKernelsRecursively(); > > static lldb_private::FileSpec::EnumerateDirectoryResult > GetKernelsAndKextsInDirectoryWithRecursion( > - void *baton, llvm::sys::fs::file_type ft, > + void *baton, lldb_private::FileSpec::FileType file_type, > const lldb_private::FileSpec &file_spec); > > static lldb_private::FileSpec::EnumerateDirectoryResult > GetKernelsAndKextsInDirectoryNoRecursion( > - void *baton, llvm::sys::fs::file_type ft, > + void *baton, lldb_private::FileSpec::FileType file_type, > const lldb_private::FileSpec &file_spec); > > static lldb_private::FileSpec::EnumerateDirectoryResult > - GetKernelsAndKextsInDirectoryHelper(void *baton, llvm::sys::fs::file_type > ft, > - const lldb_private::FileSpec > &file_spec, > - bool recurse); > + GetKernelsAndKextsInDirectoryHelper( > + void *baton, lldb_private::FileSpec::FileType file_type, > + const lldb_private::FileSpec &file_spec, bool recurse); > > static void AddKextToMap(PlatformDarwinKernel *thisp, > const lldb_private::FileSpec &file_spec); > > Modified: lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteAppleTV.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteAppleTV.cpp?rev=297139&r1=297138&r2=297139&view=diff > ============================================================================== > --- lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteAppleTV.cpp > (original) > +++ lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteAppleTV.cpp Tue > Mar 7 07:19:15 2017 > @@ -250,7 +250,7 @@ Error PlatformRemoteAppleTV::ResolveExec > > FileSpec::EnumerateDirectoryResult > PlatformRemoteAppleTV::GetContainedFilesIntoVectorOfStringsCallback( > - void *baton, llvm::sys::fs::file_type ft, const FileSpec &file_spec) { > + void *baton, FileSpec::FileType file_type, const FileSpec &file_spec) { > ((PlatformRemoteAppleTV::SDKDirectoryInfoCollection *)baton) > ->push_back(PlatformRemoteAppleTV::SDKDirectoryInfo(file_spec)); > return FileSpec::eEnumerateDirectoryResultNext; > > Modified: lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteAppleTV.h > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteAppleTV.h?rev=297139&r1=297138&r2=297139&view=diff > ============================================================================== > --- lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteAppleTV.h > (original) > +++ lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteAppleTV.h Tue Mar > 7 07:19:15 2017 > @@ -18,8 +18,6 @@ > // Project includes > #include "lldb/Host/FileSpec.h" > > -#include "llvm/Support/FileSystem.h" > - > #include "PlatformDarwin.h" > > class PlatformRemoteAppleTV : public PlatformDarwin { > @@ -118,7 +116,7 @@ protected: > > static lldb_private::FileSpec::EnumerateDirectoryResult > GetContainedFilesIntoVectorOfStringsCallback( > - void *baton, llvm::sys::fs::file_type ft, > + void *baton, lldb_private::FileSpec::FileType file_type, > const lldb_private::FileSpec &file_spec); > > uint32_t FindFileInAllSDKs(const char *platform_file_path, > > Modified: > lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteAppleWatch.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteAppleWatch.cpp?rev=297139&r1=297138&r2=297139&view=diff > ============================================================================== > --- lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteAppleWatch.cpp > (original) > +++ lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteAppleWatch.cpp > Tue Mar 7 07:19:15 2017 > @@ -260,7 +260,7 @@ Error PlatformRemoteAppleWatch::ResolveE > > FileSpec::EnumerateDirectoryResult > PlatformRemoteAppleWatch::GetContainedFilesIntoVectorOfStringsCallback( > - void *baton, llvm::sys::fs::file_type ft, const FileSpec &file_spec) { > + void *baton, FileSpec::FileType file_type, const FileSpec &file_spec) { > ((PlatformRemoteAppleWatch::SDKDirectoryInfoCollection *)baton) > ->push_back(PlatformRemoteAppleWatch::SDKDirectoryInfo(file_spec)); > return FileSpec::eEnumerateDirectoryResultNext; > > Modified: lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteAppleWatch.h > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteAppleWatch.h?rev=297139&r1=297138&r2=297139&view=diff > ============================================================================== > --- lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteAppleWatch.h > (original) > +++ lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteAppleWatch.h Tue > Mar 7 07:19:15 2017 > @@ -21,8 +21,6 @@ > > #include "PlatformDarwin.h" > > -#include "llvm/Support/FileSystem.h" > - > class PlatformRemoteAppleWatch : public PlatformDarwin { > public: > PlatformRemoteAppleWatch(); > @@ -120,7 +118,7 @@ protected: > > static lldb_private::FileSpec::EnumerateDirectoryResult > GetContainedFilesIntoVectorOfStringsCallback( > - void *baton, llvm::sys::fs::file_type ft, > + void *baton, lldb_private::FileSpec::FileType file_type, > const lldb_private::FileSpec &file_spec); > > uint32_t FindFileInAllSDKs(const char *platform_file_path, > > Modified: lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp?rev=297139&r1=297138&r2=297139&view=diff > ============================================================================== > --- lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp (original) > +++ lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp Tue Mar > 7 07:19:15 2017 > @@ -255,7 +255,7 @@ Error PlatformRemoteiOS::ResolveExecutab > > FileSpec::EnumerateDirectoryResult > PlatformRemoteiOS::GetContainedFilesIntoVectorOfStringsCallback( > - void *baton, llvm::sys::fs::file_type ft, const FileSpec &file_spec) { > + void *baton, FileSpec::FileType file_type, const FileSpec &file_spec) { > ((PlatformRemoteiOS::SDKDirectoryInfoCollection *)baton) > ->push_back(PlatformRemoteiOS::SDKDirectoryInfo(file_spec)); > return FileSpec::eEnumerateDirectoryResultNext; > > Modified: lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.h > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.h?rev=297139&r1=297138&r2=297139&view=diff > ============================================================================== > --- lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.h (original) > +++ lldb/trunk/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.h Tue Mar 7 > 07:19:15 2017 > @@ -19,8 +19,6 @@ > #include "PlatformDarwin.h" > #include "lldb/Host/FileSpec.h" > > -#include "llvm/Support/FileSystem.h" > - > class PlatformRemoteiOS : public PlatformDarwin { > public: > PlatformRemoteiOS(); > @@ -116,7 +114,7 @@ protected: > > static lldb_private::FileSpec::EnumerateDirectoryResult > GetContainedFilesIntoVectorOfStringsCallback( > - void *baton, llvm::sys::fs::file_type ft, > + void *baton, lldb_private::FileSpec::FileType file_type, > const lldb_private::FileSpec &file_spec); > > uint32_t FindFileInAllSDKs(const char *platform_file_path, > > Modified: lldb/trunk/source/Plugins/Platform/MacOSX/PlatformiOSSimulator.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Platform/MacOSX/PlatformiOSSimulator.cpp?rev=297139&r1=297138&r2=297139&view=diff > ============================================================================== > --- lldb/trunk/source/Plugins/Platform/MacOSX/PlatformiOSSimulator.cpp > (original) > +++ lldb/trunk/source/Plugins/Platform/MacOSX/PlatformiOSSimulator.cpp Tue > Mar 7 07:19:15 2017 > @@ -29,8 +29,6 @@ > #include "lldb/Utility/Log.h" > #include "lldb/Utility/StreamString.h" > > -#include "llvm/Support/FileSystem.h" > - > using namespace lldb; > using namespace lldb_private; > > @@ -254,9 +252,9 @@ Error PlatformiOSSimulator::ResolveExecu > } > > static FileSpec::EnumerateDirectoryResult > -EnumerateDirectoryCallback(void *baton, llvm::sys::fs::file_type ft, > +EnumerateDirectoryCallback(void *baton, FileSpec::FileType file_type, > const FileSpec &file_spec) { > - if (ft == llvm::sys::fs::file_type::directory_file) { > + if (file_type == FileSpec::eFileTypeDirectory) { > const char *filename = file_spec.GetFilename().GetCString(); > if (filename && > strncmp(filename, "iPhoneSimulator", strlen("iPhoneSimulator")) == 0) > { > > Modified: lldb/trunk/source/Plugins/Process/Darwin/NativeProcessDarwin.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/Darwin/NativeProcessDarwin.cpp?rev=297139&r1=297138&r2=297139&view=diff > ============================================================================== > --- lldb/trunk/source/Plugins/Process/Darwin/NativeProcessDarwin.cpp > (original) > +++ lldb/trunk/source/Plugins/Process/Darwin/NativeProcessDarwin.cpp Tue Mar > 7 07:19:15 2017 > @@ -31,8 +31,6 @@ > > #include "MachException.h" > > -#include "llvm/Support/FileSystem.h" > - > using namespace lldb; > using namespace lldb_private; > using namespace lldb_private::process_darwin; > @@ -65,7 +63,7 @@ Error NativeProcessProtocol::Launch( > FileSpec working_dir(launch_info.GetWorkingDirectory()); > if (working_dir && > (!working_dir.ResolvePath() || > - !llvm::sys::fs::is_directory(working_dir.GetPath())) { > + working_dir.GetFileType() != FileSpec::eFileTypeDirectory)) { > error.SetErrorStringWithFormat("No such file or directory: %s", > working_dir.GetCString()); > return error; > > Modified: lldb/trunk/source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp?rev=297139&r1=297138&r2=297139&view=diff > ============================================================================== > --- lldb/trunk/source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp (original) > +++ lldb/trunk/source/Plugins/Process/FreeBSD/ProcessFreeBSD.cpp Tue Mar 7 > 07:19:15 2017 > @@ -46,7 +46,6 @@ > > #include "lldb/Host/posix/Fcntl.h" > > -#include "llvm/Support/FileSystem.h" > #include "llvm/Support/Threading.h" > > using namespace lldb; > @@ -362,9 +361,9 @@ Error ProcessFreeBSD::DoLaunch(Module *m > assert(m_monitor == NULL); > > FileSpec working_dir = launch_info.GetWorkingDirectory(); > - namespace fs = llvm::sys::fs; > - if (working_dir && (!working_dir.ResolvePath() || > - !fs::is_directory(working_dir.GetPath()))) { > + if (working_dir && > + (!working_dir.ResolvePath() || > + working_dir.GetFileType() != FileSpec::eFileTypeDirectory)) { > error.SetErrorStringWithFormat("No such file or directory: %s", > working_dir.GetCString()); > return error; > > Modified: lldb/trunk/source/Plugins/Process/Linux/NativeProcessLinux.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/Linux/NativeProcessLinux.cpp?rev=297139&r1=297138&r2=297139&view=diff > ============================================================================== > --- lldb/trunk/source/Plugins/Process/Linux/NativeProcessLinux.cpp (original) > +++ lldb/trunk/source/Plugins/Process/Linux/NativeProcessLinux.cpp Tue Mar 7 > 07:19:15 2017 > @@ -49,7 +49,6 @@ > #include "ProcFileReader.h" > #include "Procfs.h" > > -#include "llvm/Support/FileSystem.h" > #include "llvm/Support/Threading.h" > > #include <linux/unistd.h> > @@ -225,8 +224,9 @@ Error NativeProcessProtocol::Launch( > > // Verify the working directory is valid if one was specified. > FileSpec working_dir{launch_info.GetWorkingDirectory()}; > - if (working_dir && (!working_dir.ResolvePath() || > - !llvm::sys::fs::is_directory(working_dir.GetPath()))) { > + if (working_dir && > + (!working_dir.ResolvePath() || > + working_dir.GetFileType() != FileSpec::eFileTypeDirectory)) { > error.SetErrorStringWithFormat("No such file or directory: %s", > working_dir.GetCString()); > return error; > > Modified: > lldb/trunk/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp?rev=297139&r1=297138&r2=297139&view=diff > ============================================================================== > --- > lldb/trunk/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp > (original) > +++ > lldb/trunk/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp > Tue Mar 7 07:19:15 2017 > @@ -51,7 +51,6 @@ > > #include "llvm/ADT/STLExtras.h" > #include "llvm/ADT/StringRef.h" > -#include "llvm/Support/FileSystem.h" > > using namespace lldb; > using namespace lldb_private; > @@ -2576,13 +2575,9 @@ bool ScriptInterpreterPython::LoadScript > Locker::NoSTDIN, > Locker::FreeAcquiredLock | > (init_session ? Locker::TearDownSession : 0)); > - namespace fs = llvm::sys::fs; > - fs::file_status st; > - std::error_code ec = status(target_file.GetPath(), st); > - > - if (ec || st.type() == fs::file_type::status_error || > - st.type() == fs::file_type::type_unknown || > - st.type() == fs::file_type::file_not_found) { > + > + if (target_file.GetFileType() == FileSpec::eFileTypeInvalid || > + target_file.GetFileType() == FileSpec::eFileTypeUnknown) { > // if not a valid file of any sort, check if it might be a filename > still > // dot can't be used but / and \ can, and if either is found, reject > if (strchr(pathname, '\\') || strchr(pathname, '/')) { > @@ -2591,8 +2586,9 @@ bool ScriptInterpreterPython::LoadScript > } > basename = pathname; // not a filename, probably a package of some sort, > // let it go through > - } else if (is_directory(st) || fs::is_regular_file(st) || > - st.type() == fs::file_type::symlink_file) { > + } else if (target_file.GetFileType() == FileSpec::eFileTypeDirectory || > + target_file.GetFileType() == FileSpec::eFileTypeRegular || > + target_file.GetFileType() == FileSpec::eFileTypeSymbolicLink) > { > std::string directory = target_file.GetDirectory().GetCString(); > replace_all(directory, "\\", "\\\\"); > replace_all(directory, "'", "\\'"); > > Modified: lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp?rev=297139&r1=297138&r2=297139&view=diff > ============================================================================== > --- lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp (original) > +++ lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp Tue Mar 7 > 07:19:15 2017 > @@ -72,8 +72,6 @@ > #include "SymbolFileDWARFDebugMap.h" > #include "SymbolFileDWARFDwo.h" > > -#include "llvm/Support/FileSystem.h" > - > #include <map> > > #include <ctype.h> > @@ -193,9 +191,7 @@ static const char *resolveCompDir(const > if (!is_symlink) > return local_path; > > - namespace fs = llvm::sys::fs; > - if (fs::get_file_type(local_path_spec.GetPath()) != > - fs::file_type::symlink_file) > + if (!local_path_spec.IsSymbolicLink()) > return local_path; > > FileSpec resolved_local_path_spec; > > Modified: lldb/trunk/source/Target/ModuleCache.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/ModuleCache.cpp?rev=297139&r1=297138&r2=297139&view=diff > ============================================================================== > --- lldb/trunk/source/Target/ModuleCache.cpp (original) > +++ lldb/trunk/source/Target/ModuleCache.cpp Tue Mar 7 07:19:15 2017 > @@ -59,19 +59,15 @@ public: > void Delete(); > }; > > -static FileSpec JoinPath(const FileSpec &path1, const char *path2) { > +FileSpec JoinPath(const FileSpec &path1, const char *path2) { > FileSpec result_spec(path1); > result_spec.AppendPathComponent(path2); > return result_spec; > } > > -static Error MakeDirectory(const FileSpec &dir_path) { > - llvm::sys::fs::file_status st; > - if (status(dir_path.GetPath(), st)) > - return Error("Could not stat path"); > - > - if (exists(st)) { > - if (!is_directory(st)) > +Error MakeDirectory(const FileSpec &dir_path) { > + if (dir_path.Exists()) { > + if (!dir_path.IsDirectory()) > return Error("Invalid existing path"); > > return Error(); > > Modified: lldb/trunk/source/Target/Platform.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/Platform.cpp?rev=297139&r1=297138&r2=297139&view=diff > ============================================================================== > --- lldb/trunk/source/Target/Platform.cpp (original) > +++ lldb/trunk/source/Target/Platform.cpp Tue Mar 7 07:19:15 2017 > @@ -42,8 +42,6 @@ > #include "lldb/Utility/Error.h" > #include "lldb/Utility/Log.h" > > -#include "llvm/Support/FileSystem.h" > - > // Define these constants from POSIX mman.h rather than include the file > // so that they will be correct even when compiled on Linux. > #define MAP_PRIVATE 2 > @@ -543,18 +541,17 @@ struct RecurseCopyBaton { > }; > > static FileSpec::EnumerateDirectoryResult > -RecurseCopy_Callback(void *baton, llvm::sys::fs::file_type ft, > +RecurseCopy_Callback(void *baton, FileSpec::FileType file_type, > const FileSpec &src) { > RecurseCopyBaton *rc_baton = (RecurseCopyBaton *)baton; > - namespace fs = llvm::sys::fs; > - switch (ft) { > - case fs::file_type::fifo_file: > - case fs::file_type::socket_file: > + switch (file_type) { > + case FileSpec::eFileTypePipe: > + case FileSpec::eFileTypeSocket: > // we have no way to copy pipes and sockets - ignore them and continue > return FileSpec::eEnumerateDirectoryResultNext; > break; > > - case fs::file_type::directory_file: { > + case FileSpec::eFileTypeDirectory: { > // make the new directory and get in there > FileSpec dst_dir = rc_baton->dst; > if (!dst_dir.GetFilename()) > @@ -584,7 +581,7 @@ RecurseCopy_Callback(void *baton, llvm:: > return FileSpec::eEnumerateDirectoryResultNext; > } break; > > - case fs::file_type::symlink_file: { > + case FileSpec::eFileTypeSymbolicLink: { > // copy the file and keep going > FileSpec dst_file = rc_baton->dst; > if (!dst_file.GetFilename()) > @@ -606,7 +603,7 @@ RecurseCopy_Callback(void *baton, llvm:: > return FileSpec::eEnumerateDirectoryResultNext; > } break; > > - case fs::file_type::regular_file: { > + case FileSpec::eFileTypeRegular: { > // copy the file and keep going > FileSpec dst_file = rc_baton->dst; > if (!dst_file.GetFilename()) > @@ -619,13 +616,15 @@ RecurseCopy_Callback(void *baton, llvm:: > return FileSpec::eEnumerateDirectoryResultNext; > } break; > > - default: > + case FileSpec::eFileTypeInvalid: > + case FileSpec::eFileTypeOther: > + case FileSpec::eFileTypeUnknown: > rc_baton->error.SetErrorStringWithFormat( > "invalid file detected during copy: %s", src.GetPath().c_str()); > return FileSpec::eEnumerateDirectoryResultQuit; // got an error, bail out > break; > } > - llvm_unreachable("Unhandled file_type!"); > + llvm_unreachable("Unhandled FileSpec::FileType!"); > } > > Error Platform::Install(const FileSpec &src, const FileSpec &dst) { > @@ -693,9 +692,8 @@ Error Platform::Install(const FileSpec & > if (GetSupportsRSync()) { > error = PutFile(src, dst); > } else { > - namespace fs = llvm::sys::fs; > - switch (fs::get_file_type(src.GetPath())) { > - case fs::file_type::directory_file: { > + switch (src.GetFileType()) { > + case FileSpec::eFileTypeDirectory: { > if (GetFileExists(fixed_dst)) > Unlink(fixed_dst); > uint32_t permissions = src.GetPermissions(); > @@ -715,13 +713,13 @@ Error Platform::Install(const FileSpec & > } > } break; > > - case fs::file_type::regular_file: > + case FileSpec::eFileTypeRegular: > if (GetFileExists(fixed_dst)) > Unlink(fixed_dst); > error = PutFile(src, fixed_dst); > break; > > - case fs::file_type::symlink_file: { > + case FileSpec::eFileTypeSymbolicLink: { > if (GetFileExists(fixed_dst)) > Unlink(fixed_dst); > FileSpec src_resolved; > @@ -729,13 +727,15 @@ Error Platform::Install(const FileSpec & > if (error.Success()) > error = CreateSymlink(dst, src_resolved); > } break; > - case fs::file_type::fifo_file: > + case FileSpec::eFileTypePipe: > error.SetErrorString("platform install doesn't handle pipes"); > break; > - case fs::file_type::socket_file: > + case FileSpec::eFileTypeSocket: > error.SetErrorString("platform install doesn't handle sockets"); > break; > - default: > + case FileSpec::eFileTypeInvalid: > + case FileSpec::eFileTypeUnknown: > + case FileSpec::eFileTypeOther: > error.SetErrorString( > "platform install doesn't handle non file or directory items"); > break; > @@ -1236,8 +1236,7 @@ Error Platform::PutFile(const FileSpec & > > uint32_t source_open_options = > File::eOpenOptionRead | File::eOpenOptionCloseOnExec; > - namespace fs = llvm::sys::fs; > - if (fs::get_file_type(source.GetPath()) == fs::file_type::symlink_file) > + if (source.GetFileType() == FileSpec::eFileTypeSymbolicLink) > source_open_options |= File::eOpenOptionDontFollowSymlinks; > > File source_file(source, source_open_options, lldb::eFilePermissionsUserRW); > > Modified: lldb/trunk/source/Target/TargetList.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/TargetList.cpp?rev=297139&r1=297138&r2=297139&view=diff > ============================================================================== > --- lldb/trunk/source/Target/TargetList.cpp (original) > +++ lldb/trunk/source/Target/TargetList.cpp Tue Mar 7 07:19:15 2017 > @@ -362,7 +362,7 @@ Error TargetList::CreateTargetInternal(D > char resolved_bundle_exe_path[PATH_MAX]; > resolved_bundle_exe_path[0] = '\0'; > if (file) { > - if (llvm::sys::fs::is_directory(file.GetPath())) > + if (file.GetFileType() == FileSpec::eFileTypeDirectory) > user_exe_path_is_bundle = true; > > if (file.IsRelative() && !user_exe_path.empty()) { > > > _______________________________________________ > lldb-commits mailing list > lldb-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits