unofficial mirror of libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Adhemerval Zanella <adhemerval.zanella@linaro.org>
To: Siddhesh Poyarekar <siddhesh@gotplt.org>, libc-alpha@sourceware.org
Subject: Re: [PATCH v2 01/16] linux: Fix vDSO macros build with time64 interfaces
Date: Thu, 2 Jan 2020 09:55:13 -0300	[thread overview]
Message-ID: <45845fa8-9f7f-ef9c-eeeb-79a1bcb3d484@linaro.org> (raw)
In-Reply-To: <3b8a5f8f-40bb-9b91-e4d1-bf84dd258fcf@gotplt.org>



On 02/01/2020 09:07, Siddhesh Poyarekar wrote:
> On 18/12/19 3:17 am, Adhemerval Zanella wrote:
>> Changes from previous version:
>>
>>   - Reinstate syscall fallback on INLINE_VSYSCALL, it simplifies
>>     when the macro is used multiple times (as for clock_gettime
>>     and clock_getres).
>>
>> --
>>
>> As indicated on libc-help [1] the ec138c67cb commit broke 32-bit
>> builds when configured with --enable-kernel=5.1 or higher.  The
>> scenario 10 from [2] might also occur in this configuration and
> 
> What is scenario 10 from [2]?

Oops, I forgot to add the link itself
https://sourceware.org/ml/libc-alpha/2019-12/msg00142.html. It is:

  10. Define __NR_clock_gettime64 and __NR_clock_gettime and provide
      a 32-bit vDSO.
      - i.e. sparc32, powerpc32

The architecture will define it has clock_gettime time32 vDSO
(HAVE_CLOCK_GETTIME_VSYSCALL) and the INLINE_VSYSCALL macro will
be defined to call the vDSO symbol.  However since the architecture
only defines it for time32 version, the macro fails because it does
not internally define the function pointer for time64.

I did not take in consideration this scenario is also valid for
32-bit architecture with --enable-kernel=5.1 (the case of the
build failure reported on libc-help), where __ASSUME_TIME64_SYSCALLS
is defined and thus it might call the time64 vDSO.

> 
>> INLINE_VSYSCALL will try to use the vDSO symbol and
>> HAVE_CLOCK_GETTIME64_VSYSCALL does not set HAVE_VSYSCALL prior its
>> usage.
>>
>> Also, there is no easy way to just enable the code to use one
>> vDSO sysmbo since the macro INLINE_VSYSCALL is redefined if
> 
> symbol

Ack.

