mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2025-02-21 10:02:26 +00:00
* gdbtypes.c, gdbtypes.h: New function lookup_signed_typename.
* c-exp.y: Call lookup_signed_typename() after seeing "signed". This handles "signed char" correctly. * c-exp.y: Recognize (but ignore) 'const' and 'volatile' keywords before a type specifier.
This commit is contained in:
parent
8b2c227584
commit
a252e71520
@ -1,3 +1,11 @@
|
||||
Fri Jul 10 13:58:34 1992 Per Bothner (bothner@rtl.cygnus.com)
|
||||
|
||||
* gdbtypes.c, gdbtypes.h: New function lookup_signed_typename.
|
||||
* c-exp.y: Call lookup_signed_typename() after seeing
|
||||
"signed". This handles "signed char" correctly.
|
||||
* c-exp.y: Recognize (but ignore) 'const' and 'volatile'
|
||||
keywords before a type specifier.
|
||||
|
||||
Fri Jul 10 10:19:52 1992 Fred Fish (fnf@cygnus.com)
|
||||
|
||||
* command.c (lookup_cmd_1): Clarify descriptive comments.
|
||||
|
11
gdb/c-exp.y
11
gdb/c-exp.y
@ -161,7 +161,7 @@ parse_number PARAMS ((char *, int, int, YYSTYPE *));
|
||||
|
||||
/* Special type cases, put in to allow the parser to distinguish different
|
||||
legal basetypes. */
|
||||
%token SIGNED_KEYWORD LONG SHORT INT_KEYWORD
|
||||
%token SIGNED_KEYWORD LONG SHORT INT_KEYWORD CONST_KEYWORD VOLATILE_KEYWORD
|
||||
|
||||
%token <lval> LAST REGNAME
|
||||
|
||||
@ -834,6 +834,9 @@ type : ptype
|
||||
{ $$ = lookup_member_type
|
||||
(lookup_function_type ($1), $3);
|
||||
free ((PTR)$8); }
|
||||
/* "const" and "volatile" are curently ignored. */
|
||||
| CONST_KEYWORD type { $$ = $2; }
|
||||
| VOLATILE_KEYWORD type { $$ = $2; }
|
||||
;
|
||||
|
||||
typebase
|
||||
@ -878,7 +881,7 @@ typebase
|
||||
| UNSIGNED
|
||||
{ $$ = builtin_type_unsigned_int; }
|
||||
| SIGNED_KEYWORD typename
|
||||
{ $$ = $2.type; }
|
||||
{ $$ = lookup_signed_typename (TYPE_NAME($2.type)); }
|
||||
| SIGNED_KEYWORD
|
||||
{ $$ = builtin_type_int; }
|
||||
| TEMPLATE name '<' type '>'
|
||||
@ -1359,6 +1362,8 @@ yylex ()
|
||||
if (current_language->la_language == language_cplus
|
||||
&& !strncmp (tokstart, "template", 8))
|
||||
return TEMPLATE;
|
||||
if (!strncmp (tokstart, "volatile", 8))
|
||||
return VOLATILE_KEYWORD;
|
||||
break;
|
||||
case 6:
|
||||
if (!strncmp (tokstart, "struct", 6))
|
||||
@ -1376,6 +1381,8 @@ yylex ()
|
||||
return UNION;
|
||||
if (!strncmp (tokstart, "short", 5))
|
||||
return SHORT;
|
||||
if (!strncmp (tokstart, "const", 5))
|
||||
return CONST_KEYWORD;
|
||||
break;
|
||||
case 4:
|
||||
if (!strncmp (tokstart, "enum", 4))
|
||||
|
@ -499,6 +499,22 @@ lookup_unsigned_typename (name)
|
||||
return (lookup_typename (uns, (struct block *) NULL, 0));
|
||||
}
|
||||
|
||||
struct type *
|
||||
lookup_signed_typename (name)
|
||||
char *name;
|
||||
{
|
||||
struct type *t;
|
||||
char *uns = alloca (strlen (name) + 8);
|
||||
|
||||
strcpy (uns, "signed ");
|
||||
strcpy (uns + 7, name);
|
||||
t = lookup_typename (uns, (struct block *) NULL, 1);
|
||||
/* If we don't find "signed FOO" just try again with plain "FOO". */
|
||||
if (t != NULL)
|
||||
return t;
|
||||
return lookup_typename (name, (struct block *) NULL, 0);
|
||||
}
|
||||
|
||||
/* Lookup a structure type named "struct NAME",
|
||||
visible in lexical block BLOCK. */
|
||||
|
||||
|
@ -543,6 +543,9 @@ create_array_type PARAMS ((struct type *, int));
|
||||
extern struct type *
|
||||
lookup_unsigned_typename PARAMS ((char *));
|
||||
|
||||
extern struct type *
|
||||
lookup_signed_typename PARAMS ((char *));
|
||||
|
||||
extern void
|
||||
check_stub_type PARAMS ((struct type *));
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user