[gold commit] Fix use of system fallocate
Cary Coutant
ccoutant@gmail.com
Fri Mar 19 23:21:41 GMT 2021
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.
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;
More information about the Binutils
mailing list