From: Andrew Stubbs Date: Wed, 23 Apr 2008 13:21:54 +0000 (+0000) Subject: 2008-04-23 Andrew Stubbs X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=09d71d234aed77ea5c32dbdaf9409f35e3ba0e22;p=binutils-gdb.git 2008-04-23 Andrew Stubbs * printcmd.c: Define USE_PRINTF_I64 and PRINTF_HAS_LONG_LONG on MinGW. (printf_command): Convert %lld to %I64d when USE_PRINTF_I64 set. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 6f426e07e18..ed16e4729f3 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2008-04-23 Andrew Stubbs + + * printcmd.c: Define USE_PRINTF_I64 and PRINTF_HAS_LONG_LONG on MinGW. + (printf_command): Convert %lld to %I64d when USE_PRINTF_I64 set. + 2008-04-23 Paolo Bonzini * acinclude.m4: Add override.m4. diff --git a/gdb/printcmd.c b/gdb/printcmd.c index e73c511e673..26a54cbb70f 100644 --- a/gdb/printcmd.c +++ b/gdb/printcmd.c @@ -47,6 +47,13 @@ #include "tui/tui.h" /* For tui_active et.al. */ #endif +#if defined(__MINGW32__) +# define USE_PRINTF_I64 1 +# define PRINTF_HAS_LONG_LONG +#else +# define USE_PRINTF_I64 0 +#endif + extern int asm_demangle; /* Whether to demangle syms in asm printouts */ extern int addressprint; /* Whether to print hex addresses in HLL " */ @@ -2009,8 +2016,23 @@ printf_command (char *arg, int from_tty) *f); f++; - strncpy (current_substring, last_arg, f - last_arg); - current_substring += f - last_arg; + + if (lcount > 1 && USE_PRINTF_I64) + { + /* Windows' printf does support long long, but not the usual way. + Convert %lld to %I64d. */ + int length_before_ll = f - last_arg - 1 - lcount; + strncpy (current_substring, last_arg, length_before_ll); + strcpy (current_substring + length_before_ll, "I64"); + current_substring[length_before_ll + 3] = + last_arg[length_before_ll + lcount]; + current_substring += length_before_ll + 4; + } + else + { + strncpy (current_substring, last_arg, f - last_arg); + current_substring += f - last_arg; + } *current_substring++ = '\0'; last_arg = f; argclass[nargs_wanted++] = this_argclass;