diff options
author | Per Bothner <per@bothner.com> | 1994-03-30 06:59:16 +0000 |
---|---|---|
committer | Per Bothner <per@bothner.com> | 1994-03-30 06:59:16 +0000 |
commit | 58cda66eeb172461c8b9361b20311448a6384983 (patch) | |
tree | cda340fb9f31fed8cbceb2296deb2894e1a20025 /gdb | |
parent | 73cd3b4911899b642e8b560cec05180a40480feb (diff) | |
download | gdb-58cda66eeb172461c8b9361b20311448a6384983.zip gdb-58cda66eeb172461c8b9361b20311448a6384983.tar.gz gdb-58cda66eeb172461c8b9361b20311448a6384983.tar.bz2 |
* ch-exp.y: Implement SIZE(mode_name) and SIZE(expression).
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 2 | ||||
-rw-r--r-- | gdb/ch-exp.y | 17 |
2 files changed, 10 insertions, 9 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index b4fbf95..fa57970 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,7 @@ Tue Mar 29 21:14:04 1994 Per Bothner (bothner@kalessin.cygnus.com) + * ch-exp.y: Implement SIZE(mode_name) and SIZE(expression). + * ch-lang.c (chill_is_varying_struct): Magic string is was "<var_length>" is now "__var_length" (more portable). diff --git a/gdb/ch-exp.y b/gdb/ch-exp.y index e818803..cb6aa18 100644 --- a/gdb/ch-exp.y +++ b/gdb/ch-exp.y @@ -295,7 +295,7 @@ yyerror PARAMS ((char *)); %type <voidval> lower_element %type <voidval> upper_element %type <voidval> first_element -%type <voidval> mode_argument +%type <tval> mode_argument %type <voidval> upper_lower_argument %type <voidval> length_argument %type <voidval> array_mode_name @@ -903,14 +903,13 @@ chill_value_built_in_routine_call : { $$ = 0; /* FIXME */ } - | SIZE '(' location ')' - { - $$ = 0; /* FIXME */ - } + | SIZE '(' expression ')' + { write_exp_elt_opcode (UNOP_SIZEOF); } | SIZE '(' mode_argument ')' - { - $$ = 0; /* FIXME */ - } + { write_exp_elt_opcode (OP_LONG); + write_exp_elt_type (builtin_type_int); + write_exp_elt_longcst ((LONGEST) TYPE_LENGTH ($3)); + write_exp_elt_opcode (OP_LONG); } | UPPER '(' upper_lower_argument ')' { $$ = 0; /* FIXME */ @@ -927,7 +926,7 @@ chill_value_built_in_routine_call : mode_argument : mode_name { - $$ = 0; /* FIXME */ + $$ = $1.type; } | array_mode_name '(' expression ')' { |