aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/testsuite/gdb.ada/import.exp34
1 files changed, 34 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.ada/import.exp b/gdb/testsuite/gdb.ada/import.exp
index 90cffa4..7355248 100644
--- a/gdb/testsuite/gdb.ada/import.exp
+++ b/gdb/testsuite/gdb.ada/import.exp
@@ -17,6 +17,12 @@ load_lib "ada.exp"
require allow_ada_tests
+# GCC with commit ff9baa5f1c5 ("DWARF: make it possible to emit debug info for
+# declarations only") is required. The commit makes sure that file-scope
+# function and variable declarations are emitted in dwarf. This allows the
+# description of imported entries, making them available to the debugger.
+require {expr [gcc_major_version] >= 8}
+
standard_ada_testfile prog
set cfile "inc"
@@ -48,8 +54,36 @@ gdb_test "print pkg.imported_var_ada" " = 42"
gdb_test "print pkg.exported_var_ada" " = 99"
gdb_test "print exported_var_ada" " = 99"
+# This passes with gcc 10 but fails with gcc 9. With gcc 9, we have:
+# <1><1659>: Abbrev Number: 4 (DW_TAG_subprogram)
+# <165a> DW_AT_external : 1
+# <165a> DW_AT_name : pkg__imported_func_ada
+# <165e> DW_AT_decl_file : 2
+# <165f> DW_AT_decl_line : 22
+# <1660> DW_AT_decl_column : 13
+# <1661> DW_AT_linkage_name: imported_func
+# <1665> DW_AT_type : <0x1669>
+# and with gcc 10 instead:
+# <1><1670>: Abbrev Number: 4 (DW_TAG_subprogram)
+# <1671> DW_AT_external : 1
+# <1671> DW_AT_name : pkg__imported_func_ada
+# <1675> DW_AT_decl_file : 2
+# <1676> DW_AT_decl_line : 22
+# <1677> DW_AT_decl_column : 13
+# <1678> DW_AT_linkage_name: imported_func
+# <167c> DW_AT_type : <0x1680>
+# <1680> DW_AT_declaration : 1
+# The fact that things start to work when adding the DW_AT_declaration is
+# consistent with what is described in commit ff9baa5f1c5, so xfail this
+# (without pinpointing it to a specific gcc PR or commit).
+if { [gcc_major_version] < 10 } {
+ setup_xfail *-*-*
+}
gdb_breakpoint "pkg.imported_func_ada" message
gdb_breakpoint "imported_func" message
+if { [gcc_major_version] < 10 } {
+ setup_xfail *-*-*
+}
gdb_breakpoint "imported_func_ada" message
gdb_breakpoint "local_imported_func" message