mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-08-06 06:45:56 +08:00
* c-exp.y: Fix problems with parsing "'foo.bar'::func". Some languages
allow symbols with dots. * gdbtypes.c (check_stub_method): Cosmetic. Use more descriptive names for parameters. start-sanitize-java * jv-exp.y: Parser now accepts primitive types. * (parse_number): Use correct ifdef for scanf long double support. * jv-lang.c (java_array_type): Initial cut at array support. end-sanitize-java * language.c language.h (set_language): Now returns previous language. * symtab.c (find_methods): Make static. Cosmetic changes, including indentation, and adding descriptive comments. Move local variable defs into the block they are used in. * Don't call check_stub_method any more. Use gdb_mangle_name to generate the full method name. find_method doesn't need all the other goobldegook that check_stub_method does. * (gdb_mangle_name): Use more descriptive names for parameters. Fix comment. start-sanitize-java * (lookup_partial_symbol lookup_block_symbol): Check for java to ensure we can find mangled names. end-sanitize-java * (decode_line_1): Move local variable defs into the block they are used in. (Improves code readability.)
This commit is contained in:
36
gdb/c-exp.y
36
gdb/c-exp.y
@ -214,6 +214,7 @@ parse_number PARAMS ((char *, int, int, YYSTYPE *));
|
||||
%right UNARY INCREMENT DECREMENT
|
||||
%right ARROW '.' '[' '('
|
||||
%token <ssym> BLOCKNAME
|
||||
%token <bval> FILENAME
|
||||
%type <bval> block
|
||||
%left COLONCOLON
|
||||
|
||||
@ -531,18 +532,15 @@ exp : THIS
|
||||
|
||||
block : BLOCKNAME
|
||||
{
|
||||
if ($1.sym != 0)
|
||||
$$ = SYMBOL_BLOCK_VALUE ($1.sym);
|
||||
if ($1.sym)
|
||||
$$ = SYMBOL_BLOCK_VALUE ($1.sym);
|
||||
else
|
||||
{
|
||||
struct symtab *tem =
|
||||
lookup_symtab (copy_name ($1.stoken));
|
||||
if (tem)
|
||||
$$ = BLOCKVECTOR_BLOCK (BLOCKVECTOR (tem), STATIC_BLOCK);
|
||||
else
|
||||
error ("No file or function \"%s\".",
|
||||
copy_name ($1.stoken));
|
||||
}
|
||||
error ("No file or function \"%s\".",
|
||||
copy_name ($1.stoken));
|
||||
}
|
||||
| FILENAME
|
||||
{
|
||||
$$ = $1;
|
||||
}
|
||||
;
|
||||
|
||||
@ -1526,13 +1524,25 @@ yylex ()
|
||||
/* Call lookup_symtab, not lookup_partial_symtab, in case there are
|
||||
no psymtabs (coff, xcoff, or some future change to blow away the
|
||||
psymtabs once once symbols are read). */
|
||||
if ((sym && SYMBOL_CLASS (sym) == LOC_BLOCK) ||
|
||||
lookup_symtab (tmp))
|
||||
if (sym && SYMBOL_CLASS (sym) == LOC_BLOCK)
|
||||
{
|
||||
yylval.ssym.sym = sym;
|
||||
yylval.ssym.is_a_field_of_this = is_a_field_of_this;
|
||||
return BLOCKNAME;
|
||||
}
|
||||
else if (!sym)
|
||||
{ /* See if it's a file name. */
|
||||
struct symtab *symtab;
|
||||
|
||||
symtab = lookup_symtab (tmp);
|
||||
|
||||
if (symtab)
|
||||
{
|
||||
yylval.bval = BLOCKVECTOR_BLOCK (BLOCKVECTOR (symtab), STATIC_BLOCK);
|
||||
return FILENAME;
|
||||
}
|
||||
}
|
||||
|
||||
if (sym && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
|
||||
{
|
||||
#if 1
|
||||
|
Reference in New Issue
Block a user