Index | Thread | Search

From:
Alexander Bluhm <bluhm@openbsd.org>
Subject:
Re: ddb mbuf chains
To:
Vitaliy Makkoveev <mvs@openbsd.org>, tech@openbsd.org
Date:
Tue, 10 Sep 2024 16:56:42 +0200

Download raw body.

Thread
On Tue, Sep 10, 2024 at 03:34:13PM +0200, Claudio Jeker wrote:
> > +		else
> > +			(*pr)(", size %u",
> > +			    m->m_flags & M_PKTHDR ? MHLEN : MLEN);
> >  		(*pr)("\n");
> >  		indent = deep ? "|+-" : " +-";
> >  	}
> 
> This fails on sparc64:
> /sys/kern/uipc_mbuf.c: In function 'm_print_chain':
> /sys/kern/uipc_mbuf.c:1573: warning: format '%u' expects type 'unsigned
> int', but argument 2 has type 'long unsigned int'

Thanks, fixed.

> Both MHLEN and MLEN use sizeof in their definition and require therefor a
> %zu fromat string. Surprised this didn't trigger on amd64.

I have the suspicion that prototype parameter
int (*pr)(const char *, ...) __attribute__((__format__(__kprintf__,1,2)))
does not work correctly on clang.

During developement I once replaced (*pr) with printf to find bugs
on amd64.  But of course I introduced the %u after the temporary
test.

bluhm