diff --git a/projects/clr/hipamd/src/hip_code_object.cpp b/projects/clr/hipamd/src/hip_code_object.cpp index c719a68024..d36ad9e9e6 100644 --- a/projects/clr/hipamd/src/hip_code_object.cpp +++ b/projects/clr/hipamd/src/hip_code_object.cpp @@ -509,6 +509,9 @@ hipError_t DynCO::loadCodeObject(const char* fname, const void* image) { // Define Global functions IHIP_RETURN_ONFAIL(populateDynGlobalFuncs()); + // Resets the file info such as desc, size and name + // as they are not necessary once the code object is loaded + fb_info_->ResetFileInfo(); return hipSuccess; } diff --git a/projects/clr/hipamd/src/hip_fatbin.cpp b/projects/clr/hipamd/src/hip_fatbin.cpp index 04ae382bdf..5407cde476 100644 --- a/projects/clr/hipamd/src/hip_fatbin.cpp +++ b/projects/clr/hipamd/src/hip_fatbin.cpp @@ -29,20 +29,7 @@ FatBinaryInfo::~FatBinaryInfo() { delete fbd; } - if (fdesc_ > 0) { - if (fsize_ && !amd::Os::MemoryUnmapFile(image_, fsize_)) { - guarantee(false, "Cannot unmap file"); - } - if (!amd::Os::CloseFileHandle(fdesc_)) { - guarantee(false, "Cannot close file"); - } - } - - fname_ = std::string(); - fdesc_ = amd::Os::FDescInit(); - fsize_ = 0; - image_ = nullptr; - uri_ = std::string(); + ResetFileInfo(); } hipError_t FatBinaryInfo::ExtractFatBinary(const std::vector& devices) { diff --git a/projects/clr/hipamd/src/hip_fatbin.hpp b/projects/clr/hipamd/src/hip_fatbin.hpp index 219a96e802..4692f4d247 100644 --- a/projects/clr/hipamd/src/hip_fatbin.hpp +++ b/projects/clr/hipamd/src/hip_fatbin.hpp @@ -67,6 +67,24 @@ public: return hipSuccess; } + // Resets the file information + void ResetFileInfo() { + if (fdesc_ > 0) { + if (fsize_ && !amd::Os::MemoryUnmapFile(image_, fsize_)) { + guarantee(false, "Cannot unmap file"); + } + if (!amd::Os::CloseFileHandle(fdesc_)) { + guarantee(false, "Cannot close file"); + } + } + + fname_ = std::string(); + fdesc_ = amd::Os::FDescInit(); + fsize_ = 0; + image_ = nullptr; + uri_ = std::string(); + } + private: std::string fname_; // File name amd::Os::FileDesc fdesc_; // File descriptor