Message ID | 20170903155209.3911-1-samuel.thibault@ens-lyon.org |
---|---|
State | New |
Headers | show |
Series | [hurd,commited] hurd: Fix build ot misc/tst-preadvwritev2-common.c | expand |
On 09/03/2017 05:52 PM, Samuel Thibault wrote: > + * misc/tst-preadvwritev2-common.c (RWF_HIPRI, RWF_DSYNC, RWF_SYNC, > + RWF_NOWAIT): Define to 0 if undefined already. > + (do_test_with_invalid_flags): Set invalid_flag to 2 if RWF_SUPPORTED > + boils down to 0. I don't think this is correct. preadv2 etc. are supposed to be part of the GNU API, so if Hurd doesn't have definitions of the WRF_* constants, that's a real bug. Thanks, Florian
On 04/09/2017 05:11, Florian Weimer wrote: > On 09/03/2017 05:52 PM, Samuel Thibault wrote: >> + * misc/tst-preadvwritev2-common.c (RWF_HIPRI, RWF_DSYNC, RWF_SYNC, >> + RWF_NOWAIT): Define to 0 if undefined already. >> + (do_test_with_invalid_flags): Set invalid_flag to 2 if RWF_SUPPORTED >> + boils down to 0. > > I don't think this is correct. preadv2 etc. are supposed to be part of > the GNU API, so if Hurd doesn't have definitions of the WRF_* constants, > that's a real bug. I agree and the default implementation on sysdeps/posix/preadv2.c (which I think it is also the default of hurd) will fail for any flag different than 0. Should we add a note on manual the current flags are Linux only?
On 09/04/2017 02:36 PM, Adhemerval Zanella wrote: > > > On 04/09/2017 05:11, Florian Weimer wrote: >> On 09/03/2017 05:52 PM, Samuel Thibault wrote: >>> + * misc/tst-preadvwritev2-common.c (RWF_HIPRI, RWF_DSYNC, RWF_SYNC, >>> + RWF_NOWAIT): Define to 0 if undefined already. >>> + (do_test_with_invalid_flags): Set invalid_flag to 2 if RWF_SUPPORTED >>> + boils down to 0. >> >> I don't think this is correct. preadv2 etc. are supposed to be part of >> the GNU API, so if Hurd doesn't have definitions of the WRF_* constants, >> that's a real bug. > > I agree and the default implementation on sysdeps/posix/preadv2.c (which > I think it is also the default of hurd) will fail for any flag different > than 0. Should we add a note on manual the current flags are Linux only? I would have expected that we'd add the flags to the generic API. Florian
On 04/09/2017 10:40, Florian Weimer wrote: > On 09/04/2017 02:36 PM, Adhemerval Zanella wrote: >> >> >> On 04/09/2017 05:11, Florian Weimer wrote: >>> On 09/03/2017 05:52 PM, Samuel Thibault wrote: >>>> + * misc/tst-preadvwritev2-common.c (RWF_HIPRI, RWF_DSYNC, RWF_SYNC, >>>> + RWF_NOWAIT): Define to 0 if undefined already. >>>> + (do_test_with_invalid_flags): Set invalid_flag to 2 if RWF_SUPPORTED >>>> + boils down to 0. >>> >>> I don't think this is correct. preadv2 etc. are supposed to be part of >>> the GNU API, so if Hurd doesn't have definitions of the WRF_* constants, >>> that's a real bug. >> >> I agree and the default implementation on sysdeps/posix/preadv2.c (which >> I think it is also the default of hurd) will fail for any flag different >> than 0. Should we add a note on manual the current flags are Linux only? > > I would have expected that we'd add the flags to the generic API. I meant that the flags only really *work* on Linux.
On 09/04/2017 04:04 PM, Adhemerval Zanella wrote: > > > On 04/09/2017 10:40, Florian Weimer wrote: >> On 09/04/2017 02:36 PM, Adhemerval Zanella wrote: >>> >>> >>> On 04/09/2017 05:11, Florian Weimer wrote: >>>> On 09/03/2017 05:52 PM, Samuel Thibault wrote: >>>>> + * misc/tst-preadvwritev2-common.c (RWF_HIPRI, RWF_DSYNC, RWF_SYNC, >>>>> + RWF_NOWAIT): Define to 0 if undefined already. >>>>> + (do_test_with_invalid_flags): Set invalid_flag to 2 if RWF_SUPPORTED >>>>> + boils down to 0. >>>> >>>> I don't think this is correct. preadv2 etc. are supposed to be part of >>>> the GNU API, so if Hurd doesn't have definitions of the WRF_* constants, >>>> that's a real bug. >>> >>> I agree and the default implementation on sysdeps/posix/preadv2.c (which >>> I think it is also the default of hurd) will fail for any flag different >>> than 0. Should we add a note on manual the current flags are Linux only? >> >> I would have expected that we'd add the flags to the generic API. > > I meant that the flags only really *work* on Linux. Yes, I think that would be fine. Florian
On 04/09/2017 11:06, Florian Weimer wrote: > On 09/04/2017 04:04 PM, Adhemerval Zanella wrote: >> >> >> On 04/09/2017 10:40, Florian Weimer wrote: >>> On 09/04/2017 02:36 PM, Adhemerval Zanella wrote: >>>> >>>> >>>> On 04/09/2017 05:11, Florian Weimer wrote: >>>>> On 09/03/2017 05:52 PM, Samuel Thibault wrote: >>>>>> + * misc/tst-preadvwritev2-common.c (RWF_HIPRI, RWF_DSYNC, RWF_SYNC, >>>>>> + RWF_NOWAIT): Define to 0 if undefined already. >>>>>> + (do_test_with_invalid_flags): Set invalid_flag to 2 if RWF_SUPPORTED >>>>>> + boils down to 0. >>>>> >>>>> I don't think this is correct. preadv2 etc. are supposed to be part of >>>>> the GNU API, so if Hurd doesn't have definitions of the WRF_* constants, >>>>> that's a real bug. >>>> >>>> I agree and the default implementation on sysdeps/posix/preadv2.c (which >>>> I think it is also the default of hurd) will fail for any flag different >>>> than 0. Should we add a note on manual the current flags are Linux only? >>> >>> I would have expected that we'd add the flags to the generic API. >> >> I meant that the flags only really *work* on Linux. > > Yes, I think that would be fine. Ok, I will work on that patch.
diff --git a/ChangeLog b/ChangeLog index 4802f7c428..824f19a272 100644 --- a/ChangeLog +++ b/ChangeLog @@ -31,6 +31,10 @@ __GI_feraiseexcept. * sysdeps/mach/hurd/i386/Implies: Add mach/hurd/x86. * sysdeps/mach/hurd/x86/dl-sysdep.c: New file. + * misc/tst-preadvwritev2-common.c (RWF_HIPRI, RWF_DSYNC, RWF_SYNC, + RWF_NOWAIT): Define to 0 if undefined already. + (do_test_with_invalid_flags): Set invalid_flag to 2 if RWF_SUPPORTED + boils down to 0. 2017-09-01 Joseph Myers <joseph@codesourcery.com> diff --git a/misc/tst-preadvwritev2-common.c b/misc/tst-preadvwritev2-common.c index 8abedc14d0..9d4909bdb7 100644 --- a/misc/tst-preadvwritev2-common.c +++ b/misc/tst-preadvwritev2-common.c @@ -22,9 +22,21 @@ static void do_test_with_invalid_flags (void) { +#ifndef RWF_HIPRI +# define RWF_HIPRI 0 +#endif +#ifndef RWF_DSYNC +# define RWF_DSYNC 0 +#endif +#ifndef RWF_SYNC +# define RWF_SYNC 0 +#endif +#ifndef RWF_NOWAIT +# define RWF_NOWAIT 0 +#endif #define RWF_SUPPORTED (RWF_HIPRI | RWF_DSYNC | RWF_SYNC | RWF_NOWAIT) /* Set the next bit from the mask of all supported flags. */ - int invalid_flag = __builtin_clz (RWF_SUPPORTED); + int invalid_flag = RWF_SUPPORTED != 0 ? __builtin_clz (RWF_SUPPORTED) : 2; invalid_flag = 0x1 << ((sizeof (int) * CHAR_BIT) - invalid_flag); char buf[32];