* s390-nat.c: (s390_push_arguments): Write a back chain pointer
authorJim Blandy <jimb@codesourcery.com>
Fri, 9 Nov 2001 18:58:14 +0000 (18:58 +0000)
committerJim Blandy <jimb@codesourcery.com>
Fri, 9 Nov 2001 18:58:14 +0000 (18:58 +0000)
into the dummy frame, to help us get backtraces.

gdb/ChangeLog
gdb/s390-tdep.c

index 04d1f198ce50ee1e84ec5cf29872ad12e5606db7..e6ad44b9dfdc0752b2fd20032b2d32b1cdaa09ef 100644 (file)
@@ -1,5 +1,8 @@
 2001-11-09  Jim Blandy  <jimb@redhat.com>
 
+       * s390-nat.c: (s390_push_arguments): Write a back chain pointer
+       into the dummy frame, to help us get backtraces.
+
        * values.c (value_as_address): If VAL is a function or method,
        just return its address; don't let COERCE_ARRAY convert its
        address to a pointer, and then have unpack_long convert it back to
index 97e65d9eee58ae745e2f1a419c7a665de21c0d0c..bbac85a183bd1aa03d6530bee531e2c9ea913e30 100644 (file)
@@ -1263,7 +1263,16 @@ s390_push_arguments (int nargs, struct value **args, CORE_ADDR sp,
                }
            }
        }
-      if (!second_pass)
+      if (second_pass)
+        {
+          /* Write the back chain pointer into the first word of the
+             stack frame.  This will help us get backtraces from
+             within functions called from GDB.  */
+          write_memory_unsigned_integer (sp, 
+                                         (TARGET_PTR_BIT / TARGET_CHAR_BIT),
+                                         read_fp ());
+        }
+      else
        {
          outgoing_args_space = outgoing_args_ptr;
          /* Align to 16 bytes because because I like alignment &