From: H.J. Lu Date: Fri, 5 Jun 2020 16:43:13 +0000 (-0700) Subject: Update HP_TIMING_NOW for _ISOMAC in sysdeps/generic/hp-timing.h X-Git-Tag: upstream/2.34~1854 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f6070476687af9ca1b5837f8a45047acdd419b08;p=platform%2Fupstream%2Fglibc.git Update HP_TIMING_NOW for _ISOMAC in sysdeps/generic/hp-timing.h commit e9698175b0b60407db1e89bcf29437ab224bca0b Author: Lukasz Majewski Date: Mon Mar 16 08:31:41 2020 +0100 y2038: Replace __clock_gettime with __clock_gettime64 breaks benchtests with sysdeps/generic/hp-timing.h: In file included from ./bench-timing.h:23, from ./bench-skeleton.c:25, from /export/build/gnu/tools-build/glibc-gitlab/build-x86_64-linux/benchtests/bench-rint.c:45: ./bench-skeleton.c: In function ‘main’: ../sysdeps/generic/hp-timing.h:37:23: error: storage size of ‘tv’ isn’t known 37 | struct __timespec64 tv; \ | ^~ Define HP_TIMING_NOW with clock_gettime in sysdeps/generic/hp-timing.h if _ISOMAC is defined. Don't define __clock_gettime in bench-timing.h since it is no longer needed. Reviewed-by: Carlos O'Donell --- diff --git a/benchtests/bench-timing.h b/benchtests/bench-timing.h index a0d6f82..d0176fb 100644 --- a/benchtests/bench-timing.h +++ b/benchtests/bench-timing.h @@ -18,7 +18,6 @@ #undef attribute_hidden #define attribute_hidden -#define __clock_gettime __clock_gettime64 #include #include diff --git a/sysdeps/generic/hp-timing.h b/sysdeps/generic/hp-timing.h index af9d92f..1960a71 100644 --- a/sysdeps/generic/hp-timing.h +++ b/sysdeps/generic/hp-timing.h @@ -32,11 +32,20 @@ typedef uint64_t hp_timing_t; /* The clock_gettime (CLOCK_MONOTONIC) has unspecified starting time, nano-second accuracy, and for some architectues is implemented as vDSO symbol. */ -#define HP_TIMING_NOW(var) \ +#ifdef _ISOMAC +# define HP_TIMING_NOW(var) \ +({ \ + struct timespec tv; \ + clock_gettime (CLOCK_MONOTONIC, &tv); \ + (var) = (tv.tv_nsec + UINT64_C(1000000000) * tv.tv_sec); \ +}) +#else +# define HP_TIMING_NOW(var) \ ({ \ struct __timespec64 tv; \ __clock_gettime64 (CLOCK_MONOTONIC, &tv); \ (var) = (tv.tv_nsec + UINT64_C(1000000000) * tv.tv_sec); \ }) +#endif #endif /* hp-timing.h */