diff options
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/stack.c | 6 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/testsuite/gdb.fortran/mixed-lang-stack.exp | 30 |
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\..*" \ |