This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[patch] Code cleanup: unwinders: Reference directly the struct
- From: Jan Kratochvil <jan dot kratochvil at redhat dot com>
- To: gdb-patches at sourceware dot org
- Date: Sun, 8 Aug 2010 18:13:00 +0200
- Subject: [patch] Code cleanup: unwinders: Reference directly the struct
Hi,
it is obvious, I am not aware why it has been made the current way. It even
does not make an ABI sense. If any ABI would make sense inside GDB sources,
which it does not. 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-08 Jan Kratochvil <jan.kratochvil@redhat.com>
* dummy-frame.c (dummy_frame_unwinder): Remove its static qualifier.
Rename to dummy_frame_unwind.
(dummy_frame_unwind): Remove.
* dummy-frame.h (dummy_frame_unwind): Reference directly the struct.
* frame-unwind.c (frame_unwind_init): Use address of
dummy_frame_unwind and inline_frame_unwind.
* frame.c (create_sentinel_frame): Use address of
sentinel_frame_unwind.
* inline-frame.c (inline_frame_unwinder): Rename to
inline_frame_unwind.
(inline_frame_unwind): Remove.
* inline-frame.h (inline_frame_unwind): Reference directly the struct.
* sentinel-frame.c (sentinel_frame_unwinder): Rename to
sentinel_frame_unwind.
(sentinel_frame_unwind): Remove.
* sentinel-frame.h (sentinel_frame_unwind): Reference directly the
struct.
--- a/gdb/dummy-frame.c
+++ b/gdb/dummy-frame.c
@@ -274,7 +274,7 @@ dummy_frame_this_id (struct frame_info *this_frame,
(*this_id) = cache->this_id;
}
-static const struct frame_unwind dummy_frame_unwinder =
+const struct frame_unwind dummy_frame_unwind =
{
DUMMY_FRAME,
dummy_frame_this_id,
@@ -283,10 +283,6 @@ static const struct frame_unwind dummy_frame_unwinder =
dummy_frame_sniffer,
};
-const struct frame_unwind *const dummy_frame_unwind = {
- &dummy_frame_unwinder
-};
-
static void
fprint_dummy_frames (struct ui_file *file)
{
--- a/gdb/dummy-frame.h
+++ b/gdb/dummy-frame.h
@@ -56,6 +56,6 @@ extern void dummy_frame_pop (struct frame_id dummy_id);
/* If the PC falls in a dummy frame, return a dummy frame
unwinder. */
-extern const struct frame_unwind *const dummy_frame_unwind;
+extern const struct frame_unwind dummy_frame_unwind;
#endif /* !defined (DUMMY_FRAME_H) */
--- a/gdb/frame-unwind.c
+++ b/gdb/frame-unwind.c
@@ -53,9 +53,9 @@ frame_unwind_init (struct obstack *obstack)
/* Start the table out with a few default sniffers. OSABI code
can't override this. */
table->list = OBSTACK_ZALLOC (obstack, struct frame_unwind_table_entry);
- table->list->unwinder = dummy_frame_unwind;
+ table->list->unwinder = &dummy_frame_unwind;
table->list->next = OBSTACK_ZALLOC (obstack, struct frame_unwind_table_entry);
- table->list->next->unwinder = inline_frame_unwind;
+ table->list->next->unwinder = &inline_frame_unwind;
/* The insertion point for OSABI sniffers. */
table->osabi_head = &table->list->next->next;
return table;
--- a/gdb/frame.c
+++ b/gdb/frame.c
@@ -1100,7 +1100,7 @@ create_sentinel_frame (struct program_space *pspace, struct regcache *regcache)
information, such as the frame's thread will be added. */
frame->prologue_cache = sentinel_frame_cache (regcache);
/* For the moment there is only one sentinel frame implementation. */
- frame->unwind = sentinel_frame_unwind;
+ frame->unwind = &sentinel_frame_unwind;
/* Link this frame back to itself. The frame is self referential
(the unwound PC is the same as the pc), so make it so. */
frame->next = frame;
--- a/gdb/inline-frame.c
+++ b/gdb/inline-frame.c
@@ -256,7 +256,7 @@ inline_frame_sniffer (const struct frame_unwind *self,
return 1;
}
-const struct frame_unwind inline_frame_unwinder = {
+const struct frame_unwind inline_frame_unwind = {
INLINE_FRAME,
inline_frame_this_id,
inline_frame_prev_register,
@@ -264,8 +264,6 @@ const struct frame_unwind inline_frame_unwinder = {
inline_frame_sniffer
};
-const struct frame_unwind *const inline_frame_unwind = &inline_frame_unwinder;
-
/* Return non-zero if BLOCK, an inlined function block containing PC,
has a group of contiguous instructions starting at PC (but not
before it). */
--- a/gdb/inline-frame.h
+++ b/gdb/inline-frame.h
@@ -25,7 +25,7 @@ struct frame_unwind;
/* The inline frame unwinder. */
-extern const struct frame_unwind *const inline_frame_unwind;
+extern const struct frame_unwind inline_frame_unwind;
/* Skip all inlined functions whose call sites are at the current PC.
Frames for the hidden functions will not appear in the backtrace until the
--- a/gdb/sentinel-frame.c
+++ b/gdb/sentinel-frame.c
@@ -86,7 +86,7 @@ sentinel_frame_prev_arch (struct frame_info *this_frame,
return get_regcache_arch (cache->regcache);
}
-const struct frame_unwind sentinel_frame_unwinder =
+const struct frame_unwind sentinel_frame_unwind =
{
SENTINEL_FRAME,
sentinel_frame_this_id,
@@ -96,5 +96,3 @@ const struct frame_unwind sentinel_frame_unwinder =
NULL,
sentinel_frame_prev_arch,
};
-
-const struct frame_unwind *const sentinel_frame_unwind = &sentinel_frame_unwinder;
--- a/gdb/sentinel-frame.h
+++ b/gdb/sentinel-frame.h
@@ -34,6 +34,6 @@ extern void *sentinel_frame_cache (struct regcache *regcache);
/* At present there is only one type of sentinel frame. */
-extern const struct frame_unwind *const sentinel_frame_unwind;
+extern const struct frame_unwind sentinel_frame_unwind;
#endif /* !defined (SENTINEL_FRAME_H) */