| Index: gdb/macroexp.c
|
| diff --git a/gdb/macroexp.c b/gdb/macroexp.c
|
| index d5e4e40326301b36fb1d4cfd2cc602c08d0933f5..fa3431169ea3845832017b52b39b81a78e416047 100644
|
| --- a/gdb/macroexp.c
|
| +++ b/gdb/macroexp.c
|
| @@ -113,6 +113,17 @@ free_buffer (struct macro_buffer *b)
|
| xfree (b->text);
|
| }
|
|
|
| +/* Like free_buffer, but return the text as an xstrdup()d string.
|
| + This only exists to try to make the API relatively clean. */
|
| +
|
| +static char *
|
| +free_buffer_return_text (struct macro_buffer *b)
|
| +{
|
| + gdb_assert (! b->shared);
|
| + gdb_assert (b->size);
|
| + /* Nothing to do. */
|
| + return b->text;
|
| +}
|
|
|
| /* A cleanup function for macro buffers. */
|
| static void
|
| @@ -639,7 +650,7 @@ append_tokens_without_splicing (struct macro_buffer *dest,
|
| stringify; it is LEN bytes long. */
|
|
|
| static void
|
| -stringify (struct macro_buffer *dest, char *arg, int len)
|
| +stringify (struct macro_buffer *dest, const char *arg, int len)
|
| {
|
| /* Trim initial whitespace from ARG. */
|
| while (len > 0 && macro_is_whitespace (*arg))
|
| @@ -682,6 +693,22 @@ stringify (struct macro_buffer *dest, char *arg, int len)
|
| dest->last_token = dest->len;
|
| }
|
|
|
| +/* See macroexp.h. */
|
| +
|
| +char *
|
| +macro_stringify (const char *str)
|
| +{
|
| + struct macro_buffer buffer;
|
| + int len = strlen (str);
|
| + char *result;
|
| +
|
| + init_buffer (&buffer, len);
|
| + stringify (&buffer, str, len);
|
| + appendc (&buffer, '\0');
|
| +
|
| + return free_buffer_return_text (&buffer);
|
| +}
|
| +
|
|
|
| /* Expanding macros! */
|
|
|
|
|