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]

Re: gettimeofday / vdso / aarch64 question



On 10/05/2018 13:22, Steve Ellcey wrote:
> On Thu, 2018-05-10 at 09:42 +0200, Andreas Schwab wrote:
>> On Mai 09 2018, Steve Ellcey <sellcey@cavium.com> wrote:
>>
>>>
>>> +libc_ifunc_hidden (__redirect___gettimeofday, __gettimeofday,
>>> +                    vdso_gettimeofday ?: (void *)
>>> __gettimeofday_syscall)
>>> +# undef libc_hidden_def
>>> +# define libc_hidden_def(name)                               \
>>> +  __hidden_ver1 (__gettimeofday_syscall, __GI___gettimeofday,  \
>>> +               __gettimeofday_syscall);
>>> +weak_alias (__gettimeofday, gettimeofday)
>>> +libc_hidden_weak (gettimeofday)
>> You are (re)defining libc_hidden_def, but don't use it.
>>
>> Andreas.
> 
> Argh.  Staring at it too long to see it.  I have it building now,
> I will submit a patch once the testsuite finishes.
> 
> Steve Ellcey
> 

Keep in mind that different that x86 and powerpc implementations, where
the vDSO symbol does not fail; the arm64 vDSO implements a syscall
fallback in case of underlying hardware requires an out-of-line counter
access (arch_timer_enable_workaround).

Using a ifunc accessors to call vDSO directly will result in a slight
different semantic since generic implementation (kernel/time/time.c)
might return EFAULT in some cases (which won't be handled by ifunc
implementation).  This should not be an issue since POSIX [1] defines
no error code should reserved for the symbol, but it might trigger
some test in LTP.

I recommend you document it on commit log with the rationale to use
ifunc instead of usual INLINE_VSYSCALL.

[1] http://pubs.opengroup.org/onlinepubs/9699919799/ 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]