diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2011-10-09 19:41:17 +0000 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2011-10-09 19:41:17 +0000 |
commit | 36b11add17bf287b541a107ee64f7e313e77092f (patch) | |
tree | 10896f0386763977ee0ed611c252dac694387d88 /gdb/expprint.c | |
parent | 3343315ba7c882c948decb9aaad83e4c048a4527 (diff) | |
download | gdb-36b11add17bf287b541a107ee64f7e313e77092f.zip gdb-36b11add17bf287b541a107ee64f7e313e77092f.tar.gz gdb-36b11add17bf287b541a107ee64f7e313e77092f.tar.bz2 |
gdb/
Support @entry in input expressions.
* c-exp.y (ENTRY, unknown_cpp_name): New.
(exp: UNKNOWN_CPP_NAME): Change to `exp: unknown_cpp_name'.
(unknown_cpp_name: UNKNOWN_CPP_NAME, unknown_cpp_name: ENTRY)
(variable: name_not_typename '@' ENTRY, name: ENTRY)
(name_not_typename: ENTRY): New.
(yylex): Recognize ENTRY.
* eval.c (evaluate_subexp_standard): Support also OP_VAR_ENTRY_VALUE.
* expprint.c (print_subexp_standard, dump_subexp_body_standard):
Likewise.
* parse.c (operator_length_standard): Likewise.
* std-operator.def: New operator OP_VAR_ENTRY_VALUE.
gdb/doc/
Support @entry in input expressions.
* gdb.texinfo (Variables): Describe @entry names suffix.
(Print Settings): Add anchor for `set print entry-values'.
gdb/testsuite/
Support @entry in input expressions.
* gdb.arch/amd64-entry-value.exp (entry: p i@entry, entry: p j@entry)
(entry_stack: p s1@entry, entry_stack: p s2@entry)
(entry_stack: p d9@entry, entry_stack: p da@entry, tailcall: p i@entry)
(tailcall: p j@entry): New tests.
* gdb.cp/koenig.cc (A::entry): New function.
(main): Call it.
* gdb.cp/koenig.exp (p entry (c)): New test.
Diffstat (limited to 'gdb/expprint.c')
-rw-r--r-- | gdb/expprint.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/gdb/expprint.c b/gdb/expprint.c index 2b6e416..0e0f1c3 100644 --- a/gdb/expprint.c +++ b/gdb/expprint.c @@ -135,6 +135,16 @@ print_subexp_standard (struct expression *exp, int *pos, } return; + case OP_VAR_ENTRY_VALUE: + { + struct block *b; + + (*pos) += 2; + fprintf_filtered (stream, "%s@entry", + SYMBOL_PRINT_NAME (exp->elts[pc + 1].symbol)); + } + return; + case OP_LAST: (*pos) += 2; fprintf_filtered (stream, "$%d", @@ -853,6 +863,13 @@ dump_subexp_body_standard (struct expression *exp, SYMBOL_PRINT_NAME (exp->elts[elt + 1].symbol)); elt += 3; break; + case OP_VAR_ENTRY_VALUE: + fprintf_filtered (stream, "Entry value of symbol @"); + gdb_print_host_address (exp->elts[elt].symbol, stream); + fprintf_filtered (stream, " (%s)", + SYMBOL_PRINT_NAME (exp->elts[elt].symbol)); + elt += 2; + break; case OP_LAST: fprintf_filtered (stream, "History element %ld", (long) exp->elts[elt].longconst); |