This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[patch] [mingw] Fix "%lld" compilation error
- From: Jan Kratochvil <jan dot kratochvil at redhat dot com>
- To: gdb-patches at sourceware dot org
- Date: Fri, 15 Jun 2012 17:44:07 +0200
- Subject: [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;