Re: git: 6677621bad00 - main - cdefs.h: Fallback to printf0 for __printf0like

From: Warner Losh <imp_at_bsdimp.com>
Date: Fri, 19 Jul 2024 21:20:00 UTC
On Wed, Jul 10, 2024 at 12:19 PM John Baldwin <jhb@freebsd.org> wrote:

> On 7/6/24 17:56, John Baldwin wrote:
> > On 7/6/24 15:44, Warner Losh wrote:
> >> The branch main has been updated by imp:
> >>
> >> URL:
> https://cgit.FreeBSD.org/src/commit/?id=6677621bad00191dfec1b0a20ae1618b92745d9b
> >>
> >> commit 6677621bad00191dfec1b0a20ae1618b92745d9b
> >> Author:     Warner Losh <imp@FreeBSD.org>
> >> AuthorDate: 2024-07-06 19:42:37 +0000
> >> Commit:     Warner Losh <imp@FreeBSD.org>
> >> CommitDate: 2024-07-06 19:45:03 +0000
> >>
> >>       cdefs.h: Fallback to printf0 for __printf0like
> >>
> >>       For some reason, my tests were fine with this like it was, but CI
> for
> >>       gcc12 and gcc13 is complaining. Revert to the old form until that
> can be
> >>       worked out why the mismatch.
> >>
> >>       Fixes: 0b82dac337e7
> >>       Sponsored by:           Netflix
> >> ---
> >>    sys/sys/cdefs.h | 7 +++++--
> >>    1 file changed, 5 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/sys/sys/cdefs.h b/sys/sys/cdefs.h
> >> index 6b861b1903f6..a56839d57c7a 100644
> >> --- a/sys/sys/cdefs.h
> >> +++ b/sys/sys/cdefs.h
> >> @@ -356,9 +356,12 @@
> >>     * Clang has always had printf and printf0 as aliases. gcc 11.0 now
> follows
> >>     * clang. So now this is an alias for __printflike, or nothing. In
> the future
> >>     * _Nullable or _Nonnull will replace this.
> >> + * XXX Except that doesn't work, so for now revert to printf0 for
> clang and
> >> + * the FreeBSD gcc until I can work this out.
> >>     */
> >> -#if defined(__clang__) || __GNUC_PREREQ__(11, 0)
> >> -#define     __printf0like(fmtarg, firstvararg) __printflike(fmtarg,
> firstvararg)
> >> +#if defined(__clang__) || (defined(__GNUC__) && defined
> (__FreeBSD_cc_version))
> >> +#define     __printf0like(fmtarg, firstvararg) \
> >> +        __attribute__((__format__ (__printf0__, fmtarg, firstvararg)))
> >>    #else
> >>    #define   __printf0like(fmtarg, firstvararg)
> >>    #endif
> >
> > It's because my patch for devel/freebsd-gcc{12,13} is kind of wrong.  I
> had a mismerge
> > when updating the printf0 patch from gcc9 to gcc12 that ended up
> re-adding the
> > warn on NULL.  I need to update the ports to remove that part of the
> patch.  I will
> > probably leave printf0 working for now in the ports just as an alias for
> regular
> > printf to give us some transition time.
>
> FYI, I have merged this fix to the ports, but not sure how we want to
> manage doing
> the patch to cdefs.h.  I kind of think we should apply the change to
> cdefs.h in
> main in another week or so.  I'm less certain of what to do for stable
> branches.
>

I hadn't planned on merging this to stable branches. Is that your concern?
Or something else?
For building on the stable branch, we should be fine since we support a
wider range of
compilers anyway with the older cdefs.h file, and the new file will work
with all supported
stable branch compilers (though maybe not some of the gcc ones, I've not
tested
that at all).

Also it's been just over a week, can I recommit this, or is more time
needed?

Warner