This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[patch] Code cleanup: Drop frame_unwind_find_by_frame retval


Hi,

it is obvious (as frame->unwind is already pre-set by
frame_prepare_for_sniffer).  I will check it in in several days if not replied
otherwise.

No regressions on {x86_64,x86_64-m32,i686}-fedora14snapshot-linux-gnu.


Thanks,
Jan


2010-08-07  Jan Kratochvil  <jan.kratochvil@redhat.com>

	Code cleanup.
	* frame-unwind.c (frame_unwind_find_by_frame): Remove the return type
	and returned value.  New comment from frame-unwind.h.
	* frame-unwind.h (frame_unwind_find_by_frame): Remove the return type.
	Extend the comment.
	* frame.c (get_frame_id, frame_unwind_register_value)
	(create_new_frame, get_prev_frame_1, frame_unwinder_is)
	(get_frame_type, frame_unwind_arch): Do not use the return value of
	frame_unwind_find_by_frame.

--- a/gdb/frame-unwind.c
+++ b/gdb/frame-unwind.c
@@ -88,7 +88,11 @@ frame_unwind_append_unwinder (struct gdbarch *gdbarch,
   (*ip)->unwinder = unwinder;
 }
 
-const struct frame_unwind *
+/* Iterate through sniffers for THIS_FRAME frame until one returns with an
+   unwinder implementation.  THIS_FRAME->UNWIND must be NULL, it will get set
+   by this function.  Possibly initialize THIS_CACHE.  */
+
+void
 frame_unwind_find_by_frame (struct frame_info *this_frame, void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -104,7 +108,7 @@ frame_unwind_find_by_frame (struct frame_info *this_frame, void **this_cache)
 				    this_cache))
 	{
 	  discard_cleanups (old_cleanup);
-	  return entry->unwinder;
+	  return;
 	}
       do_cleanups (old_cleanup);
     }
--- a/gdb/frame-unwind.h
+++ b/gdb/frame-unwind.h
@@ -160,11 +160,12 @@ extern void frame_unwind_prepend_unwinder (struct gdbarch *gdbarch,
 extern void frame_unwind_append_unwinder (struct gdbarch *gdbarch,
 					  const struct frame_unwind *unwinder);
 
-/* Iterate through sniffers for THIS frame until one returns with an
-   unwinder implementation.  Possibly initialize THIS_CACHE.  */
+/* Iterate through sniffers for THIS_FRAME frame until one returns with an
+   unwinder implementation.  THIS_FRAME->UNWIND must be NULL, it will get set
+   by this function.  Possibly initialize THIS_CACHE.  */
 
-extern const struct frame_unwind *frame_unwind_find_by_frame (struct frame_info *this_frame,
-							      void **this_cache);
+extern void frame_unwind_find_by_frame (struct frame_info *this_frame,
+					void **this_cache);
 
 /* Helper functions for value-based register unwinding.  These return
    a (possibly lazy) value of the appropriate type.  */
--- a/gdb/frame.c
+++ b/gdb/frame.c
@@ -329,7 +329,7 @@ get_frame_id (struct frame_info *fi)
 			    fi->level);
       /* Find the unwinder.  */
       if (fi->unwind == NULL)
-	fi->unwind = frame_unwind_find_by_frame (fi, &fi->prologue_cache);
+	frame_unwind_find_by_frame (fi, &fi->prologue_cache);
       /* Find THIS frame's ID.  */
       /* Default to outermost if no ID is found.  */
       fi->this_id.value = outer_frame_id;
@@ -839,7 +839,7 @@ frame_unwind_register_value (struct frame_info *frame, int regnum)
 
   /* Find the unwinder.  */
   if (frame->unwind == NULL)
-    frame->unwind = frame_unwind_find_by_frame (frame, &frame->prologue_cache);
+    frame_unwind_find_by_frame (frame, &frame->prologue_cache);
 
   /* Ask this frame to unwind its register.  */
   value = frame->unwind->prev_register (frame, &frame->prologue_cache, regnum);
@@ -1328,7 +1328,7 @@ create_new_frame (CORE_ADDR addr, CORE_ADDR pc)
 
   /* Select/initialize both the unwind function and the frame's type
      based on the PC.  */
-  fi->unwind = frame_unwind_find_by_frame (fi, &fi->prologue_cache);
+  frame_unwind_find_by_frame (fi, &fi->prologue_cache);
 
   fi->this_id.p = 1;
   fi->this_id.value = frame_id_build (addr, pc);
@@ -1463,8 +1463,7 @@ get_prev_frame_1 (struct frame_info *this_frame)
      sniffers will think that this frame's sniffer tried to unwind
      further (see frame_cleanup_after_sniffer).  */
   if (this_frame->unwind == NULL)
-    this_frame->unwind
-      = frame_unwind_find_by_frame (this_frame, &this_frame->prologue_cache);
+    frame_unwind_find_by_frame (this_frame, &this_frame->prologue_cache);
 
   this_frame->prev_p = 1;
   this_frame->stop_reason = UNWIND_NO_REASON;
@@ -1961,7 +1960,7 @@ int
 frame_unwinder_is (struct frame_info *fi, const struct frame_unwind *unwinder)
 {
   if (fi->unwind == NULL)
-    fi->unwind = frame_unwind_find_by_frame (fi, &fi->prologue_cache);
+    frame_unwind_find_by_frame (fi, &fi->prologue_cache);
   return fi->unwind == unwinder;
 }
 
@@ -1983,7 +1982,7 @@ get_frame_type (struct frame_info *frame)
   if (frame->unwind == NULL)
     /* Initialize the frame's unwinder because that's what
        provides the frame's type.  */
-    frame->unwind = frame_unwind_find_by_frame (frame, &frame->prologue_cache);
+    frame_unwind_find_by_frame (frame, &frame->prologue_cache);
   return frame->unwind->type;
 }
 
@@ -2063,9 +2062,7 @@ frame_unwind_arch (struct frame_info *next_frame)
       struct gdbarch *arch;
 
       if (next_frame->unwind == NULL)
-	next_frame->unwind
-	  = frame_unwind_find_by_frame (next_frame,
-					&next_frame->prologue_cache);
+	frame_unwind_find_by_frame (next_frame, &next_frame->prologue_cache);
 
       if (next_frame->unwind->prev_arch != NULL)
 	arch = next_frame->unwind->prev_arch (next_frame,


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]