From db77748be8aaa4926946d75b74947fff3775edcf Mon Sep 17 00:00:00 2001 From: Felix Willgerodt Date: Thu, 6 May 2021 14:14:07 +0200 Subject: [PATCH] gdb, testsuite: Fix mi-var-child-f.exp for Intel compilers. mi-var-child-f.exp uses array.f as the inferior, which uses an unnamed main function. This causes false positive fails for Intel compilers, as they emit the following DWARF: ~~~ 0x0000002a: DW_TAG_subprogram DW_AT_low_pc (0x0000000000404800) DW_AT_high_pc (0x000000000040484c) DW_AT_frame_base (DW_OP_reg6 RBP) DW_AT_linkage_name ("MAIN__") DW_AT_name ("_unnamed_main$$") DW_AT_decl_file ("array.f") DW_AT_decl_line (16) DW_AT_external (true) DW_AT_main_subprogram (true) ~~~ The testsuite for fortran uses test_compiler_info to determine a hardcoded string which is used to run to main and as a testing regex: ~~~ proc fortran_main {} { if {[test_compiler_info {gcc-4-[012]-*}] || [test_compiler_info {gcc-*}] || [test_compiler_info {icc-*}] { return "MAIN__" } elseif {[test_compiler_info {clang-*}]} { return "MAIN_" } else { return "unknown" } } ~~~ GDB however uses DW_AT_name mostly in its output, which fails the regex. To fix this testcase immediately, I modernized array.f and gave it a named main. There was no specific reason it was unnamed anyway. Fixing the testsuite properly is not straightforward. fortran_main and test_compiler_info would need some changes, which has broader influences. I might look at this later down the road. gdb/testsuite/ChangeLog: 2021-06-11 Felix Willgerodt * gdb.mi/array.f: Convert into... * gdb.mi/array.f90: ...this. * gdb.mi/mi-var-child-f.exp: Use array.f90. --- gdb/testsuite/ChangeLog | 6 ++++++ gdb/testsuite/gdb.mi/array.f | 20 -------------------- gdb/testsuite/gdb.mi/array.f90 | 21 +++++++++++++++++++++ gdb/testsuite/gdb.mi/mi-var-child-f.exp | 4 ++-- 4 files changed, 29 insertions(+), 22 deletions(-) delete mode 100644 gdb/testsuite/gdb.mi/array.f create mode 100644 gdb/testsuite/gdb.mi/array.f90 diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 9168a6a4b70..ba11a4d3d7f 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2021-06-11 Felix Willgerodt + + * gdb.mi/array.f: Convert into... + * gdb.mi/array.f90: ...this. + * gdb.mi/mi-var-child-f.exp: Use array.f90. + 2021-06-11 Tom Tromey PR rust/23427 diff --git a/gdb/testsuite/gdb.mi/array.f b/gdb/testsuite/gdb.mi/array.f deleted file mode 100644 index 2d31ecae984..00000000000 --- a/gdb/testsuite/gdb.mi/array.f +++ /dev/null @@ -1,20 +0,0 @@ -c Copyright 2006-2021 Free Software Foundation, Inc. - -c This program is free software; you can redistribute it and/or modify -c it under the terms of the GNU General Public License as published by -c the Free Software Foundation; either version 3 of the License, or -c (at your option) any later version. -c -c This program is distributed in the hope that it will be useful, -c but WITHOUT ANY WARRANTY; without even the implied warranty of -c MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -c GNU General Public License for more details. -c -c You should have received a copy of the GNU General Public License -c along with this program. If not, see . - - INTEGER array(1:2,-1:1) - DATA array/11,21,12,22,13,23/ - CONTINUE - STOP - END diff --git a/gdb/testsuite/gdb.mi/array.f90 b/gdb/testsuite/gdb.mi/array.f90 new file mode 100644 index 00000000000..b414b27e026 --- /dev/null +++ b/gdb/testsuite/gdb.mi/array.f90 @@ -0,0 +1,21 @@ +! Copyright 2006-2021 Free Software Foundation, Inc. + +! This program is free software; you can redistribute it and/or modify +! it under the terms of the GNU General Public License as published by +! the Free Software Foundation; either version 3 of the License, or +! (at your option) any later version. +! +! This program is distributed in the hope that it will be useful, +! but WITHOUT ANY WARRANTY; without even the implied warranty of +! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +! GNU General Public License for more details. +! +! You should have received a copy of the GNU General Public License +! along with this program. If not, see . + +program prog_array + INTEGER array (1:2,-1:1) + DATA array/11,21,12,22,13,23/ + CONTINUE + STOP +end program prog_array diff --git a/gdb/testsuite/gdb.mi/mi-var-child-f.exp b/gdb/testsuite/gdb.mi/mi-var-child-f.exp index 272505a4d69..f35c0cdd6d3 100644 --- a/gdb/testsuite/gdb.mi/mi-var-child-f.exp +++ b/gdb/testsuite/gdb.mi/mi-var-child-f.exp @@ -26,7 +26,7 @@ if [mi_gdb_start] { continue } -standard_testfile array.f +standard_testfile array.f90 if {[gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" \ executable {debug f90}] != ""} { @@ -36,7 +36,7 @@ if {[gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" \ mi_gdb_reinitialize_dir $srcdir/$subdir mi_gdb_load ${binfile} -mi_runto [fortran_main] +mi_runto prog_array mi_create_varobj "array" "array" "create local variable array" -- 2.30.2