This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
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
Attachment:
pgp7QbUw0L2kv.pgp
Description: PGP signature
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |