Preparing for the next release: call for testing

Dmitry V. Levin ldv at altlinux.org
Mon Dec 14 21:03:15 UTC 2015


On Mon, Dec 14, 2015 at 03:45:40PM -0500, Mike Frysinger wrote:
> On 11 Dec 2015 06:30, Dmitry V. Levin wrote:
> > On Thu, Dec 10, 2015 at 09:37:35PM -0500, Mike Frysinger wrote:
[...]
> > > vFAIL:  test;   x86_64  32-bit/LSB  linux-4.1.6         kernel-headers-4.1.0   glibc-2.21  gcc-4.9.2
> > > < times({tms_utime=22, tms_stime=17, tms_cutime=33, tms_cstime=26}) = 18446744071580810102
> > > ---
> > > > times({tms_utime=22, tms_stime=17, tms_cutime=33, tms_cstime=26}) = 2166225782
> > 
> > Looks like a sign extension bug in libc.
> > Is there any safe way on x32 to call times(2) directly?
> 
> time_t/clock_t/unsigned long long are 64bit in x32.

Yes, but the value returned by times syscall in this case is 2166225782.
I suppose it's libc that sign-extended 2166225782 to 18446744071580810102.
That's why I'd like to avoid libc wrapper and call times syscall
directly.  Unfortunately, syscall() returns long which is not appropriate
for times syscall on x32.

> looks like strace doesn't like it when you call clock_gettime:
> strace: syscall_228(...) in unsupported 64-bit mode of process PID=2565
> 
> which doesn't make sense as they're the same syscall for x86_64 and x32.

They are not exactly the same, as x32 syscalls have __X32_SYSCALL_BIT set.
In this case libc must be invoking an x86_64 syscall instead of an x32 one.


-- 
ldv
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.strace.io/pipermail/strace-devel/attachments/20151215/415f9f4b/attachment.bin>


More information about the Strace-devel mailing list