| Index: gdb/ada-lex.l
|
| diff --git a/gdb/ada-lex.l b/gdb/ada-lex.l
|
| index 48667d062b5bbd93c08fa6266550817fde400136..714265ef385ef3d9cf130cf6c9facae91e704847 100644
|
| --- a/gdb/ada-lex.l
|
| +++ b/gdb/ada-lex.l
|
| @@ -293,7 +293,7 @@ false { return FALSEKEYWORD; }
|
|
|
| /* Initialize the lexer for processing new expression. */
|
|
|
| -void
|
| +static void
|
| lexer_init (FILE *inp)
|
| {
|
| BEGIN INITIAL;
|
| @@ -410,7 +410,9 @@ processReal (const char *num0)
|
|
|
|
|
| /* Store a canonicalized version of NAME0[0..LEN-1] in yylval.ssym. The
|
| - resulting string is valid until the next call to ada_parse. It differs
|
| + resulting string is valid until the next call to ada_parse. If
|
| + NAME0 contains the substring "___", it is assumed to be already
|
| + encoded and the resulting name is equal to it. Otherwise, it differs
|
| from NAME0 in that:
|
| + Characters between '...' or <...> are transfered verbatim to
|
| yylval.ssym.
|
| @@ -430,8 +432,18 @@ processId (const char *name0, int len)
|
| int i0, i;
|
| struct stoken result;
|
|
|
| + result.ptr = name;
|
| while (len > 0 && isspace (name0[len-1]))
|
| len -= 1;
|
| +
|
| + if (strstr (name0, "___") != NULL)
|
| + {
|
| + strncpy (name, name0, len);
|
| + name[len] = '\000';
|
| + result.length = len;
|
| + return result;
|
| + }
|
| +
|
| i = i0 = 0;
|
| while (i0 < len)
|
| {
|
| @@ -471,7 +483,6 @@ processId (const char *name0, int len)
|
| }
|
| name[i] = '\000';
|
|
|
| - result.ptr = name;
|
| result.length = i;
|
| return result;
|
| }
|
|
|