diff options
| author | Reid Kleckner <rnk@google.com> | 2019-07-11 20:29:32 +0000 | 
|---|---|---|
| committer | Reid Kleckner <rnk@google.com> | 2019-07-11 20:29:32 +0000 | 
| commit | f002fcb2ad64a75a2f0aea3eb067614f4681284b (patch) | |
| tree | e13291958d4eaad57805ed119666bb5c52d04969 /llvm/lib/XRay | |
| parent | f4af9a9d806f0471a94d9c803c581e9ef1ea9424 (diff) | |
| download | bcm5719-llvm-f002fcb2ad64a75a2f0aea3eb067614f4681284b.tar.gz bcm5719-llvm-f002fcb2ad64a75a2f0aea3eb067614f4681284b.zip  | |
Open native file handles to avoid converting from FDs, NFC
Follow up to r365588.
llvm-svn: 365820
Diffstat (limited to 'llvm/lib/XRay')
| -rw-r--r-- | llvm/lib/XRay/InstrumentationMap.cpp | 15 | ||||
| -rw-r--r-- | llvm/lib/XRay/Profile.cpp | 12 | ||||
| -rw-r--r-- | llvm/lib/XRay/Trace.cpp | 13 | 
3 files changed, 21 insertions, 19 deletions
diff --git a/llvm/lib/XRay/InstrumentationMap.cpp b/llvm/lib/XRay/InstrumentationMap.cpp index 5b90c5a7ebd..fe5e941f7ea 100644 --- a/llvm/lib/XRay/InstrumentationMap.cpp +++ b/llvm/lib/XRay/InstrumentationMap.cpp @@ -172,14 +172,14 @@ loadObj(StringRef Filename, object::OwningBinary<object::ObjectFile> &ObjFile,  }  static Error -loadYAML(int Fd, size_t FileSize, StringRef Filename, +loadYAML(sys::fs::file_t Fd, size_t FileSize, StringRef Filename,           InstrumentationMap::SledContainer &Sleds,           InstrumentationMap::FunctionAddressMap &FunctionAddresses,           InstrumentationMap::FunctionAddressReverseMap &FunctionIds) {    std::error_code EC;    sys::fs::mapped_file_region MappedFile( -      sys::fs::convertFDToNativeFile(Fd), -      sys::fs::mapped_file_region::mapmode::readonly, FileSize, 0, EC); +      Fd, sys::fs::mapped_file_region::mapmode::readonly, FileSize, 0, EC); +  sys::fs::closeFile(Fd);    if (EC)      return make_error<StringError>(          Twine("Failed memory-mapping file '") + Filename + "'.", EC); @@ -215,9 +215,12 @@ llvm::xray::loadInstrumentationMap(StringRef Filename) {    if (!ObjectFileOrError) {      auto E = ObjectFileOrError.takeError();      // We try to load it as YAML if the ELF load didn't work. -    int Fd; -    if (sys::fs::openFileForRead(Filename, Fd)) +    Expected<sys::fs::file_t> FdOrErr = sys::fs::openNativeFileForRead(Filename); +    if (!FdOrErr) { +      // Report the ELF load error if YAML failed. +      consumeError(FdOrErr.takeError());        return std::move(E); +    }      uint64_t FileSize;      if (sys::fs::file_size(Filename, FileSize)) @@ -230,7 +233,7 @@ llvm::xray::loadInstrumentationMap(StringRef Filename) {      // From this point on the errors will be only for the YAML parts, so we      // consume the errors at this point.      consumeError(std::move(E)); -    if (auto E = loadYAML(Fd, FileSize, Filename, Map.Sleds, +    if (auto E = loadYAML(*FdOrErr, FileSize, Filename, Map.Sleds,                            Map.FunctionAddresses, Map.FunctionIds))        return std::move(E);    } else if (auto E = loadObj(Filename, *ObjectFileOrError, Map.Sleds, diff --git a/llvm/lib/XRay/Profile.cpp b/llvm/lib/XRay/Profile.cpp index 9ba8eb1088d..e34b182f2e0 100644 --- a/llvm/lib/XRay/Profile.cpp +++ b/llvm/lib/XRay/Profile.cpp @@ -260,10 +260,9 @@ Profile mergeProfilesByStack(const Profile &L, const Profile &R) {  }  Expected<Profile> loadProfile(StringRef Filename) { -  int Fd; -  if (auto EC = sys::fs::openFileForRead(Filename, Fd)) -    return make_error<StringError>( -        Twine("Cannot read profile from '") + Filename + "'", EC); +  Expected<sys::fs::file_t> FdOrErr = sys::fs::openNativeFileForRead(Filename); +  if (!FdOrErr) +    return FdOrErr.takeError();    uint64_t FileSize;    if (auto EC = sys::fs::file_size(Filename, FileSize)) @@ -272,8 +271,9 @@ Expected<Profile> loadProfile(StringRef Filename) {    std::error_code EC;    sys::fs::mapped_file_region MappedFile( -      sys::fs::convertFDToNativeFile(Fd), -      sys::fs::mapped_file_region::mapmode::readonly, FileSize, 0, EC); +      *FdOrErr, sys::fs::mapped_file_region::mapmode::readonly, FileSize, 0, +      EC); +  sys::fs::closeFile(*FdOrErr);    if (EC)      return make_error<StringError>(          Twine("Cannot mmap profile '") + Filename + "'", EC); diff --git a/llvm/lib/XRay/Trace.cpp b/llvm/lib/XRay/Trace.cpp index 0945c8e847e..b9b67c561c6 100644 --- a/llvm/lib/XRay/Trace.cpp +++ b/llvm/lib/XRay/Trace.cpp @@ -371,11 +371,9 @@ Error loadYAMLLog(StringRef Data, XRayFileHeader &FileHeader,  } // namespace  Expected<Trace> llvm::xray::loadTraceFile(StringRef Filename, bool Sort) { -  int Fd; -  if (auto EC = sys::fs::openFileForRead(Filename, Fd)) { -    return make_error<StringError>( -        Twine("Cannot read log from '") + Filename + "'", EC); -  } +  Expected<sys::fs::file_t> FdOrErr = sys::fs::openNativeFileForRead(Filename); +  if (!FdOrErr) +    return FdOrErr.takeError();    uint64_t FileSize;    if (auto EC = sys::fs::file_size(Filename, FileSize)) { @@ -391,8 +389,9 @@ Expected<Trace> llvm::xray::loadTraceFile(StringRef Filename, bool Sort) {    // Map the opened file into memory and use a StringRef to access it later.    std::error_code EC;    sys::fs::mapped_file_region MappedFile( -      sys::fs::convertFDToNativeFile(Fd), -      sys::fs::mapped_file_region::mapmode::readonly, FileSize, 0, EC); +      *FdOrErr, sys::fs::mapped_file_region::mapmode::readonly, FileSize, 0, +      EC); +  sys::fs::closeFile(*FdOrErr);    if (EC) {      return make_error<StringError>(          Twine("Cannot read log from '") + Filename + "'", EC);  | 

