aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/stack.c6
-rw-r--r--gdb/testsuite/ChangeLog6
-rw-r--r--gdb/testsuite/gdb.fortran/mixed-lang-stack.exp30
4 files changed, 35 insertions, 13 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 5106b28..9cc7e44 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2020-08-15 Tom de Vries <tdevries@suse.de>
+
+ PR backtrace/26390
+ * stack.c (print_frame_args): Temporarily set the selected
+ frame to FRAME while printing the frame's arguments.
+
2020-08-14 Pedro Franco de Carvalho <pedromfc@linux.ibm.com>
PR breakpoints/26385
diff --git a/gdb/stack.c b/gdb/stack.c
index 265e764..616b629 100644
--- a/gdb/stack.c
+++ b/gdb/stack.c
@@ -744,6 +744,12 @@ print_frame_args (const frame_print_options &fp_opts,
= (print_names
&& fp_opts.print_frame_arguments != print_frame_arguments_none);
+ /* Temporarily change the selected frame to the given FRAME.
+ This allows routines that rely on the selected frame instead
+ of being given a frame as parameter to use the correct frame. */
+ scoped_restore_selected_frame restore_selected_frame;
+ select_frame (frame);
+
if (func)
{
const struct block *b = SYMBOL_BLOCK_VALUE (func);
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index f22401b3..54a0ab5 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2020-08-15 Tom de Vries <tdevries@suse.de>
+
+ PR backtrace/26390
+ * gdb.fortran/mixed-lang-stack.exp: Call bt with -frame-arguments all.
+ Update expected pattern.
+
2020-08-13 Pedro Alves <pedro@palves.net>
* gdb.fortran/complex.exp: Check skip_fortran_tests.
diff --git a/gdb/testsuite/gdb.fortran/mixed-lang-stack.exp b/gdb/testsuite/gdb.fortran/mixed-lang-stack.exp
index 7933186..edf2508 100644
--- a/gdb/testsuite/gdb.fortran/mixed-lang-stack.exp
+++ b/gdb/testsuite/gdb.fortran/mixed-lang-stack.exp
@@ -59,19 +59,23 @@ proc run_tests { lang } {
}
# Check the backtrace.
- set bt_stack [multi_line \
- "#0\\s+breakpt \\(\\) at \[^\r\n\]+" \
- "#1\\s+$hex in mixed_func_1h \\(\\) at \[^\r\n\]+" \
- "#2\\s+$hex in mixed_func_1g \\(obj=\\.\\.\\.\\) at \[^\r\n\]+" \
- "#3\\s+$hex in mixed_func_1f \\(\\) at \[^\r\n\]+" \
- "#4\\s+$hex in mixed_func_1e \\(\\) at \[^\r\n\]+" \
- "#5\\s+$hex in mixed_func_1d \\(\[^\r\n\]+\\) at \[^\r\n\]+" \
- "#6\\s+$hex in mixed_func_1c \\(\[^\r\n\]+\\) at \[^\r\n\]+" \
- "#7\\s+$hex in mixed_func_1b \\(\[^\r\n\]+\\) at \[^\r\n\]+" \
- "#8\\s+$hex in mixed_func_1a \\(\\) at \[^\r\n\]+" \
- "#9\\s+$hex in mixed_stack_main \\(\\) at \[^\r\n\]+" \
- "#10\\s+$hex in main \\(\[^\r\n\]+\\) at .*" ]
- gdb_test "bt" $bt_stack
+ set e_arg "\['\"\]abcdef\['\"\]"
+ set 1b_args "\[^\r\n\]+$e_arg\[^\r\n\]+"
+ set 1g_args "obj=\[^\r\n\]+"
+ set bt_stack \
+ [multi_line \
+ "#0\\s+breakpt \\(\\) at \[^\r\n\]+" \
+ "#1\\s+$hex in mixed_func_1h \\(\\) at \[^\r\n\]+" \
+ "#2\\s+$hex in mixed_func_1g \\($1g_args\\) at \[^\r\n\]+" \
+ "#3\\s+$hex in mixed_func_1f \\(\\) at \[^\r\n\]+" \
+ "#4\\s+$hex in mixed_func_1e \\(\\) at \[^\r\n\]+" \
+ "#5\\s+$hex in mixed_func_1d \\(\[^\r\n\]+\\) at \[^\r\n\]+" \
+ "#6\\s+$hex in mixed_func_1c \\(\[^\r\n\]+\\) at \[^\r\n\]+" \
+ "#7\\s+$hex in mixed_func_1b \\($1b_args\\) at \[^\r\n\]+" \
+ "#8\\s+$hex in mixed_func_1a \\(\\) at \[^\r\n\]+" \
+ "#9\\s+$hex in mixed_stack_main \\(\\) at \[^\r\n\]+" \
+ "#10\\s+$hex in main \\(\[^\r\n\]+\\) at .*" ]
+ gdb_test "bt -frame-arguments all" $bt_stack
# Check the language for frame #0.
gdb_test "info frame" "source language fortran\..*" \