diff options
author | Felix Willgerodt <felix.willgerodt@intel.com> | 2021-05-06 14:14:07 +0200 |
---|---|---|
committer | Felix Willgerodt <felix.willgerodt@intel.com> | 2021-06-11 17:16:46 +0200 |
commit | db77748be8aaa4926946d75b74947fff3775edcf (patch) | |
tree | 88f4bee44d6bd75fe208c684dd33398c63a7a1e1 | |
parent | 48ec4c05c68bfec4b79e95807bd82e0df4634a6c (diff) | |
download | gdb-db77748be8aaa4926946d75b74947fff3775edcf.zip gdb-db77748be8aaa4926946d75b74947fff3775edcf.tar.gz gdb-db77748be8aaa4926946d75b74947fff3775edcf.tar.bz2 |
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 <felix.willgerodt@intel.com>
* gdb.mi/array.f: Convert into...
* gdb.mi/array.f90: ...this.
* gdb.mi/mi-var-child-f.exp: Use array.f90.
-rw-r--r-- | gdb/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/testsuite/gdb.mi/array.f | 20 | ||||
-rw-r--r-- | gdb/testsuite/gdb.mi/array.f90 | 21 | ||||
-rw-r--r-- | gdb/testsuite/gdb.mi/mi-var-child-f.exp | 4 |
4 files changed, 29 insertions, 22 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 9168a6a..ba11a4d 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2021-06-11 Felix Willgerodt <felix.willgerodt@intel.com> + + * 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 <tom@tromey.com> PR rust/23427 diff --git a/gdb/testsuite/gdb.mi/array.f b/gdb/testsuite/gdb.mi/array.f deleted file mode 100644 index 2d31eca..0000000 --- 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 <http://www.gnu.org/licenses/>. - - 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 0000000..b414b27 --- /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 <http://www.gnu.org/licenses/>. + +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 272505a..f35c0cd 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" |