Message ID | 20210819145853.63520-1-shorne@gmail.com |
---|---|
State | New |
Headers | show |
Series | time: Fix compile error in itimer test affecting hurd | expand |
On Thu, Aug 19, 2021 at 11:58:53PM +0900, Stafford Horne wrote: > The recent change to use __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 to avoid > doing 64-bit checks on some platforms broke the test for hurd where > __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 is not defined. With error: > > tst-itimer.c: In function 'do_test': > tst-itimer.c:103:11: error: '__KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64' undeclared (first use in this function) > 103 | if (__KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64) > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > tst-itimer.c:103:11: note: each undeclared identifier is reported only once for each function it appears in > > Define a new macro that works for both hurd and linux to detect when > setitimer and getitimer support 64-bit time_t. > > Fixes commit 6e8a0aac2f ("time: Fix overflow itimer tests on 32-bit > systems"). > > Cc: Adhemerval Zanella <adhemerval.zanella@linaro.org> > Cc: Joseph Myers <joseph@codesourcery.com> > --- > Hi Joseph, > > I know you mentioned defining a new macro, I was not sure if you meant in the > test or globally. I opted to add this to the test as I don't see a good reason > to add the macro to hurd which is only needed for this test. > > I build tested this on i686-gnu and ran my tests on or1k and it does work. > > -Stafford > > time/tst-itimer.c | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/time/tst-itimer.c b/time/tst-itimer.c > index bd7d7afe83..af97ef6acf 100644 > --- a/time/tst-itimer.c > +++ b/time/tst-itimer.c > @@ -25,6 +25,12 @@ > #include <unistd.h> > #include <time.h> > > +#ifdef __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 > +# define ITIMER_SUPPORTS_TIMESPEC64 __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 > +#else > +# define ITIMER_SUPPORTS_TIMESPEC64 (sizeof (__time_t) == 8) > +#endif > + As suggested by Adhemerval I will create a v2 of this patch moving the gist of this into support/xtime.h. -Stafford
diff --git a/time/tst-itimer.c b/time/tst-itimer.c index bd7d7afe83..af97ef6acf 100644 --- a/time/tst-itimer.c +++ b/time/tst-itimer.c @@ -25,6 +25,12 @@ #include <unistd.h> #include <time.h> +#ifdef __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 +# define ITIMER_SUPPORTS_TIMESPEC64 __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 +#else +# define ITIMER_SUPPORTS_TIMESPEC64 (sizeof (__time_t) == 8) +#endif + static sig_atomic_t cnt; static void @@ -100,7 +106,7 @@ do_test (void) /* Linux does not provide 64 bit time_t support for getitimer and setitimer on architectures with 32 bit time_t support. */ - if (__KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64) + if (ITIMER_SUPPORTS_TIMESPEC64) { TEST_COMPARE (setitimer (timers[i], &it, NULL), 0); TEST_COMPARE (setitimer (timers[i], &(struct itimerval) { 0 }, @@ -131,7 +137,7 @@ do_test (void) it.it_interval.tv_usec = 20; it.it_value.tv_sec = 30; it.it_value.tv_usec = 40; - if (__KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64) + if (ITIMER_SUPPORTS_TIMESPEC64) { TEST_COMPARE (setitimer (timers[i], &it, NULL), 0);