diff options
author | Fred Fish <fnf@specifix.com> | 2006-01-24 15:20:10 +0000 |
---|---|---|
committer | Fred Fish <fnf@specifix.com> | 2006-01-24 15:20:10 +0000 |
commit | 59f92a09f11acb0641ef889f6b32f73a27bd432f (patch) | |
tree | f876ff332d30afbdd7ea5ea402cc5ff9a467b927 /gdb/parse.c | |
parent | fc6e32319797541d9df5ea3a776536f1466b4dd6 (diff) | |
download | gdb-59f92a09f11acb0641ef889f6b32f73a27bd432f.zip gdb-59f92a09f11acb0641ef889f6b32f73a27bd432f.tar.gz gdb-59f92a09f11acb0641ef889f6b32f73a27bd432f.tar.bz2 |
Reviewed and approved by Jim Blandy and Daniel Jacobowitz
2006-01-24 Fred Fish <fnf@specifix.com>
* parse.c (source.h): Include.
(parse_exp_in_context): Use static source context if no
other context found.
Diffstat (limited to 'gdb/parse.c')
-rw-r--r-- | gdb/parse.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/gdb/parse.c b/gdb/parse.c index 6bf07bf..e0b5b70 100644 --- a/gdb/parse.c +++ b/gdb/parse.c @@ -52,6 +52,7 @@ #include "doublest.h" #include "gdb_assert.h" #include "block.h" +#include "source.h" /* Standard set of definitions for printing, dumping, prefixifying, * and evaluating expressions. */ @@ -1075,13 +1076,27 @@ parse_exp_in_context (char **stringptr, struct block *block, int comma, old_chain = make_cleanup (free_funcalls, 0 /*ignore*/); funcall_chain = 0; + /* If no context specified, try using the current frame, if any. */ + + if (!block) + block = get_selected_block (&expression_context_pc); + + /* Fall back to using the current source static context, if any. */ + + if (!block) + { + struct symtab_and_line cursal = get_current_source_symtab_and_line (); + if (cursal.symtab) + block = BLOCKVECTOR_BLOCK (BLOCKVECTOR (cursal.symtab), STATIC_BLOCK); + } + + /* Save the context, if specified by caller, or found above. */ + if (block) { expression_context_block = block; expression_context_pc = BLOCK_START (block); } - else - expression_context_block = get_selected_block (&expression_context_pc); expout_size = 10; expout_ptr = 0; |