This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[patch] [mingw] Fix "%lld" compilation error


Hi,

gdb-7.4.50.20120615/build_win32/gdb/gdbserver$ i686-w64-mingw32-gcc -c  -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions --param=ssp-buffer-size=4 -D__USE_MINGW_ACCESS    -I. -I../../../gdb/gdbserver -I../../../gdb/gdbserver/../common -I../../../gdb/gdbserver/../regformats -I../../../gdb/gdbserver/../../include -I../../../gdb/gdbserver/../gnulib/import -Ibuild-gnulib-gdbserver/import -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-char-subscripts -Werror ../../../gdb/gdbserver/../common/buffer.c -DGDBSERVER
../../../gdb/gdbserver/../common/buffer.c: In function 'buffer_xml_printf':
../../../gdb/gdbserver/../common/buffer.c:142:9: error: unknown conversion type character 'l' in format [-Werror=format]
../../../gdb/gdbserver/../common/buffer.c:142:9: error: too many arguments for format [-Werror=format-extra-args]
../../../gdb/gdbserver/../common/buffer.c:145:9: error: unknown conversion type character 'l' in format [-Werror=format]
../../../gdb/gdbserver/../common/buffer.c:145:9: error: too many arguments for format [-Werror=format-extra-args]
../../../gdb/gdbserver/../common/buffer.c:148:9: error: unknown conversion type character 'l' in format [-Werror=format]
../../../gdb/gdbserver/../common/buffer.c:148:9: error: too many arguments for format [-Werror=format-extra-args]
../../../gdb/gdbserver/../common/buffer.c:151:9: error: unknown conversion type character 'l' in format [-Werror=format]
../../../gdb/gdbserver/../common/buffer.c:151:9: error: too many arguments for format [-Werror=format-extra-args]
cc1: all warnings being treated as errors

According to:
	http://comments.gmane.org/gmane.comp.gnu.mingw.w64.general/4670
	Kai Tietz:
	the issue is that formatter-width specifier %ll isn't supported for
	all msvcrt-DLL versions
	JonY:
	Use %I64u on Windows, or just use inttypes.h PRIuMAX.

OK to check it in?


Thanks,
Jan


gdb/
2012-06-15  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* common/buffer.c: Include inttypes.h.
	(buffer_xml_printf): Use PRIdMAX, PRIuMAX, PRIxMAX and PRIoMAX.

--- ./gdb/common/buffer.c-orig	2012-05-22 17:55:30.000000000 +0200
+++ ./gdb/common/buffer.c	2012-06-15 17:38:21.255770838 +0200
@@ -25,6 +25,7 @@
 
 #include "xml-utils.h"
 #include "buffer.h"
+#include "inttypes.h"
 
 #include <stdlib.h>
 #include <string.h>
@@ -139,16 +140,16 @@ buffer_xml_printf (struct buffer *buffer
 		  switch (*f)
 		    {
 		    case 'd':
-		      sprintf (str, "%lld", va_arg (ap, long long));
+		      sprintf (str, "%" PRIdMAX, va_arg (ap, long long));
 		      break;
 		    case 'u':
-		      sprintf (str, "%llu", va_arg (ap, unsigned long long));
+		      sprintf (str, "%" PRIuMAX, va_arg (ap, unsigned long long));
 		      break;
 		    case 'x':
-		      sprintf (str, "%llx", va_arg (ap, unsigned long long));
+		      sprintf (str, "%" PRIxMAX, va_arg (ap, unsigned long long));
 		      break;
 		    case 'o':
-		      sprintf (str, "%llo", va_arg (ap, unsigned long long));
+		      sprintf (str, "%" PRIoMAX, va_arg (ap, unsigned long long));
 		      break;
 		    default:
 		      str = 0;


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]