Hi Martin, Martin Sebor <mse...@gmail.com> wrote:
> On 10/20/2019 07:27 AM, Iain Sandoe wrote: >> Martin Sebor <mse...@gmail.com> wrote: >>> On 10/19/19 2:56 AM, Iain Sandoe wrote: >>>> Andreas Schwab <sch...@linux-m68k.org> wrote: >>>>> On Okt 19 2019, Iain Sandoe <i...@sandoe.co.uk> wrote: >>>>> >>>>>> This test has failed always on Darwin, because Darwin does not mark >>>>>> entries in string.h with nonnull attributes. Since the purpose of the >>>>>> test >>>>>> is to check that the warnings are issued for an inlined function, not >>>>>> that >>>>>> the target headers are marked up, we can provide locally marked up >>>>>> function declarations for Darwin. >>>>> >>>>> If the test depends on the non-std declarations, then it should use them >>>>> everywhere. >>>> from my perspective, agreed, Martin? >>> >>> I don't see a problem with it. I prefer tests that don't depend >>> on system headers to avoid these kinds of issues >> We can do that anyway then, - I can just adjust the current code tor remove >> the >> special-casing, and to use __SIZE_TYPE__ instead of size_t everywhere, OK? > > Sure. Will try to get to it later today. (also to backport to 9 and 8 if that’s OK, IIRC the test was introduced in 8.x - slowly catching up on long-standing Darwin test fails). >>> That said, it shouldn't matter if the declaration of a built-in >>> function has the nonnull attribute. As long as the built-in has >>> one and isn't disabled GCC should use it. I'd be curious to know >>> what is actually preventing the warning from triggering there. >> This is secondary problem, the Darwin header implementation expands th >> memcpy to: >> __builtin___memcpy_chk (dst, src, __builtin_object_size (dst), len); >> Which, obviously, isn’t doing what you expect. > > That suggests -Wno-system-headers might be getting in the way of > the warning. I thought most middel-end warnings coped with it > but maybe not this one. But getting rid of the include does > sound like the right way to deal with the test failing. In this case it seems like the Darwin headers are applying _FORTIFY_SOURCE (at least to the strings.h) automatically when the compiler is __GNUC__. It might be yet more fallout from the various __has_xxx that we don’t yet support. In any case, a separate issue I think. thanks Iain > > Thanks > Martin > >> So, this does suggest that >> a) for the test to be well-controlled, we need to avoid system headers >> b) there might be some other builtins to check. >> (but if we restrict the discussion to my understood purpose of the Wnonnull >> test, only (a) matters and that’s what’s proposed above). >> thanks. >> Iain