* config/tc-ppc.c (ppc_frob_symbol): Formatting, warning fix.
[deliverable/binutils-gdb.git] / gdb / xstormy16-tdep.c
index bfadc7b12ad158c3fa7106d70db00359a0da969c..d3583139c63339e0de5d592c19421099899e232d 100644 (file)
@@ -1,5 +1,6 @@
 /* Target-dependent code for the Sanyo Xstormy16a (LC590000) processor.
-   Copyright 2001, Free Software Foundation, Inc.
+
+   Copyright 2001, 2002 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -96,7 +97,7 @@ enum
 /* Function: xstormy16_register_name
    Returns the name of the standard Xstormy16 register N. */
 
-static char *
+static const char *
 xstormy16_register_name (int regnum)
 {
   static char *register_names[] = {
@@ -451,8 +452,8 @@ xstormy16_frame_saved_register (struct frame_info *fi, int regnum)
 */
 
 static CORE_ADDR
-xstormy16_scan_prologue (CORE_ADDR start_addr,
-                        CORE_ADDR end_addr, struct frame_info *fi)
+xstormy16_scan_prologue (CORE_ADDR start_addr, CORE_ADDR end_addr,
+                        struct frame_info *fi, int *frameless)
 {
   CORE_ADDR sp = 0, fp = 0;
   CORE_ADDR next_addr;
@@ -460,6 +461,8 @@ xstormy16_scan_prologue (CORE_ADDR start_addr,
   LONGEST offset;
   int regnum;
 
+  if (frameless)
+    *frameless = 1;
   if (fi)
     {
       /* In a call dummy, don't touch the frame. */
@@ -518,6 +521,8 @@ xstormy16_scan_prologue (CORE_ADDR start_addr,
        {
          if (fi)               /* Record that the frame pointer is in use. */
            fi->extra_info->frameless_p = 0;
+         if (frameless)
+           *frameless = 0;
        }
 
       /* optional copying of args in r2-r7 to r10-r13 */
@@ -633,11 +638,18 @@ xstormy16_skip_prologue (CORE_ADDR pc)
       struct symtab_and_line sal;
       struct symbol *sym;
 
+      /* Don't trust line number debug info in frameless functions. */
+      int frameless = 1;
+      CORE_ADDR plg_end = xstormy16_scan_prologue (func_addr, func_end,
+                                                  NULL, &frameless);
+      if (frameless)
+        return plg_end;
+
       /* Found a function.  */
       sym = lookup_symbol (func_name, NULL, VAR_NAMESPACE, NULL, NULL);
+      /* Don't use line number debug info for assembly source files. */
       if (sym && SYMBOL_LANGUAGE (sym) != language_asm)
        {
-         /* Don't use this trick for assembly source files. */
          sal = find_pc_line (func_addr, 0);
          if (sal.end && sal.end < func_end)
            {
@@ -645,8 +657,8 @@ xstormy16_skip_prologue (CORE_ADDR pc)
              return sal.end;
            }
        }
-      /* No useable line symbol.  Use prologue parsing method. */
-      return xstormy16_scan_prologue (func_addr, func_end, NULL);
+      /* No useable line symbol.  Use result of prologue parsing method. */
+      return plg_end;
     }
 
   /* No function symbol -- just return the PC. */
@@ -727,7 +739,7 @@ xstormy16_frame_init_saved_regs (struct frame_info *fi)
       /* Find the beginning of this function, so we can analyze its
          prologue. */
       if (find_pc_partial_function (fi->pc, NULL, &func_addr, &func_end))
-       xstormy16_scan_prologue (func_addr, fi->pc, fi);
+       xstormy16_scan_prologue (func_addr, fi->pc, fi, NULL);
       /* Else we're out of luck (can't debug completely stripped code). 
          FIXME. */
     }
@@ -846,7 +858,7 @@ xstormy16_saved_pc_after_call (struct frame_info *ignore)
   return pc;
 }
 
-static unsigned char *
+const static unsigned char *
 xstormy16_breakpoint_from_pc (CORE_ADDR *pcptr, int *lenptr)
 {
   static unsigned char breakpoint[] = { 0x06, 0x0 };
@@ -1074,13 +1086,12 @@ xstormy16_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   set_gdbarch_use_generic_dummy_frames (gdbarch, 1);
   set_gdbarch_push_dummy_frame (gdbarch, generic_push_dummy_frame);
   set_gdbarch_push_return_address (gdbarch, xstormy16_push_return_address);
-  set_gdbarch_extract_return_value (gdbarch, xstormy16_extract_return_value);
+  set_gdbarch_deprecated_extract_return_value (gdbarch, xstormy16_extract_return_value);
   set_gdbarch_push_arguments (gdbarch, xstormy16_push_arguments);
   set_gdbarch_pop_frame (gdbarch, xstormy16_pop_frame);
   set_gdbarch_store_struct_return (gdbarch, xstormy16_store_struct_return);
-  set_gdbarch_store_return_value (gdbarch, xstormy16_store_return_value);
-  set_gdbarch_extract_struct_value_address (gdbarch,
-                                           xstormy16_extract_struct_value_address);
+  set_gdbarch_deprecated_store_return_value (gdbarch, xstormy16_store_return_value);
+  set_gdbarch_deprecated_extract_struct_value_address (gdbarch, xstormy16_extract_struct_value_address);
   set_gdbarch_use_struct_convention (gdbarch,
                                     xstormy16_use_struct_convention);
   set_gdbarch_call_dummy_location (gdbarch, AT_ENTRY_POINT);
This page took 0.024928 seconds and 4 git commands to generate.