Make VG_(printf) et al conform to ANSI w.r.t. capitalisation of
hex numbers: %x produces lowercase hex, and %X produces uppercase.
Unfortunately this probably changes the output in dozens of places.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6596 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/coregrind/m_debuglog.c b/coregrind/m_debuglog.c
index a7c6fef..1474389 100644
--- a/coregrind/m_debuglog.c
+++ b/coregrind/m_debuglog.c
@@ -543,13 +543,14 @@
Int flags,
Int base,
Int width,
+ Bool capitalised,
ULong p )
{
HChar buf[40];
Int ind = 0;
Int i, nc = 0;
Bool neg = False;
- HChar* digits = "0123456789ABCDEF";
+ HChar* digits = capitalised ? "0123456789ABCDEF" : "0123456789abcdef";
UInt ret = 0;
if (base < 2 || base > 16)
@@ -620,7 +621,7 @@
Int flags;
Int width;
Int n_ls = 0;
- Bool is_long;
+ Bool is_long, caps;
/* We assume that vargs has already been initialised by the
caller, using va_start, and that the caller will similarly
@@ -686,33 +687,35 @@
case 'd': /* %d */
flags |= VG_MSG_SIGNED;
if (is_long)
- ret += myvprintf_int64(send, send_arg2, flags, 10, width,
+ ret += myvprintf_int64(send, send_arg2, flags, 10, width, False,
(ULong)(va_arg (vargs, Long)));
else
- ret += myvprintf_int64(send, send_arg2, flags, 10, width,
+ ret += myvprintf_int64(send, send_arg2, flags, 10, width, False,
(ULong)(va_arg (vargs, Int)));
break;
case 'u': /* %u */
if (is_long)
- ret += myvprintf_int64(send, send_arg2, flags, 10, width,
+ ret += myvprintf_int64(send, send_arg2, flags, 10, width, False,
(ULong)(va_arg (vargs, ULong)));
else
- ret += myvprintf_int64(send, send_arg2, flags, 10, width,
+ ret += myvprintf_int64(send, send_arg2, flags, 10, width, False,
(ULong)(va_arg (vargs, UInt)));
break;
case 'p': /* %p */
ret += 2;
send('0',send_arg2);
send('x',send_arg2);
- ret += myvprintf_int64(send, send_arg2, flags, 16, width,
+ ret += myvprintf_int64(send, send_arg2, flags, 16, width, True,
(ULong)((UWord)va_arg (vargs, void *)));
break;
case 'x': /* %x */
+ case 'X': /* %X */
+ caps = toBool(format[i] == 'X');
if (is_long)
- ret += myvprintf_int64(send, send_arg2, flags, 16, width,
+ ret += myvprintf_int64(send, send_arg2, flags, 16, width, caps,
(ULong)(va_arg (vargs, ULong)));
else
- ret += myvprintf_int64(send, send_arg2, flags, 16, width,
+ ret += myvprintf_int64(send, send_arg2, flags, 16, width, caps,
(ULong)(va_arg (vargs, UInt)));
break;
case 'c': /* %c */
@@ -843,9 +846,9 @@
}
(void)myvprintf_str ( add_to_buf, &buf, 0, 2, "--", False );
- (void)myvprintf_int64 ( add_to_buf, &buf, 0, 10, 1, (ULong)pid );
+ (void)myvprintf_int64 ( add_to_buf, &buf, 0, 10, 1, False, (ULong)pid );
(void)myvprintf_str ( add_to_buf, &buf, 0, 1, ":", False );
- (void)myvprintf_int64 ( add_to_buf, &buf, 0, 10, 1, (ULong)level );
+ (void)myvprintf_int64 ( add_to_buf, &buf, 0, 10, 1, False, (ULong)level );
(void)myvprintf_str ( add_to_buf, &buf, 0, 1, ":", False );
(void)myvprintf_str ( add_to_buf, &buf, 0, 8, (HChar*)modulename, False );
(void)myvprintf_str ( add_to_buf, &buf, 0, indent, "", False );