Wed Nov 20 19:09:16 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
authorMartin Hunt <hunt@redhat.com>
Thu, 21 Nov 1996 03:19:37 +0000 (03:19 +0000)
committerMartin Hunt <hunt@redhat.com>
Thu, 21 Nov 1996 03:19:37 +0000 (03:19 +0000)
* infcmd.c (do_registers_info): Call val_print with the
virtual buf instead of the raw buf.  Needed for REGISTER_CONVERT
to work with non-floating point regs.

start-sanitize-d10v
* d10v-tdep.c (d10v_skip_prologue): If we have line debugging
information, then the end of the prologue should the first
assembly instruction of the first source line.

* values.c (value_from_longest): Put in D10V call to
fix up address pointers.

* config/d10v/tm-d10v.h (REGISTER_VIRTUAL_SIZE): Modified.
(REGISTER_VIRTUAL_TYPE): Modified for PC_REGNUM and SP_REGNUM.
(REGISTER_CONVERTIBLE): Make PC and SP convertible.
(REGISTER_CONVERT_TO_VIRTUAL): Define.
(REGISTER_CONVERT_TO_RAW): Define.
(D10V_MAKE_DADDR): Define.
(D10V_MAKE_IADDR): Define.
end-sanitize-d10v

gdb/ChangeLog
gdb/d10v-tdep.c
gdb/values.c

index cbbcacc6d3c0e33b579748fd9cbea59d878bc8fc..33c63276df9b69c7232b0a20021ea28f0f5c5c6c 100644 (file)
@@ -1,3 +1,25 @@
+Wed Nov 20 19:09:16 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>
+
+       * infcmd.c (do_registers_info): Call val_print with the
+       virtual buf instead of the raw buf.  Needed for REGISTER_CONVERT 
+       to work with non-floating point regs.
+
+start-sanitize-d10v
+       * d10v-tdep.c (d10v_skip_prologue): If we have line debugging 
+       information, then the end of the prologue should the first 
+       assembly instruction of the first source line.
+       
+       * values.c (value_from_longest): Put in D10V call to 
+       fix up address pointers.
+
+       * config/d10v/tm-d10v.h (REGISTER_VIRTUAL_SIZE): Modified.
+       (REGISTER_VIRTUAL_TYPE): Modified for PC_REGNUM and SP_REGNUM.
+       (REGISTER_CONVERTIBLE): Make PC and SP convertible.
+       (REGISTER_CONVERT_TO_VIRTUAL): Define.
+       (REGISTER_CONVERT_TO_RAW): Define.
+       (D10V_MAKE_DADDR): Define.
+       (D10V_MAKE_IADDR): Define.
+end-sanitize-d10v
 Wed Nov 20 16:15:15 1996  Geoffrey Noer  <noer@cygnus.com>
 
         * config/i386/cygwin32.mh: add MMALLOC_CFLAGS = -I$(MMALLOC_SRC)
index 7920c4fdfb83ade87c631351a79d95d17be14c3d..3ac0572ef24e85b5b9ac7f458b601030ec5f3b36 100644 (file)
@@ -123,7 +123,18 @@ d10v_skip_prologue (pc)
 {
   unsigned long op;
   unsigned short op1, op2;
+  CORE_ADDR func_addr, func_end;
+  struct symtab_and_line sal;
 
+  /* If we have line debugging information, then the end of the */
+  /* prologue should the first assembly instruction of  the first source line */
+  if (find_pc_partial_function (pc, NULL, &func_addr, &func_end))
+    {
+      sal = find_pc_line (func_addr, 0);
+      if (sal.end < func_end)
+       return sal.end;
+    }
+  
   if (target_read_memory (pc, (char *)&op, 4))
     return pc;                 /* Can't access it -- assume no prologue. */
 
index 3f9e7bbb808eb30c736b4e8360f3bd7aa35e3886..404485dacff58e39b86f5b2d3fa057e9e5509473 100644 (file)
@@ -1259,6 +1259,14 @@ value_from_longest (type, num)
     case TYPE_CODE_PTR:
       /* This assumes that all pointers of a given length
         have the same form.  */
+
+/* start-sanitize-d10v */
+#ifdef GDB_TARGET_IS_D10V
+      /* D10V function pointers need adjusted */
+      if (TYPE_TARGET_TYPE(type) && TYPE_CODE(TYPE_TARGET_TYPE(type)) == TYPE_CODE_FUNC)
+       num = D10V_MAKE_IADDR (num);
+#endif
+/* end-sanitize-d10v */
       store_address (VALUE_CONTENTS_RAW (val), len, (CORE_ADDR) num);
       break;