Fix prologue analysis for moxie.
[deliverable/binutils-gdb.git] / gdb / frame-unwind.c
index 98d6b436bbee56128a3d96e5cc84cc8328dd4537..238c6a1b5615eae0252aff869b7ebb3e38be6134 100644 (file)
@@ -21,6 +21,7 @@
 #include "frame.h"
 #include "frame-unwind.h"
 #include "dummy-frame.h"
+#include "inline-frame.h"
 #include "value.h"
 #include "regcache.h"
 
@@ -51,8 +52,10 @@ frame_unwind_init (struct obstack *obstack)
      can't override this.  */
   table->list = OBSTACK_ZALLOC (obstack, struct frame_unwind_table_entry);
   table->list->unwinder = dummy_frame_unwind;
+  table->list->next = OBSTACK_ZALLOC (obstack, struct frame_unwind_table_entry);
+  table->list->next->unwinder = inline_frame_unwind;
   /* The insertion point for OSABI sniffers.  */
-  table->osabi_head = &table->list->next;
+  table->osabi_head = &table->list->next->next;
   return table;
 }
 
@@ -126,7 +129,7 @@ default_frame_sniffer (const struct frame_unwind *self,
 struct value *
 frame_unwind_got_optimized (struct frame_info *frame, int regnum)
 {
-  struct gdbarch *gdbarch = get_frame_arch (frame);
+  struct gdbarch *gdbarch = frame_unwind_arch (frame);
   struct value *reg_val;
 
   reg_val = value_zero (register_type (gdbarch, regnum), not_lval);
@@ -149,7 +152,7 @@ frame_unwind_got_register (struct frame_info *frame, int regnum, int new_regnum)
 struct value *
 frame_unwind_got_memory (struct frame_info *frame, int regnum, CORE_ADDR addr)
 {
-  struct gdbarch *gdbarch = get_frame_arch (frame);
+  struct gdbarch *gdbarch = frame_unwind_arch (frame);
 
   return value_at_lazy (register_type (gdbarch, regnum), addr);
 }
@@ -161,19 +164,20 @@ struct value *
 frame_unwind_got_constant (struct frame_info *frame, int regnum,
                           ULONGEST val)
 {
-  struct gdbarch *gdbarch = get_frame_arch (frame);
+  struct gdbarch *gdbarch = frame_unwind_arch (frame);
+  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
   struct value *reg_val;
 
   reg_val = value_zero (register_type (gdbarch, regnum), not_lval);
   store_unsigned_integer (value_contents_writeable (reg_val),
-                         register_size (gdbarch, regnum), val);
+                         register_size (gdbarch, regnum), byte_order, val);
   return reg_val;
 }
 
 struct value *
 frame_unwind_got_bytes (struct frame_info *frame, int regnum, gdb_byte *buf)
 {
-  struct gdbarch *gdbarch = get_frame_arch (frame);
+  struct gdbarch *gdbarch = frame_unwind_arch (frame);
   struct value *reg_val;
 
   reg_val = value_zero (register_type (gdbarch, regnum), not_lval);
@@ -189,7 +193,7 @@ struct value *
 frame_unwind_got_address (struct frame_info *frame, int regnum,
                          CORE_ADDR addr)
 {
-  struct gdbarch *gdbarch = get_frame_arch (frame);
+  struct gdbarch *gdbarch = frame_unwind_arch (frame);
   struct value *reg_val;
 
   reg_val = value_zero (register_type (gdbarch, regnum), not_lval);
This page took 0.033085 seconds and 4 git commands to generate.