* blockframe.c (inside_main_func): No longer use symbol_lookup()
[deliverable/binutils-gdb.git] / gdb / frame-base.c
index 0865a0ce6c9460d1a78e333afa46894a71aaec27..66a0106aa0b83b1cbf149cccb868429a4c1be122 100644 (file)
@@ -70,7 +70,7 @@ static struct gdbarch_data *frame_base_data;
 
 struct frame_base_table
 {
-  frame_base_p_ftype **p;
+  frame_base_sniffer_ftype **sniffer;
   const struct frame_base *default_base;
   int nr;
 };
@@ -83,15 +83,6 @@ frame_base_init (struct gdbarch *gdbarch)
   return table;
 }
 
-static void
-frame_base_free (struct gdbarch *gdbarch, void *data)
-{
-  struct frame_base_table *table =
-    gdbarch_data (gdbarch, frame_base_data);
-  xfree (table->p);
-  xfree (table);
-}
-
 static struct frame_base_table *
 frame_base_table (struct gdbarch *gdbarch)
 {
@@ -108,20 +99,22 @@ frame_base_table (struct gdbarch *gdbarch)
 
 /* Append a predicate to the end of the table.  */
 static void
-append_predicate (struct frame_base_table *table, frame_base_p_ftype *p)
+append_predicate (struct frame_base_table *table,
+                 frame_base_sniffer_ftype *sniffer)
 {
-  table->p = xrealloc (table->p, ((table->nr + 1)
-                                 * sizeof (frame_base_p_ftype *)));
-  table->p[table->nr] = p;
+  table->sniffer = xrealloc (table->sniffer,
+                            ((table->nr + 1)
+                             * sizeof (frame_base_sniffer_ftype *)));
+  table->sniffer[table->nr] = sniffer;
   table->nr++;
 }
 
 void
-frame_base_append_predicate (struct gdbarch *gdbarch,
-                            frame_base_p_ftype *p)
+frame_base_append_sniffer (struct gdbarch *gdbarch,
+                          frame_base_sniffer_ftype *sniffer)
 {
   struct frame_base_table *table = frame_base_table (gdbarch);
-  append_predicate (table, p);
+  append_predicate (table, sniffer);
 }
 
 void
@@ -133,13 +126,15 @@ frame_base_set_default (struct gdbarch *gdbarch,
 }
 
 const struct frame_base *
-frame_base_find_by_pc (struct gdbarch *gdbarch, CORE_ADDR pc)
+frame_base_find_by_frame (struct frame_info *next_frame)
 {
-  int i;
+  struct gdbarch *gdbarch = get_frame_arch (next_frame);
   struct frame_base_table *table = frame_base_table (gdbarch);
+  int i;
   for (i = 0; i < table->nr; i++)
     {
-      const struct frame_base *desc = table->p[i] (pc);
+      const struct frame_base *desc = NULL;
+      desc = table->sniffer[i] (next_frame);
       if (desc != NULL)
        return desc;
     }
@@ -151,6 +146,5 @@ extern initialize_file_ftype _initialize_frame_base; /* -Wmissing-prototypes */
 void
 _initialize_frame_base (void)
 {
-  frame_base_data = register_gdbarch_data (frame_base_init,
-                                          frame_base_free);
+  frame_base_data = register_gdbarch_data (frame_base_init);
 }
This page took 0.02765 seconds and 4 git commands to generate.