- Package:
- manpages-dev
- Source:
- manpages-dev
- Submitter:
- Uwe Kleine-König
- Date:
- 2023-04-19 09:36:03 UTC
- Severity:
- normal
Hello,
the manpage for stat, fstat, lstat and fstatat specify that the error
EOVERLFLOW means:
pathname or fd refers to a file whose size, inode number, or
number of blocks cannot be represented in, respectively, the
types off_t, ino_t, or blkcnt_t. This error can occur when, for
example, an application compiled on a 32-bit platform without
-D_FILE_OFFSET_BITS=64 calls stat() on a file whose size exceeds
(1<<31)-1 bytes.
However at least in libc6-2.35 and later EOVERFLOW is also returned if
st_atim.tv_sec, st_mtim.tv_sec or st_ctim.tv_sec don't fit into an
int32_t on platforms with __TIME_SIZE == 32.
Best regards
Uwe
Hello,
I did some more research about this issue, so I'm adding some more
information.
fstatat with __fstatat64_time64") in glibc, that's between 2.33.9000 and
2.34. Commit aa03f722f3b994aaf81e72a8904bf33196780930 that was added for
2.33 is also slightly relevant (for platforms with LFS but 32 bit
time_t).
There are a few more calls that can return an undocumented EOVERFLOW:
- clock_gettime
(since commit ec138c67cbda ("sysdeps/clock_gettime: Use clock_gettime64 if avaliable")
that is already in glibc 2.31)
- ftime
(since commit 5d8aa97da233 ("time: Add 64-bit time_t support for ftime")
that is included in glibc 2.33)
- gettimeofday
(since commit 7455b700279e ("y2038: linux: Provide __gettimeofday64 implementation")
that is included in glibc 2.31)
- sched_rr_get_interval
(since commit b112f53e9d0f ("y2038: linux: Provide __sched_rr_get_interval64 implementation")
that is included in glibc 2.32)
- time
(since commit 75c4044b9a49 ("y2038: linux: Provide __time64 implementation")
included in glibc 2.33)
- timespec_get
(since commit f1c314d27552 ("y2038: linux: Provide __timespec_get64 implementation")
included in glibc 2.32)
I didn't find documenation about this function in manpages-dev, seems
to have appeard for isoc11.
Best regards
Uwe
Hello,
I did some more research about this issue, so I'm adding some more
information.
fstatat with __fstatat64_time64") in glibc, that's between 2.33.9000 and
2.34. Commit aa03f722f3b994aaf81e72a8904bf33196780930 that was added for
2.33 is also slightly relevant (for platforms with LFS but 32 bit
time_t).
There are a few more calls that can return an undocumented EOVERFLOW:
- clock_gettime
(since commit ec138c67cbda ("sysdeps/clock_gettime: Use clock_gettime64 if avaliable")
that is already in glibc 2.31)
- ftime
(since commit 5d8aa97da233 ("time: Add 64-bit time_t support for ftime")
that is included in glibc 2.33)
- gettimeofday
(since commit 7455b700279e ("y2038: linux: Provide __gettimeofday64 implementation")
that is included in glibc 2.31)
- sched_rr_get_interval
(since commit b112f53e9d0f ("y2038: linux: Provide __sched_rr_get_interval64 implementation")
that is included in glibc 2.32)
- time
(since commit 75c4044b9a49 ("y2038: linux: Provide __time64 implementation")
included in glibc 2.33)
- timespec_get
(since commit f1c314d27552 ("y2038: linux: Provide __timespec_get64 implementation")
included in glibc 2.32)
I didn't find documenation about this function in manpages-dev, seems
to have appeard for isoc11.
Best regards
Uwe