strange printf(9) format specifier ("Z") in dev/drm code

Alexander Best arundel at freebsd.org
Sun Dec 4 22:22:03 UTC 2011


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?

cheers.
alex


More information about the freebsd-hackers mailing list