This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] [BZ #19363] Use INTERNAL_SYSCALL_TIMES for Linux times
- From: Adhemerval Zanella <adhemerval dot zanella at linaro dot org>
- To: "H.J. Lu" <hjl dot tools at gmail dot com>
- Cc: GNU C Library <libc-alpha at sourceware dot org>
- Date: Thu, 17 Dec 2015 18:48:08 -0200
- Subject: Re: [PATCH] [BZ #19363] Use INTERNAL_SYSCALL_TIMES for Linux times
- Authentication-results: sourceware.org; auth=none
- References: <20151215032733 dot GA14426 at gmail dot com> <mvm37v49itj dot fsf at hawking dot suse dot de> <20151215150001 dot GT11489 at vapier dot lan> <mvmtwnj7ni7 dot fsf at hawking dot suse dot de> <CAMe9rOqi=mbzbSzPB26HHm=K0iddv6K8Cs8ACbDd_p=Q-ShWew at mail dot gmail dot com> <mvm7fkf7hr0 dot fsf at hawking dot suse dot de> <CAMe9rOrZc-CM4Rh4YBGUQeZzFC9kB0MJ8c-QZ_UST9s5=VXjYg at mail dot gmail dot com> <8760zza83t dot fsf at igel dot home> <CAMe9rOphOzT=M9ni=Cxar=vaob3rgFoiGO2KS+jbetAXLQ5F3g at mail dot gmail dot com> <871tan9trb dot fsf at igel dot home> <CAMe9rOq00tDiFqZh0g3tpfd9c1oKo7=k-Be3uF_ATTn0e9mQpQ at mail dot gmail dot com> <mvm37v27put dot fsf at hawking dot suse dot de> <CAMe9rOpRFDQsymEAiZ=MGXL49aZDBMfuMG=KrYZRGdS4DdZGrQ at mail dot gmail dot com> <mvmbn9q5xen dot fsf at hawking dot suse dot de> <CAMe9rOqFGUdyp_PZTxgmKEt8v8MYL36v6-zKcmO926XneM1JZw at mail dot gmail dot com> <mvm7fke5vgj dot fsf at hawking dot suse dot de> <CAMe9rOqQvXcP5CjrZOQwusMNqJaHKt+N4ZxfeoVSPFecOaCAdw at mail dot gmail dot com> <56719548 dot 8090307 at linaro dot org> <CAMe9rOqKkCSgape-yToi6aYWq_UHABdBX3Q2N8Y4jpm_iO3K_A at mail dot gmail dot com>
On 16-12-2015 19:18, H.J. Lu wrote:
> On Wed, Dec 16, 2015 at 8:46 AM, Adhemerval Zanella
> <adhemerval.zanella@linaro.org> wrote:
>>
>>
>> On 16-12-2015 12:42, H.J. Lu wrote:
>>> On Wed, Dec 16, 2015 at 6:17 AM, Andreas Schwab <schwab@suse.de> wrote:
>>>> "H.J. Lu" <hjl.tools@gmail.com> writes:
>>>>
>>>>> Then they have to use proper type to hold the return from "syscall".
>>>>
>>>> The proper type is long long which works for both x86_64 and x32.
>>>>
>>>
>>> I opened a syscall (), not "syscall" instruction, bug:
>>>
>>> https://sourceware.org/bugzilla/show_bug.cgi?id=19371
>>>
>>
>> The question is why instead of reimplement each x32 syscall call that
>> requires long long return with specific arch implementations (this
>> very patch idea) we change the x32 syscall return to long long
>> instead?
>>
>> So instead of redefine each INTERNAL_SYSCALL_XXX for x32 we make it
>> work on the current times implementation instead.
>
> Please think hard on this. X32 is ILP32 and syscall puts return
> value in 64-bit register RAX. All, but 3, system calls have 32-bit
> return value with zero upper 32-bits in RAX. Now RAX has
> 0x80000000. How do you extend it to 64-bit if syscall returns 64-bit?
>
I meant the macros at sysdep.h, not the ABI. Instead of internally
using 'long int' to handle the inline assembly, change it to 'long long'
to make it 64-bit for both x86_64 and x32, and let the compiler handle
the truncation if required.