Reviewed and approved by Jim Blandy and Daniel Jacobowitz
authorFred Fish <fnf@specifix.com>
Tue, 24 Jan 2006 15:20:10 +0000 (15:20 +0000)
committerFred Fish <fnf@specifix.com>
Tue, 24 Jan 2006 15:20:10 +0000 (15:20 +0000)
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.

gdb/ChangeLog
gdb/parse.c

index 609b95e11bae40e012f4b9b42dda7d8a59cf94c6..af422b9a930a5e4892569bdf01640549686193e2 100644 (file)
@@ -1,3 +1,9 @@
+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.
+
 2006-01-23  Andrew Stubbs  <andrew.stubbs@st.com>
 
        * sh-tdep.c: Include reggroups.h.
index 6bf07bf2650387520889a133d22297852d9666ef..e0b5b70b7c73dc89b0c6ba5078a444208f5f1245 100644 (file)
@@ -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;