| Index: gdb/common/buffer.c
|
| diff --git a/gdb/common/buffer.c b/gdb/common/buffer.c
|
| index 37b7b55f7488d35899cd0546a2e15177b1dd03a1..2f63eecaebce84f455e558f45773d75a133c53ec 100644
|
| --- a/gdb/common/buffer.c
|
| +++ b/gdb/common/buffer.c
|
| @@ -25,10 +25,12 @@
|
|
|
| #include "xml-utils.h"
|
| #include "buffer.h"
|
| +#include "inttypes.h"
|
|
|
| #include <stdlib.h>
|
| #include <string.h>
|
| #include <stdio.h>
|
| +#include <stdint.h>
|
|
|
| void
|
| buffer_grow (struct buffer *buffer, const char *data, size_t size)
|
| @@ -47,8 +49,6 @@ buffer_grow (struct buffer *buffer, const char *data, size_t size)
|
| while (buffer->used_size + size > new_buffer_size)
|
| new_buffer_size *= 2;
|
| new_buffer = xrealloc (buffer->buffer, new_buffer_size);
|
| - if (!new_buffer)
|
| - abort ();
|
| memcpy (new_buffer + buffer->used_size, data, size);
|
| buffer->buffer = new_buffer;
|
| buffer->buffer_size = new_buffer_size;
|
| @@ -101,6 +101,7 @@ buffer_xml_printf (struct buffer *buffer, const char *format, ...)
|
| char buf[32];
|
| char *p;
|
| char *str = buf;
|
| + const char *f_old = f;
|
|
|
| switch (*f)
|
| {
|
| @@ -119,14 +120,60 @@ buffer_xml_printf (struct buffer *buffer, const char *format, ...)
|
| case 'o':
|
| sprintf (str, "%o", va_arg (ap, unsigned int));
|
| break;
|
| + case 'l':
|
| + f++;
|
| + switch (*f)
|
| + {
|
| + case 'd':
|
| + sprintf (str, "%ld", va_arg (ap, long));
|
| + break;
|
| + case 'u':
|
| + sprintf (str, "%lu", va_arg (ap, unsigned long));
|
| + break;
|
| + case 'x':
|
| + sprintf (str, "%lx", va_arg (ap, unsigned long));
|
| + break;
|
| + case 'o':
|
| + sprintf (str, "%lo", va_arg (ap, unsigned long));
|
| + break;
|
| + case 'l':
|
| + f++;
|
| + switch (*f)
|
| + {
|
| + case 'd':
|
| + sprintf (str, "%" PRId64,
|
| + (int64_t) va_arg (ap, long long));
|
| + break;
|
| + case 'u':
|
| + sprintf (str, "%" PRIu64,
|
| + (uint64_t) va_arg (ap, unsigned long long));
|
| + break;
|
| + case 'x':
|
| + sprintf (str, "%" PRIx64,
|
| + (uint64_t) va_arg (ap, unsigned long long));
|
| + break;
|
| + case 'o':
|
| + sprintf (str, "%" PRIo64,
|
| + (uint64_t) va_arg (ap, unsigned long long));
|
| + break;
|
| + default:
|
| + str = 0;
|
| + break;
|
| + }
|
| + break;
|
| + default:
|
| + str = 0;
|
| + break;
|
| + }
|
| + break;
|
| default:
|
| str = 0;
|
| break;
|
| }
|
| -
|
| +
|
| if (str)
|
| {
|
| - buffer_grow (buffer, prev, f - prev - 1);
|
| + buffer_grow (buffer, prev, f_old - prev - 1);
|
| p = xml_escape_text (str);
|
| buffer_grow_str (buffer, p);
|
| xfree (p);
|
|
|