From a22ec6e8a4b9006e342ad20c36357a5ba8ba1e74 Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Fri, 5 Feb 2021 10:56:39 +0100 Subject: [PATCH] [gdb/testsuite] Add KFAILs for PR symtab/24549 When an executable contains an index such as a .gdb_index or .debug_names section, gdb ignores the DW_AT_subprogram attribute. This problem has been filed as PR symtab/24549. Add KFAILs for this PR in test-cases gdb.dwarf2/main-subprogram.exp and gdb.fortran/mixed-lang-stack.exp. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2021-02-05 Tom de Vries * gdb.dwarf2/main-subprogram.exp: Add KFAIL for PR symtab/24549. * gdb.fortran/mixed-lang-stack.exp: Same. --- gdb/testsuite/ChangeLog | 5 +++++ gdb/testsuite/gdb.dwarf2/main-subprogram.exp | 14 ++++++++++++- .../gdb.fortran/mixed-lang-stack.exp | 21 +++++++++++++++++-- 3 files changed, 37 insertions(+), 3 deletions(-) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 9c24a49676a..84f064730d3 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2021-02-05 Tom de Vries + + * gdb.dwarf2/main-subprogram.exp: Add KFAIL for PR symtab/24549. + * gdb.fortran/mixed-lang-stack.exp: Same. + 2021-02-05 Tom de Vries PR exp/27265 diff --git a/gdb/testsuite/gdb.dwarf2/main-subprogram.exp b/gdb/testsuite/gdb.dwarf2/main-subprogram.exp index ad0113e404d..c618a40f2fb 100644 --- a/gdb/testsuite/gdb.dwarf2/main-subprogram.exp +++ b/gdb/testsuite/gdb.dwarf2/main-subprogram.exp @@ -55,6 +55,8 @@ if {[prepare_for_testing "failed to prepare" ${testfile} \ return -1 } +set have_index [exec_has_index_section $binfile] + # Test that the "start" command stops in the "mymain" function. # This should happen because we used DW_AT_main_subprogram to tell gdb # that this was the real "main". @@ -64,4 +66,14 @@ if {[gdb_start_cmd] < 0} { return -1 } -gdb_test "" "Temporary breakpoint .* mymain.*" "stopped at mymain" +gdb_test_multiple "" "stopped at mymain" { + -re -wrap "Temporary breakpoint .* mymain.*" { + pass $gdb_test_name + } + -re -wrap "Temporary breakpoint .* main.*" { + if { $have_index } { + setup_kfail "gdb/24549" *-*-* + } + fail $gdb_test_name + } +} diff --git a/gdb/testsuite/gdb.fortran/mixed-lang-stack.exp b/gdb/testsuite/gdb.fortran/mixed-lang-stack.exp index 411fd784dc0..6a249e60f2f 100644 --- a/gdb/testsuite/gdb.fortran/mixed-lang-stack.exp +++ b/gdb/testsuite/gdb.fortran/mixed-lang-stack.exp @@ -35,11 +35,13 @@ if {[prepare_for_testing_full "failed to prepare" \ return -1 } +set have_index [exec_has_index_section $binfile] + # Runs the test program and examins the stack. LANG is a string, the # value to pass to GDB's 'set language ...' command. proc run_tests { lang } { with_test_prefix "lang=${lang}" { - global binfile hex + global binfile hex have_index clean_restart ${binfile} @@ -74,7 +76,22 @@ proc run_tests { lang } { "#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\]+" ] - gdb_test "bt -frame-arguments all" $bt_stack + set main_args "argc=1, argv=${hex}( \[^\r\n\]+)?" + set bt_stack_kfail \ + [multi_line \ + $bt_stack \ + "#10\\s+$hex in main \\($main_args\\) at \[^\r\n\]+"] + gdb_test_multiple "bt -frame-arguments all" "" { + -re -wrap $bt_stack { + pass $gdb_test_name + } + -re -wrap $bt_stack_kfail { + if { $have_index } { + setup_kfail "gdb/24549" *-*-* + } + fail $gdb_test_name + } + } # Check the language for frame #0. gdb_test "info frame" "source language fortran\..*" \ -- 2.30.2