From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS31976 209.132.180.0/23 X-Spam-Status: No, score=-4.1 required=3.0 tests=AWL,BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id 2C0C61F463 for ; Thu, 2 Jan 2020 13:03:36 +0000 (UTC) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:subject:to:references:from:message-id:date :mime-version:in-reply-to:content-type :content-transfer-encoding; q=dns; s=default; b=nge2aMzrmr8sJjOd 5mtRWha2gVGbkaKU+3BePdEFOF9bzunTBS3RLFOTbh4yCBAxh6thsQoaLYSopxSC Evw1Z+5eP7iR52scC1KKrwNKVC7GTErAjNMCRxBbG53T7VLKFbfC2LU+q/Vb1/CZ MbRryqm6DetePmOMU/qQaP/Bu0A= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:subject:to:references:from:message-id:date :mime-version:in-reply-to:content-type :content-transfer-encoding; s=default; bh=9Dm8CRt8itBXt8mkbYjNYW 8DiIo=; b=sQl46B0uRXdNdo8rkOKryWMDBF9WuUOub8D1UJ8MtnZTs4LDmcvaKc 9n3PnVVSs2m2IGvCVHGQQeHBe1qJM4CVE30VW9M892OUSvFm9ZUoWnSWphJlLu+9 P0gcKIqy61qRE7WHiVL/u8Z/qTx0BBfnrG3Hq2SKqvtxrWKNXjZz8= Received: (qmail 28847 invoked by alias); 2 Jan 2020 13:03:33 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Received: (qmail 28825 invoked by uid 89); 2 Jan 2020 13:03:32 -0000 Authentication-Results: sourceware.org; auth=none X-HELO: egyptian.birch.relay.mailchannels.net X-Sender-Id: dreamhost|x-authsender|siddhesh@gotplt.org X-Sender-Id: dreamhost|x-authsender|siddhesh@gotplt.org X-MC-Relay: Neutral X-MailChannels-SenderId: dreamhost|x-authsender|siddhesh@gotplt.org X-MailChannels-Auth-Id: dreamhost X-Juvenile-Reaction: 148f5f2e729c1884_1577970208574_1560147899 X-MC-Loop-Signature: 1577970208573:2632379965 X-MC-Ingress-Time: 1577970208573 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gotplt.org; h=subject:to :references:from:message-id:date:mime-version:in-reply-to :content-type:content-transfer-encoding; s=gotplt.org; bh=9Dm8CR t8itBXt8mkbYjNYW8DiIo=; b=VjQ5DYTlePEJ5EIFwfny9/BRhWsX/rt2ymUamR dPJG/eUzFry12giQI32Ow6PGITPUc+SJ1GXHLAWg+8LzGqMwUhAsr1fEtkItOkTr ig9CTmNEc5MSQLjtU1wy+GypS3l/vS2gN5RqX+COhZJ7ZRaXnPTM11MOLEx6lL8z 3Og0I= Subject: Re: [PATCH v2 10/16] linux: Add support for clock_gettime64 vDSO To: Adhemerval Zanella , libc-alpha@sourceware.org References: <20191217214728.2886-1-adhemerval.zanella@linaro.org> <20191217214728.2886-10-adhemerval.zanella@linaro.org> X-DH-BACKEND: pdx1-sub0-mail-a59 From: Siddhesh Poyarekar Message-ID: <7eacb7d2-dc71-28d9-b8b1-306acb8ff532@gotplt.org> Date: Thu, 2 Jan 2020 18:33:01 +0530 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.3.1 MIME-Version: 1.0 In-Reply-To: <20191217214728.2886-10-adhemerval.zanella@linaro.org> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-VR-OUT-STATUS: OK X-VR-OUT-SCORE: -100 X-VR-OUT-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgedufedrvdeguddggeelucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuggftfghnshhusghstghrihgsvgdpffftgfetoffjqffuvfenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurhepuffvfhfhkffffgggjggtgfesthejredttdefjeenucfhrhhomhepufhiugguhhgvshhhucfrohihrghrvghkrghruceoshhiugguhhgvshhhsehgohhtphhlthdrohhrgheqnecukfhppeduvdefrddvhedvrddvtddvrddujedvnecurfgrrhgrmhepmhhouggvpehsmhhtphdphhgvlhhopegludelvddrudeikedruddrleejngdpihhnvghtpeduvdefrddvhedvrddvtddvrddujedvpdhrvghtuhhrnhdqphgrthhhpefuihguughhvghshhcurfhohigrrhgvkhgrrhcuoehsihguughhvghshhesghhothhplhhtrdhorhhgqedpmhgrihhlfhhrohhmpehsihguughhvghshhesghhothhplhhtrdhorhhgpdhnrhgtphhtthhopegrughhvghmvghrvhgrlhdriigrnhgvlhhlrgeslhhinhgrrhhordhorhhgnecuvehluhhsthgvrhfuihiivgeptd On 18/12/19 3:17 am, Adhemerval Zanella wrote: > Changes from previous version: > > - Rename HAVE_CLOCK_GETTIME_VSYSCALL to > HAVE_CLOCK_GETTIME64_VSYSCALL on 64 bit time_t architectures. > > -- > > No architecture currently defines the vDSO symbol. On archictures typo > with 64-bit time_t the HAVE_CLOCK_GETTIME_VSYSCALL is renamed to > HAVE_CLOCK_GETTIME64_VSYSCALL, it simplifies clock_gettime code. > --- > sysdeps/unix/sysv/linux/aarch64/sysdep.h | 2 +- > sysdeps/unix/sysv/linux/clock_gettime.c | 19 +++++++++++-------- > sysdeps/unix/sysv/linux/dl-vdso-setup.c | 4 ++++ > sysdeps/unix/sysv/linux/dl-vdso-setup.h | 3 +++ > sysdeps/unix/sysv/linux/powerpc/sysdep.h | 4 ++++ > sysdeps/unix/sysv/linux/riscv/sysdep.h | 2 +- > sysdeps/unix/sysv/linux/s390/sysdep.h | 4 ++++ > sysdeps/unix/sysv/linux/sparc/sysdep.h | 6 +++++- > sysdeps/unix/sysv/linux/x86_64/sysdep.h | 2 +- > 9 files changed, 34 insertions(+), 12 deletions(-) OK. Reviewed-by: Siddhesh Poyarekar > > diff --git a/sysdeps/unix/sysv/linux/aarch64/sysdep.h b/sysdeps/unix/sysv/linux/aarch64/sysdep.h > index 53b515aab6..26aa2f9779 100644 > --- a/sysdeps/unix/sysv/linux/aarch64/sysdep.h > +++ b/sysdeps/unix/sysv/linux/aarch64/sysdep.h > @@ -161,7 +161,7 @@ > > /* List of system calls which are supported as vsyscalls. */ > # define HAVE_CLOCK_GETRES_VSYSCALL "__kernel_clock_getres" > -# define HAVE_CLOCK_GETTIME_VSYSCALL "__kernel_clock_gettime" > +# define HAVE_CLOCK_GETTIME64_VSYSCALL "__kernel_clock_gettime" > # define HAVE_GETTIMEOFDAY_VSYSCALL "__kernel_gettimeofday" > > /* Previously AArch64 used the generic version without the libc_hidden_def > diff --git a/sysdeps/unix/sysv/linux/clock_gettime.c b/sysdeps/unix/sysv/linux/clock_gettime.c > index e895812704..9be1f779e3 100644 > --- a/sysdeps/unix/sysv/linux/clock_gettime.c > +++ b/sysdeps/unix/sysv/linux/clock_gettime.c > @@ -30,21 +30,24 @@ int > __clock_gettime64 (clockid_t clock_id, struct __timespec64 *tp) > { > #ifdef __ASSUME_TIME64_SYSCALLS > - /* 64 bit ABIs or Newer 32-bit ABIs that only support 64-bit time_t. */ > -# ifdef __NR_clock_gettime64 > - return INLINE_SYSCALL_CALL (clock_gettime64, clock_id, tp); > + /* 64 bit ABIs or newer 32-bit ABIs that only support 64-bit time_t. */ > +# ifndef __NR_clock_gettime64 > +# define __NR_clock_gettime64 __NR_clock_gettime > +# endif > +# ifdef HAVE_CLOCK_GETTIME64_VSYSCALL > + return INLINE_VSYSCALL (clock_gettime64, 2, clock_id, tp); > # else > -# ifdef HAVE_CLOCK_GETTIME_VSYSCALL > - return INLINE_VSYSCALL (clock_gettime, 2, clock_id, tp); > -# else > - return INLINE_SYSCALL_CALL (clock_gettime, clock_id, tp); > -# endif > + return INLINE_SYSCALL_CALL (clock_gettime64, clock_id, tp); > # endif > #else > int r; > /* Old 32-bit ABI with possible 64-bit time_t support. */ > # ifdef __NR_clock_gettime64 > +# ifdef HAVE_CLOCK_GETTIME64_VSYSCALL > + r = INLINE_VSYSCALL (clock_gettime64, 2, clock_id, tp); > +# else > r = INLINE_SYSCALL_CALL (clock_gettime64, clock_id, tp); > +# endif > if (r == 0 || errno != ENOSYS) > return r; > # endif > diff --git a/sysdeps/unix/sysv/linux/dl-vdso-setup.c b/sysdeps/unix/sysv/linux/dl-vdso-setup.c > index 1069879f1a..b0b692f78c 100644 > --- a/sysdeps/unix/sysv/linux/dl-vdso-setup.c > +++ b/sysdeps/unix/sysv/linux/dl-vdso-setup.c > @@ -45,6 +45,10 @@ > PROCINFO_CLASS int (*_dl_vdso_clock_gettime) (clockid_t, > struct timespec *) RELRO; > #endif > +# ifdef HAVE_CLOCK_GETTIME64_VSYSCALL > +PROCINFO_CLASS int (*_dl_vdso_clock_gettime64) (clockid_t, > + struct __timespec64 *) RELRO; > +#endif > # ifdef HAVE_GETTIMEOFDAY_VSYSCALL > PROCINFO_CLASS int (*_dl_vdso_gettimeofday) (struct timeval *, void *) RELRO; > #endif > diff --git a/sysdeps/unix/sysv/linux/dl-vdso-setup.h b/sysdeps/unix/sysv/linux/dl-vdso-setup.h > index f4e76202fc..8a89e100c8 100644 > --- a/sysdeps/unix/sysv/linux/dl-vdso-setup.h > +++ b/sysdeps/unix/sysv/linux/dl-vdso-setup.h > @@ -26,6 +26,9 @@ setup_vdso_pointers (void) > #ifdef HAVE_CLOCK_GETTIME_VSYSCALL > GLRO(dl_vdso_clock_gettime) = dl_vdso_vsym (HAVE_CLOCK_GETTIME_VSYSCALL); > #endif > +#ifdef HAVE_CLOCK_GETTIME64_VSYSCALL > + GLRO(dl_vdso_clock_gettime64) = dl_vdso_vsym (HAVE_CLOCK_GETTIME64_VSYSCALL); > +#endif > #ifdef HAVE_GETTIMEOFDAY_VSYSCALL > GLRO(dl_vdso_gettimeofday) = dl_vdso_vsym (HAVE_GETTIMEOFDAY_VSYSCALL); > #endif > diff --git a/sysdeps/unix/sysv/linux/powerpc/sysdep.h b/sysdeps/unix/sysv/linux/powerpc/sysdep.h > index a29f286ad7..c42659a9c4 100644 > --- a/sysdeps/unix/sysv/linux/powerpc/sysdep.h > +++ b/sysdeps/unix/sysv/linux/powerpc/sysdep.h > @@ -21,7 +21,11 @@ > > /* List of system calls which are supported as vsyscalls. */ > #define HAVE_CLOCK_GETRES_VSYSCALL "__kernel_clock_getres" > +#if defined(__PPC64__) || defined(__powerpc64__) > +#define HAVE_CLOCK_GETTIME64_VSYSCALL "__kernel_clock_gettime" > +#else > #define HAVE_CLOCK_GETTIME_VSYSCALL "__kernel_clock_gettime" > +#endif > #define HAVE_GETCPU_VSYSCALL "__kernel_getcpu" > #define HAVE_TIME_VSYSCALL "__kernel_time" > #define HAVE_GETTIMEOFDAY_VSYSCALL "__kernel_gettimeofday" > diff --git a/sysdeps/unix/sysv/linux/riscv/sysdep.h b/sysdeps/unix/sysv/linux/riscv/sysdep.h > index bfbcf60feb..7f43595cb0 100644 > --- a/sysdeps/unix/sysv/linux/riscv/sysdep.h > +++ b/sysdeps/unix/sysv/linux/riscv/sysdep.h > @@ -126,7 +126,7 @@ > > /* List of system calls which are supported as vsyscalls. */ > # define HAVE_CLOCK_GETRES_VSYSCALL "__vdso_clock_getres" > -# define HAVE_CLOCK_GETTIME_VSYSCALL "__vdso_clock_gettime" > +# define HAVE_CLOCK_GETTIME64_VSYSCALL "__vdso_clock_gettime" > # define HAVE_GETTIMEOFDAY_VSYSCALL "__vdso_gettimeofday" > # define HAVE_GETCPU_VSYSCALL "__vdso_getcpu" > > diff --git a/sysdeps/unix/sysv/linux/s390/sysdep.h b/sysdeps/unix/sysv/linux/s390/sysdep.h > index 97d78e246c..030bd59ad0 100644 > --- a/sysdeps/unix/sysv/linux/s390/sysdep.h > +++ b/sysdeps/unix/sysv/linux/s390/sysdep.h > @@ -21,6 +21,10 @@ > > /* List of system calls which are supported as vsyscalls. */ > #define HAVE_CLOCK_GETRES_VSYSCALL "__kernel_clock_getres" > +#ifdef __s390x__ > +#define HAVE_CLOCK_GETTIME64_VSYSCALL "__kernel_clock_gettime" > +#else > #define HAVE_CLOCK_GETTIME_VSYSCALL "__kernel_clock_gettime" > +#endif > #define HAVE_GETTIMEOFDAY_VSYSCALL "__kernel_gettimeofday" > #define HAVE_GETCPU_VSYSCALL "__kernel_getcpu" > diff --git a/sysdeps/unix/sysv/linux/sparc/sysdep.h b/sysdeps/unix/sysv/linux/sparc/sysdep.h > index f38144c912..739f361384 100644 > --- a/sysdeps/unix/sysv/linux/sparc/sysdep.h > +++ b/sysdeps/unix/sysv/linux/sparc/sysdep.h > @@ -45,7 +45,11 @@ > # define VDSO_HASH 61765110 > > /* List of system calls which are supported as vsyscalls. */ > -# define HAVE_CLOCK_GETTIME_VSYSCALL "__vdso_clock_gettime" > +# ifdef __arch64__ > +# define HAVE_CLOCK_GETTIME64_VSYSCALL "__vdso_clock_gettime" > +# else > +# define HAVE_CLOCK_GETTIME64_VSYSCALL "__vdso_clock_gettime" > +# endif > # define HAVE_GETTIMEOFDAY_VSYSCALL "__vdso_gettimeofday" > > #undef INLINE_SYSCALL > diff --git a/sysdeps/unix/sysv/linux/x86_64/sysdep.h b/sysdeps/unix/sysv/linux/x86_64/sysdep.h > index 965fd4b851..57a64dce31 100644 > --- a/sysdeps/unix/sysv/linux/x86_64/sysdep.h > +++ b/sysdeps/unix/sysv/linux/x86_64/sysdep.h > @@ -374,7 +374,7 @@ > # define VDSO_HASH 61765110 > > /* List of system calls which are supported as vsyscalls. */ > -# define HAVE_CLOCK_GETTIME_VSYSCALL "__vdso_clock_gettime" > +# define HAVE_CLOCK_GETTIME64_VSYSCALL "__vdso_clock_gettime" > # define HAVE_GETTIMEOFDAY_VSYSCALL "__vdso_gettimeofday" > # define HAVE_TIME_VSYSCALL "__vdso_time" > # define HAVE_GETCPU_VSYSCALL "__vdso_getcpu" >