[gold,commit] Fix use of system fallocate

Message ID CAJimCsEKnW9Wct1h5P+UUNjxUgBQC4bT04R49e7hK3wSJY-s0w@mail.gmail.com
State New
Headers show
Series
  • [gold,commit] Fix use of system fallocate
Related show

Commit Message

Nick Clifton via Binutils March 19, 2021, 11:21 p.m.
I've committed the following patch to fix the improper error handling
when calling system fallocate when posix_fallocate is not available.

-cary


2021-03-19  Holger Berger  <holger.berger@googlemail.com>

gold/
        PR gold/26541
        * output.cc (gold_fallocate): Use errno when calling system fallocate.

Patch

diff --git a/gold/output.cc b/gold/output.cc
index b7505ffd72c..afdba06753e 100644
--- a/gold/output.cc
+++ b/gold/output.cc
@@ -141,12 +141,14 @@  gold_fallocate(int o, off_t offset, off_t len)

 #ifdef HAVE_FALLOCATE
   {
+    errno = 0;
     int err = ::fallocate(o, 0, offset, len);
-    if (err != EINVAL && err != ENOSYS && err != EOPNOTSUPP)
-      return err;
+    if (err < 0 && errno != EINVAL && errno != ENOSYS && errno != EOPNOTSUPP)
+      return errno;
   }
 #endif // defined(HAVE_FALLOCATE)

+  errno = 0;
   if (::ftruncate(o, offset + len) < 0)
     return errno;
   return 0;