mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-03 14:44:00 +08:00
* ch-exp.y (match_simple_name_string): Don't lower-case here.
* ch-exp.y (yylex): First try name lookup using exact name typed by user; if that fails, try lower-cased name.
This commit is contained in:
parent
874a43273c
commit
ad86f71799
31
gdb/ch-exp.y
31
gdb/ch-exp.y
@ -1053,9 +1053,6 @@ match_simple_name_string ()
|
|||||||
yylval.sval.length = tokptr - lexptr;
|
yylval.sval.length = tokptr - lexptr;
|
||||||
lexptr = tokptr;
|
lexptr = tokptr;
|
||||||
result = copy_name (yylval.sval);
|
result = copy_name (yylval.sval);
|
||||||
for (tokptr = result; *tokptr; tokptr++)
|
|
||||||
if (isupper (*tokptr))
|
|
||||||
*tokptr = tolower(*tokptr);
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
return (NULL);
|
return (NULL);
|
||||||
@ -1776,7 +1773,7 @@ yylex ()
|
|||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
int token;
|
int token;
|
||||||
char *simplename;
|
char *inputname;
|
||||||
struct symbol *sym;
|
struct symbol *sym;
|
||||||
|
|
||||||
/* Skip over any leading whitespace. */
|
/* Skip over any leading whitespace. */
|
||||||
@ -1888,10 +1885,16 @@ yylex ()
|
|||||||
the token from lexptr, so we can't back out if we later find that
|
the token from lexptr, so we can't back out if we later find that
|
||||||
we can't classify what sort of name it is. */
|
we can't classify what sort of name it is. */
|
||||||
|
|
||||||
simplename = match_simple_name_string ();
|
inputname = match_simple_name_string ();
|
||||||
|
|
||||||
if (simplename != NULL)
|
if (inputname != NULL)
|
||||||
{
|
{
|
||||||
|
char *simplename = (char*) alloca (strlen (inputname));
|
||||||
|
|
||||||
|
char *dptr = simplename, *sptr = inputname;
|
||||||
|
for (; *sptr; sptr++)
|
||||||
|
*dptr++ = isupper (*sptr) ? tolower(*sptr) : *sptr;
|
||||||
|
|
||||||
/* See if it is a reserved identifier. */
|
/* See if it is a reserved identifier. */
|
||||||
for (i = 0; i < sizeof (idtokentab) / sizeof (idtokentab[0]); i++)
|
for (i = 0; i < sizeof (idtokentab) / sizeof (idtokentab[0]); i++)
|
||||||
{
|
{
|
||||||
@ -1913,9 +1916,15 @@ yylex ()
|
|||||||
return (BOOLEAN_LITERAL);
|
return (BOOLEAN_LITERAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
sym = lookup_symbol (simplename, expression_context_block,
|
sym = lookup_symbol (inputname, expression_context_block,
|
||||||
VAR_NAMESPACE, (int *) NULL,
|
VAR_NAMESPACE, (int *) NULL,
|
||||||
(struct symtab **) NULL);
|
(struct symtab **) NULL);
|
||||||
|
if (sym == NULL && strcmp (inputname, simplename) != 0)
|
||||||
|
{
|
||||||
|
sym = lookup_symbol (simplename, expression_context_block,
|
||||||
|
VAR_NAMESPACE, (int *) NULL,
|
||||||
|
(struct symtab **) NULL);
|
||||||
|
}
|
||||||
if (sym != NULL)
|
if (sym != NULL)
|
||||||
{
|
{
|
||||||
yylval.ssym.stoken.ptr = NULL;
|
yylval.ssym.stoken.ptr = NULL;
|
||||||
@ -1956,7 +1965,7 @@ yylex ()
|
|||||||
case LOC_UNDEF:
|
case LOC_UNDEF:
|
||||||
case LOC_CONST_BYTES:
|
case LOC_CONST_BYTES:
|
||||||
case LOC_OPTIMIZED_OUT:
|
case LOC_OPTIMIZED_OUT:
|
||||||
error ("Symbol \"%s\" names no location.", simplename);
|
error ("Symbol \"%s\" names no location.", inputname);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1966,7 +1975,7 @@ yylex ()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
error ("No symbol \"%s\" in current context.", simplename);
|
error ("No symbol \"%s\" in current context.", inputname);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1978,8 +1987,8 @@ yylex ()
|
|||||||
case '.': /* Not float for example. */
|
case '.': /* Not float for example. */
|
||||||
lexptr++;
|
lexptr++;
|
||||||
while (isspace (*lexptr)) lexptr++;
|
while (isspace (*lexptr)) lexptr++;
|
||||||
simplename = match_simple_name_string ();
|
inputname = match_simple_name_string ();
|
||||||
if (!simplename)
|
if (!inputname)
|
||||||
return '.';
|
return '.';
|
||||||
return FIELD_NAME;
|
return FIELD_NAME;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user