This is the mail archive of the
insight@sourceware.org
mailing list for the Insight project.
RE: [PATCH] print format does not match argument type
- From: "Patrick Monnerat" <Patrick dot Monnerat at datasphere dot ch>
- To: <insight at sourceware dot org>
- Date: Tue, 10 Apr 2012 17:10:13 +0200
- Subject: RE: [PATCH] print format does not match argument type
- References: <4F8443D1.9080105@onevision.com>
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