* findvar.c (extract_signed_integer): Cast *p to LONGEST before doing
authorPeter Schauer <Peter.Schauer@mytum.de>
Fri, 17 Sep 1993 11:46:50 +0000 (11:46 +0000)
committerPeter Schauer <Peter.Schauer@mytum.de>
Fri, 17 Sep 1993 11:46:50 +0000 (11:46 +0000)
the xor and subtract.  Otherwise it will not sign extend if the type
of LONGEST is larger than int.
* cp-valprint.c (cp_print_class_method):  Inhibit core dump if
domain is an undefined cross reference.
* valops.c (call_function_by_hand):  Set real_pc to correct

gdb/ChangeLog
gdb/cp-valprint.c
gdb/valops.c

index 3dff28e8b51f18951b0bbb5270e3ba85abef8fb5..f9cdb275f277eda706db59e41899cf397a55604f 100644 (file)
@@ -1,3 +1,13 @@
+Fri Sep 17 04:41:17 1993  Peter Schauer  (pes@regent.e-technik.tu-muenchen.de)
+
+       * findvar.c (extract_signed_integer):  Cast *p to LONGEST before doing
+       the xor and subtract.  Otherwise it will not sign extend if the type
+       of LONGEST is larger than int.
+       * cp-valprint.c (cp_print_class_method):  Inhibit core dump if
+       domain is an undefined cross reference.
+       * valops.c (call_function_by_hand):  Set real_pc to correct
+       value if CALL_DUMMY_LOCATION != ON_STACK.
+
 Thu Sep 16 20:37:06 1993  Jim Kingdon  (kingdon@cirdan.cygnus.com)
 
        * config/a29k/tm-a29k.h (FRAME_CHAIN): If rsize is zero, return zero.
index f5cb15e29c49a968c7eba2f0947b1bf6ffa4b0dd..a3a5c5859277e4b06b34a2605d776c478729a6d6 100644 (file)
@@ -78,7 +78,13 @@ cp_print_class_method (valaddr, type, stream)
   unsigned len;
   unsigned int i;
 
+  check_stub_type (TYPE_TARGET_TYPE (type));
   domain = TYPE_DOMAIN_TYPE (TYPE_TARGET_TYPE (type));
+  if (domain == (struct type *)NULL)
+    {
+      fprintf_filtered (stream, "<unknown>");
+      return;
+    }
   addr = unpack_pointer (lookup_pointer_type (builtin_type_void), valaddr);
   if (METHOD_PTR_IS_VIRTUAL (addr))
     {
index fa75ea6f4bd3e0f00d2a19f62f01d040f6a6dc1c..02ab2ed5c9c6ec2ede0f73a53844cfaea5f7aff4 100644 (file)
@@ -910,16 +910,16 @@ call_function_by_hand (function, nargs, args)
          error ("text segment full -- no place to put call");
     checked = 1;
     sp = old_sp;
-    start_sp = text_end - sizeof dummy;
-    write_memory (start_sp, (char *)dummy1, sizeof dummy);
+    real_pc = text_end - sizeof dummy;
+    write_memory (real_pc, (char *)dummy1, sizeof dummy);
   }
 #else /* After text_end.  */
   {
     extern CORE_ADDR text_end;
     int errcode;
     sp = old_sp;
-    start_sp = text_end;
-    errcode = target_write_memory (start_sp, (char *)dummy1, sizeof dummy);
+    real_pc = text_end;
+    errcode = target_write_memory (real_pc, (char *)dummy1, sizeof dummy);
     if (errcode != 0)
       error ("Cannot write text segment -- call_function failed");
   }
@@ -1072,7 +1072,7 @@ call_function_by_hand (function, nargs, args)
           wrong things (like set stop_bpstat to the wrong thing).  */
        discard_cleanups (old_chain);
        /* Prevent memory leak.  */
-       bpstat_clear (inf_status.stop_bpstat);
+       bpstat_clear (&inf_status.stop_bpstat);
 
        /* The following error message used to say "The expression
           which contained the function call has been discarded."  It