]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
* frame.c (deprecated_safe_get_selected_frame): New function.
authorDaniel Jacobowitz <drow@false.org>
Mon, 8 Sep 2003 18:58:13 +0000 (18:58 +0000)
committerDaniel Jacobowitz <drow@false.org>
Mon, 8 Sep 2003 18:58:13 +0000 (18:58 +0000)
* frame.h (deprecated_safe_get_selected_frame): Add prototype.
* findvar.c (read_var_value): Call it.

gdb/ChangeLog
gdb/findvar.c
gdb/frame.c
gdb/frame.h

index cbb7fa47cde79a3d75ea17c6d53ce41095090756..fa77d50e124905ed8baabaad23f42a93cce84fa8 100644 (file)
@@ -1,3 +1,9 @@
+2003-09-08  Daniel Jacobowitz  <drow@mvista.com>
+
+       * frame.c (deprecated_safe_get_selected_frame): New function.
+       * frame.h (deprecated_safe_get_selected_frame): Add prototype.
+       * findvar.c (read_var_value): Call it.
+
 2003-09-02  GDB Administrator  <gdbadmin@sourceware.org>
 
        * version.in: Bump to version 5.3.91.
index 6602c39b7fe3680c5b9cbfcdba9913ef5a77fea7..61639ccbe3983bc45ecf89132fd776b800dd01a1 100644 (file)
@@ -404,8 +404,11 @@ read_var_value (register struct symbol *var, struct frame_info *frame)
 
   len = TYPE_LENGTH (type);
 
+
+  /* FIXME drow/2003-09-06: this call to the selected frame should be
+     pushed upwards to the callers.  */
   if (frame == NULL)
-    frame = deprecated_selected_frame;
+    frame = deprecated_safe_get_selected_frame ();
 
   switch (SYMBOL_CLASS (var))
     {
index da7213359404ac9d64300eec5daf889824dee6bd..4504dd24fd55d0ba3986d936e75c7420e9cb9904 100644 (file)
@@ -944,6 +944,18 @@ get_selected_frame (void)
   return deprecated_selected_frame;
 }
 
+/* This is a variant of get_selected_frame which can be called when
+   the inferior does not have a frame; in that case it will return
+   NULL instead of calling error ().  */
+
+struct frame_info *
+deprecated_safe_get_selected_frame (void)
+{
+  if (!target_has_registers || !target_has_stack || !target_has_memory)
+    return NULL;
+  return get_selected_frame ();
+}
+
 /* Select frame FI (or NULL - to invalidate the current frame).  */
 
 void
index bb2eb6e62cce8fd3a9cd9849ee14ef573abc8a87..0e97a91fbbd2eabc60529961c66e604f8dfc3b90 100644 (file)
@@ -641,6 +641,19 @@ extern void return_command (char *, int);
 
 extern struct frame_info *deprecated_selected_frame;
 
+/* NOTE: drow/2003-09-06:
+
+   This function is "a step sideways" for uses of deprecated_selected_frame.
+   They should be fixed as above, but meanwhile, we needed a solution for
+   cases where functions are called with a NULL frame meaning either "the
+   program is not running" or "use the selected frame".  Lazy building of
+   deprecated_selected_frame confuses the situation, because now
+   deprecated_selected_frame can be NULL even when the inferior is running.
+
+   This function calls get_selected_frame if the inferior should have a
+   frame, or returns NULL otherwise.  */
+
+extern struct frame_info *deprecated_safe_get_selected_frame (void);
 
 /* Create a frame using the specified BASE and PC.  */