> 
>> HAVE_VSYSCALL is set.
>>
>> Instead of adding more pre-processor handling and making the code
>> even more convoluted, this patch removes the requirement of defining
>> HAVE_VSYSCALL before including sysdep-vdso.h to enable vDSO usage.
>>
>> The INLINE_VSYSCALL is now expected to be issued inside a
>> HAVE_*_VSYSCALL check, since it will try to use the internal vDSO
>> pointers.
>>
>> Both clock_getres and clock_gettime vDSO code for time64_t were
>> removed since there is no vDSO setup code for the symbol (an
>> architecture can not set HAVE_CLOCK_GETTIME64_VSYSCALL).
>>
>> Checked on i686-linux-gnu (default and with --enable-kernel=5.1),
>> x86_64-linux-gnu, aarch64-linux-gnu, and powerpc64le-linux-gnu.
>> I also checked against a build to mips64-linux-gnu and
>> sparc64-linux-gnu.
>>
>> [1] https://sourceware.org/ml/libc-help/2019-12/msg00014.html
>> ---
>>  .../unix/sysv/linux/aarch64/gettimeofday.c    |  4 --
>>  sysdeps/unix/sysv/linux/clock_getres.c        | 36 +++++++++++-------
>>  sysdeps/unix/sysv/linux/clock_gettime.c       | 38 +++++++++++--------
>>  sysdeps/unix/sysv/linux/getcpu.c              |  9 +----
>>  .../unix/sysv/linux/powerpc/gettimeofday.c    |  4 --
>>  sysdeps/unix/sysv/linux/powerpc/time.c        |  4 --
>>  sysdeps/unix/sysv/linux/sched_getcpu.c        | 15 +++-----
>>  sysdeps/unix/sysv/linux/sysdep-vdso.h         | 34 +----------------
>>  sysdeps/unix/sysv/linux/x86/gettimeofday.c    |  4 --
>>  sysdeps/unix/sysv/linux/x86/time.c            |  8 ++--
>>  10 files changed, 58 insertions(+), 98 deletions(-)
>>
> 
> The change looks OK with the above nits.
> 
> Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
> 

      reply	other threads:[~2020-01-02 12:55 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-17 21:47 [PATCH v2 01/16] linux: Fix vDSO macros build with time64 interfaces Adhemerval Zanella
2019-12-17 21:47 ` [PATCH v2 02/16] x86: Make x32 use x86 time implementation Adhemerval Zanella
2020-01-02 12:07   ` Siddhesh Poyarekar
2019-12-17 21:47 ` [PATCH 03/16] Remove vDSO support from make-syscall.sh Adhemerval Zanella
2020-01-02 12:07   ` Siddhesh Poyarekar
2019-12-17 21:47 ` [PATCH 04/16] linux: Update x86 vDSO symbols Adhemerval Zanella
2020-01-02 12:07   ` Siddhesh Poyarekar
2019-12-17 21:47 ` [PATCH 05/16] linux: Update mips " Adhemerval Zanella
2020-01-02 12:08   ` Siddhesh Poyarekar
2019-12-17 21:47 ` [PATCH 06/16] linux: Consolidate Linux gettimeofday Adhemerval Zanella
2019-12-18  8:46   ` Andreas Schwab
2019-12-18 14:50     ` Adhemerval Zanella
2020-01-02 12:07   ` Siddhesh Poyarekar
2019-12-17 21:47 ` [PATCH 07/16] linux: Consolidate time implementation Adhemerval Zanella
2020-01-02 12:51   ` Siddhesh Poyarekar
2019-12-17 21:47 ` [PATCH v3 08/16] elf: Enable relro for static build Adhemerval Zanella
2020-01-02 12:07   ` Siddhesh Poyarekar
2019-12-17 21:47 ` [PATCH v3 09/16] elf: Move vDSO setup to rtld (BZ#24967) Adhemerval Zanella
2020-01-02 12:55   ` Siddhesh Poyarekar
2020-01-02 13:00     ` Adhemerval Zanella
2020-01-07 16:13       ` [PATCH v3 09/16] elf: Move vDSO setup to rtld (BZ#24967) - regression found Lukasz Majewski
2020-01-07 19:40         ` Adhemerval Zanella
2019-12-17 21:47 ` [PATCH v2 10/16] linux: Add support for clock_gettime64 vDSO Adhemerval Zanella
2020-01-02 13:03   ` Siddhesh Poyarekar
2019-12-17 21:47 ` [PATCH 11/16] linux: Optimize fallback 32-bit clock_gettime Adhemerval Zanella
2019-12-18  8:53   ` Andreas Schwab
2019-12-18 14:58     ` Adhemerval Zanella
2020-01-02 13:07   ` Siddhesh Poyarekar
2019-12-17 21:47 ` [PATCH 12/16] linux: Enable vDSO clock_gettime64 for i386 Adhemerval Zanella
2020-01-02 13:08   ` Siddhesh Poyarekar
2020-01-02 13:08   ` Siddhesh Poyarekar
2019-12-17 21:47 ` [PATCH 13/16] linux: Enable vDSO clock_gettime64 for arm Adhemerval Zanella
2020-01-02 13:08   ` Siddhesh Poyarekar
2019-12-17 21:47 ` [PATCH 14/16] linux: Enable vDSO clock_gettime64 for mips Adhemerval Zanella
2019-12-18 15:33   ` Florian Weimer
2020-01-02 13:13   ` Siddhesh Poyarekar
2020-01-02 13:50     ` Adhemerval Zanella
2020-01-02 14:09       ` Siddhesh Poyarekar
2019-12-17 21:47 ` [PATCH v2 15/16] linux: Add support for clock_getres64 vDSO Adhemerval Zanella
2020-01-02 13:15   ` Siddhesh Poyarekar
2019-12-17 21:47 ` [PATCH 16/16] linux: Optimize fallback 32-bit clock_getres Adhemerval Zanella
2019-12-18  8:56   ` Andreas Schwab
2019-12-18 14:58     ` Adhemerval Zanella
2019-12-18 15:02     ` Adhemerval Zanella
2020-01-02 13:16   ` Siddhesh Poyarekar
2020-01-02 12:07 ` [PATCH v2 01/16] linux: Fix vDSO macros build with time64 interfaces Siddhesh Poyarekar
2020-01-02 12:55   ` Adhemerval Zanella [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/libc/involved.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=45845fa8-9f7f-ef9c-eeeb-79a1bcb3d484@linaro.org \
    --to=adhemerval.zanella@linaro.org \
    --cc=libc-alpha@sourceware.org \
    --cc=siddhesh@gotplt.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).