Include filename in File IO error messages

I found this useful while debugging.

PiperOrigin-RevId: 294545582
diff --git a/iree/base/internal/file_io_posix.cc b/iree/base/internal/file_io_posix.cc
index 37ff66b..ee9cd4b 100644
--- a/iree/base/internal/file_io_posix.cc
+++ b/iree/base/internal/file_io_posix.cc
@@ -14,6 +14,7 @@
 
 #include <cstdio>
 
+#include "absl/strings/str_cat.h"
 #include "iree/base/file_io.h"
 #include "iree/base/status.h"
 #include "iree/base/target_platform.h"
@@ -30,8 +31,9 @@
 
 Status FileExists(const std::string& path) {
   struct stat stat_buf;
-  return stat(path.c_str(), &stat_buf) == 0 ? OkStatus()
-                                            : NotFoundErrorBuilder(IREE_LOC);
+  return stat(path.c_str(), &stat_buf) == 0
+             ? OkStatus()
+             : NotFoundErrorBuilder(IREE_LOC) << "'" << path << "'";
 }
 
 StatusOr<std::string> GetFileContents(const std::string& path) {
@@ -40,28 +42,29 @@
                                                    if (file) fclose(file);
                                                  }};
   if (file == nullptr) {
-    return ErrnoToCanonicalStatusBuilder(errno, "Failed to open file",
-                                         IREE_LOC);
+    return ErrnoToCanonicalStatusBuilder(
+        errno, absl::StrCat("Failed to open file '", path, "'"), IREE_LOC);
   }
   if (std::fseek(file.get(), 0, SEEK_END) == -1) {
-    return ErrnoToCanonicalStatusBuilder(errno, "Failed to seek file",
-                                         IREE_LOC);
+    return ErrnoToCanonicalStatusBuilder(
+        errno, absl::StrCat("Failed to seek file '", path, "'"), IREE_LOC);
   }
   size_t file_size = std::ftell(file.get());
   if (file_size == -1L) {
-    return ErrnoToCanonicalStatusBuilder(errno, "Failed to read file length",
-                                         IREE_LOC);
+    return ErrnoToCanonicalStatusBuilder(
+        errno, absl::StrCat("Failed to read file length '", path, "'"),
+        IREE_LOC);
   }
   if (std::fseek(file.get(), 0, SEEK_SET) == -1) {
-    return ErrnoToCanonicalStatusBuilder(errno, "Failed to seek file",
-                                         IREE_LOC);
+    return ErrnoToCanonicalStatusBuilder(
+        errno, absl::StrCat("Failed to seek file '", path, "'"), IREE_LOC);
   }
   std::string contents;
   contents.resize(file_size);
   if (std::fread(const_cast<char*>(contents.data()), file_size, 1,
                  file.get()) != 1) {
     return UnavailableErrorBuilder(IREE_LOC)
-           << "Unable to read entire file contents";
+           << "Unable to read entire file contents of '" << path << "'";
   }
   return contents;
 }
@@ -72,21 +75,21 @@
                                                    if (file) fclose(file);
                                                  }};
   if (file == nullptr) {
-    return ErrnoToCanonicalStatusBuilder(errno, "Failed to open file",
-                                         IREE_LOC);
+    return ErrnoToCanonicalStatusBuilder(
+        errno, absl::StrCat("Failed to open file '", path, "'"), IREE_LOC);
   }
   if (std::fwrite(const_cast<char*>(content.data()), content.size(), 1,
                   file.get()) != 1) {
     return UnavailableErrorBuilder(IREE_LOC)
-           << "Unable to write entire file contents";
+           << "Unable to write entire file contents of '" << path << "'";
   }
   return OkStatus();
 }
 
 Status DeleteFile(const std::string& path) {
   if (::remove(path.c_str()) == -1) {
-    return ErrnoToCanonicalStatusBuilder(errno, "Failed to delete file",
-                                         IREE_LOC);
+    return ErrnoToCanonicalStatusBuilder(
+        errno, absl::StrCat("Failed to delete file '", path, "'"), IREE_LOC);
   }
   return OkStatus();
 }
@@ -94,8 +97,11 @@
 Status MoveFile(const std::string& source_path,
                 const std::string& destination_path) {
   if (::rename(source_path.c_str(), destination_path.c_str()) == -1) {
-    return ErrnoToCanonicalStatusBuilder(errno, "Failed to rename file",
-                                         IREE_LOC);
+    return ErrnoToCanonicalStatusBuilder(
+        errno,
+        absl::StrCat("Failed to rename file '", source_path, "' to '",
+                     destination_path, "'"),
+        IREE_LOC);
   }
   return OkStatus();
 }
diff --git a/iree/base/internal/file_io_win32.cc b/iree/base/internal/file_io_win32.cc
index 9ea29ac..8486b94 100644
--- a/iree/base/internal/file_io_win32.cc
+++ b/iree/base/internal/file_io_win32.cc
@@ -42,11 +42,12 @@
   if (::ReadFile(file->handle(), const_cast<char*>(result.data()),
                  result.size(), &bytes_read, nullptr) == FALSE) {
     return Win32ErrorToCanonicalStatusBuilder(GetLastError(), IREE_LOC)
-           << "Unable to read file span of " << result.size() << " bytes";
+           << "Unable to read file span of " << result.size() << " bytes from '"
+           << path << "'";
   } else if (bytes_read != file->size()) {
     return ResourceExhaustedErrorBuilder(IREE_LOC)
-           << "Unable to read all " << file->size()
-           << " bytes from the file (got " << bytes_read << ")";
+           << "Unable to read all " << file->size() << " bytes from '" << path
+           << "' (got " << bytes_read << ")";
   }
   return result;
 }