RE: [PATCH] print format does not match argument type
"Patrick Monnerat" <[email protected]> Tue, 10 Apr 2012 17:10:13 +0200
| Newsgroups | gmane.comp.debugging.insight |
|---|---|
| Message-ID | <AB5E58B87EB73C46A38073D8F459F113D9F885@dataspheresrv01> |
Roland Schwingel wrote: Hi Roland, Thanks for having paid attention to my report. > Which warnings do you get on which platform? Running on a Fedora Linux 64bit, but building for a 32bit (using mock). Thus this is a 32bit build on a (emulated) 32bit machine. When compiling with the default fedora rpm build flags, the following occurs: gcc -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -I. -I. -I./common -I./config -DLOCALEDIR="\"/usr/share/locale\"" -DHAVE_CONFIG_H -I./../include/opcode -I./../opcodes/.. -I../bfd -I./../bfd -I./../include -I../libdecnumber -I./../libdecnumber -I./gnulib -Ignulib -DTUI=1 -DGDBTK -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -Wmissing-prototypes -Werror -c -o gdbtk-register.o -MT gdbtk-register.o -MMD -MP -MF .deps/gdbtk-register.Tpo -I./../libgui/src -I/usr/include -I/usr/include/tcl-private/generic -I/usr/include -I/usr/include/tk-private/generic -DGDBTK_LIBRARY=\"/usr/share/insight\" -DSRC_DIR=\"/builddir/build/BUILD/insight-7.4.50/gdb\" ./gdbtk/generic/gdbtk-register.c cc1: warnings being treated as errors ./gdbtk/generic/gdbtk-register.c: In function 'get_register_types': ./gdbtk/generic/gdbtk-register.c:242:4: error: format '%lx' expects type 'long unsigned int', but argument 2 has type 'unsigned int' ./gdbtk/generic/gdbtk-register.c:258:7: error: format '%lx' expects type 'long unsigned int', but argument 2 has type 'unsigned int' I don't know how W$ works, but in any case, "%lx" targets an unsigned long, whatever its real size is. The patch I've provided retains the conversion to size_t (for eventual truncation reasons), but finally converts the value to the type expected by the format. If the solution I provide is not OK on some platform, then a conditionally defined print format should be used, IMHO... Cheers, Patrick