strange printf(9) format specifier ("Z") in dev/drm code
Sergey Kandaurov
pluknet at freebsd.org
Mon Dec 5 13:39:03 UTC 2011
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.
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
More information about the freebsd-hackers
mailing list