strange printf(9) format specifier ("Z") in dev/drm code
Alexander Best
arundel at freebsd.org
Mon Dec 5 14:38:15 UTC 2011
On Mon Dec 5 11, Sergey Kandaurov wrote:
> On 5 December 2011 02:22, Alexander Best <arundel at freebsd.org> wrote:
> > hi there,
> >
> > i was going through the clang warnings from a GENERIC buildkernel and noticed
> > the following:
> >
> > ===> drm/mga (all)
> > /usr/subversion-src/sys/modules/drm/mga/../../../dev/drm/mga_state.c:56:2: error: invalid conversion specifier 'Z' [-Werror,-Wformat-invalid-specifier]
> > BEGIN_DMA(2);
> > ^~~~~~~~~~~
> > @/dev/drm/mga_drv.h:291:35: note: expanded from:
> > DRM_INFO( " space=0x%x req=0x%Zx\n", \
> > ^
> > @/dev/drm/drmP.h:317:60: note: expanded from:
> > #define DRM_INFO(fmt, ...) printf("info: [" DRM_NAME "] " fmt , ##__VA_ARGS__)
> > ^
> > these lines should cover all warnings:
> >
> > otaku% egrep -r "%[0-9]*Zx" /usr/src/sys/dev/drm
> > dev/drm/mga_drv.h: DRM_INFO( " space=0x%x req=0x%Zx\n", \
> > dev/drm/mga_drv.h: DRM_INFO( " DMA_WRITE( 0x%08x ) at 0x%04Zx\n", \
> >
> > ... i couldn't find a reference to an upercase "Z" in the printf(9) man page.
> > i talked to dinoex on #freebsd-clang (EFNet) and he said that the "Z" might
> > come from linux'es libc5 and is the equaivalent to glibc's "z".
> >
> > can we adjust those lines, so the clang warnings disappear?
>
> Hi, Alexander.
>
> Can you build-test with this change?
> Thanks in advance.
no that didn't work, but the following patch fixed it for me.
cheers.
alex
>
> Index: sys/dev/drm/mga_drv.h
> ===================================================================
> --- sys/dev/drm/mga_drv.h (revision 228276)
> +++ sys/dev/drm/mga_drv.h (working copy)
> @@ -288,7 +288,7 @@
> do { \
> if ( MGA_VERBOSE ) { \
> DRM_INFO( "BEGIN_DMA( %d )\n", (n) ); \
> - DRM_INFO( " space=0x%x req=0x%Zx\n", \
> + DRM_INFO( " space=0x%x req=0x%x\n", \
> dev_priv->prim.space, (n) * DMA_BLOCK_SIZE ); \
> } \
> prim = dev_priv->prim.start; \
> @@ -338,7 +338,7 @@
> #define DMA_WRITE( offset, val ) \
> do { \
> if ( MGA_VERBOSE ) { \
> - DRM_INFO( " DMA_WRITE( 0x%08x ) at 0x%04Zx\n", \
> + DRM_INFO( " DMA_WRITE( 0x%08x ) at 0x%04x\n", \
> (u32)(val), write + (offset) * sizeof(u32) ); \
> } \
> *(volatile u32 *)(prim + write + (offset) * sizeof(u32)) = val; \
>
> --
> wbr,
> pluknet
-------------- next part --------------
Index: sys/dev/drm/mga_drv.h
===================================================================
--- sys/dev/drm/mga_drv.h (revision 228276)
+++ sys/dev/drm/mga_drv.h (working copy)
@@ -288,7 +288,7 @@
do { \
if ( MGA_VERBOSE ) { \
DRM_INFO( "BEGIN_DMA( %d )\n", (n) ); \
- DRM_INFO( " space=0x%x req=0x%Zx\n", \
+ DRM_INFO( " space=0x%x req=0x%lx\n", \
dev_priv->prim.space, (n) * DMA_BLOCK_SIZE ); \
} \
prim = dev_priv->prim.start; \
@@ -338,7 +338,7 @@
#define DMA_WRITE( offset, val ) \
do { \
if ( MGA_VERBOSE ) { \
- DRM_INFO( " DMA_WRITE( 0x%08x ) at 0x%04Zx\n", \
+ DRM_INFO( " DMA_WRITE( 0x%08x ) at 0x%04lx\n", \
(u32)(val), write + (offset) * sizeof(u32) ); \
} \
*(volatile u32 *)(prim + write + (offset) * sizeof(u32)) = val; \
More information about the freebsd-hackers
mailing list