From 01c464e928465c5928b15f2f47a655cc4d971572 Mon Sep 17 00:00:00 2001 From: Jim Blandy Date: Fri, 9 Nov 2001 18:58:14 +0000 Subject: [PATCH] * s390-nat.c: (s390_push_arguments): Write a back chain pointer into the dummy frame, to help us get backtraces. --- gdb/ChangeLog | 3 +++ gdb/s390-tdep.c | 11 ++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 04d1f198ce5..e6ad44b9dfd 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,8 @@ 2001-11-09 Jim Blandy + * 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 diff --git a/gdb/s390-tdep.c b/gdb/s390-tdep.c index 97e65d9eee5..bbac85a183b 100644 --- a/gdb/s390-tdep.c +++ b/gdb/s390-tdep.c @@ -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 & -- 2.30.2