FAIL: stat64-v.test
Dmitry V. Levin
ldv at altlinux.org
Thu Mar 12 17:58:31 UTC 2015
On Thu, Mar 12, 2015 at 11:25:47AM +0100, Andreas Schwab wrote:
> stat64-v.test fails for tests-m32 on x86_64, because stat64 has unsigned
> int st_?time, but time_t is signed.
I'm inclined to think that the test is right and the parser is wrong.
Does this fix look OK?
--- a/printstat.h
+++ b/printstat.h
@@ -57,9 +57,17 @@ DO_PRINTSTAT(struct tcb *tcp, const STRUCT_STAT *statbuf)
}
if (!abbrev(tcp)) {
- tprintf("st_atime=%s, ", sprinttime(statbuf->st_atime));
- tprintf("st_mtime=%s, ", sprinttime(statbuf->st_mtime));
- tprintf("st_ctime=%s", sprinttime(statbuf->st_ctime));
+ const bool cast = sizeof(statbuf->st_atime) == sizeof(int);
+
+ tprintf("st_atime=%s, ",
+ sprinttime(cast ? (time_t) (int) statbuf->st_atime:
+ (time_t) statbuf->st_atime));
+ tprintf("st_mtime=%s, ",
+ sprinttime(cast ? (time_t) (int) statbuf->st_mtime:
+ (time_t) statbuf->st_mtime));
+ tprintf("st_ctime=%s",
+ sprinttime(cast ? (time_t) (int) statbuf->st_ctime:
+ (time_t) statbuf->st_ctime));
#if HAVE_STRUCT_STAT_ST_FLAGS
tprintf(", st_flags=%u", (unsigned int) statbuf->st_flags);
#endif
--- a/tests/stat64-v.test
+++ b/tests/stat64-v.test
@@ -22,8 +22,7 @@ $truncate_cmd > "$OUT" 2>&1 || {
./stat $sample > /dev/null ||
fail_ 'stat failed'
-touch -d '1970-01-01 36028797018963968 seconds' $sample ||
-touch -t 0102030405 $sample
+touch -d '1970-01-01 -42 seconds' $sample
for f in $sample . /dev/null; do
args="-v -efile ./stat $f"
--
ldv
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://lists.strace.io/pipermail/strace-devel/attachments/20150312/05dcc4b2/attachment.bin>
More information about the Strace-devel
mailing list