[gdb/testsuite] Add KFAILs for PR symtab/24549
authorTom de Vries <tdevries@suse.de>
Fri, 5 Feb 2021 09:56:39 +0000 (10:56 +0100)
committerTom de Vries <tdevries@suse.de>
Fri, 5 Feb 2021 09:56:39 +0000 (10:56 +0100)
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  <tdevries@suse.de>

* gdb.dwarf2/main-subprogram.exp: Add KFAIL for PR symtab/24549.
* gdb.fortran/mixed-lang-stack.exp: Same.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.dwarf2/main-subprogram.exp
gdb/testsuite/gdb.fortran/mixed-lang-stack.exp

index 9c24a49676af0a7daea8a8f6e82fc2e5c0e03c57..84f064730d348b931611da61ce7c381cf6e244b6 100644 (file)
@@ -1,3 +1,8 @@
+2021-02-05  Tom de Vries  <tdevries@suse.de>
+
+       * gdb.dwarf2/main-subprogram.exp: Add KFAIL for PR symtab/24549.
+       * gdb.fortran/mixed-lang-stack.exp: Same.
+
 2021-02-05  Tom de Vries  <tdevries@suse.de>
 
        PR exp/27265
index ad0113e404d13947a5a99ac4d071b22c16409436..c618a40f2fb06553a245362f431ca117f5bcc711 100644 (file)
@@ -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
+    }
+}
index 411fd784dc041685d37c7a407192c2adbf60abb5..6a249e60f2f7db6bd3b338bea2e744fdded790a0 100644 (file)
@@ -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\..*" \