[PATCH] [BZ #19363] Use INTERNAL_SYSCALL_TIMES for Linux times
Dmitry V. Levin
ldv@altlinux.org
Tue Dec 15 03:47:00 GMT 2015
On Mon, Dec 14, 2015 at 07:27:33PM -0800, H.J. Lu wrote:
> The Linux times function, which returns clock_t, is implemented with
> INTERNAL_SYSCALL. Since INTERNAL_SYSCALL returns 32-bit integer and
> and clock_t is 64-bit on x32, there is mismatch on x32. times is the
> only such function since there is lseek.S for x32. This patch replaces
> INTERNAL_SYSCALL in Linux times.c with INTERNAL_SYSCALL_TIMES which is
> default to INTERNAL_SYSCALL and provides x32 times.c with proper
> INTERNAL_SYSCALL_TIMES.
>
> There is no code change on times for i686 nor x86-64. For x32, before
> this patch, there are
>
> 0000000 <__times>:
> 0: b8 64 00 00 40 mov $0x40000064,%eax
> 5: 0f 05 syscall
> 7: 48 63 d0 movslq %eax,%rdx
> ^^^^^^^^^^ Incorrect signed extension
> a: 48 83 fa f2 cmp $0xfffffffffffffff2,%rdx
> e: 75 07 jne 17 <__times+0x17>
> 10: 3d 00 f0 ff ff cmp $0xfffff000,%eax
> 15: 77 11 ja 28 <__times+0x28>
> 17: 48 83 fa ff cmp $0xffffffffffffffff,%rdx
> 1b: b8 00 00 00 00 mov $0x0,%eax
> 20: 48 0f 45 c2 cmovne %rdx,%rax
> 24: c3 retq
>
> After this patch, there are
>
> 00000000 <__times>:
> 0: b8 64 00 00 40 mov $0x40000064,%eax
> 5: 0f 05 syscall
> 7: 48 83 f8 f2 cmp $0xfffffffffffffff2,%rax
> b: 75 07 jne 14 <__times+0x14>
> d: 3d 00 f0 ff ff cmp $0xfffff000,%eax
> 12: 77 14 ja 28 <__times+0x28>
> 14: 48 83 f8 ff cmp $0xffffffffffffffff,%rax
> 18: ba 00 00 00 00 mov $0x0,%edx
> 1d: 48 0f 44 c2 cmove %rdx,%rax
> 21: c3 retq
>
> The incorrect signed extension is gone.
Great.
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/times.c b/sysdeps/unix/sysv/linux/x86_64/x32/times.c
> new file mode 100644
> index 0000000..c32324f
> --- /dev/null
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/times.c
> @@ -0,0 +1,31 @@
> +/* Linux times. X32 version.
[...]
> +/* Incline Linux times system calls. */
Please fix spelling issues here.
--
ldv
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/libc-alpha/attachments/20151215/1992ead9/attachment.sig>
More information about the Libc-alpha
mailing list