Hi Andrew, Thanks a lot for your review comments. I have incorporated your comments in updated patch attached. Below are the details. - Removed unrelated changes in gdb/testsuite/gdb.dwarf2/dw2-common-block.exp, Will upload as separate patch. - Overridden runto_main in lib/fortran.exp to handle fortran main. - updated gdb/testsuite/Changelog accordingly. gdb/testsuite/ChangeLog * lib/fortran.exp (fortran_main): New Proc, handle flang MAIN_, proc runto_main is overloaded to handle fortran main function. * gdb.fortran/array-bounds-high.exp: Handle flang MAIN_. * gdb.fortran/array-bounds.exp: Likewise. * gdb.fortran/array-slices.exp: Likewise. * gdb.fortran/block-data.exp: Likewise. * gdb.fortran/charset.exp: Likewise. * gdb.fortran/common-block.exp: Likewise. * gdb.fortran/complex.exp: Likewise. * gdb.fortran/derived-type-function.exp: Likewise. * gdb.fortran/derived-type.exp: Likewise. * gdb.fortran/info-modules.exp: Likewise. * gdb.fortran/info-types.exp: Likewise. * gdb.fortran/intrinsics.exp: Likewise. * gdb.fortran/library-module.exp: Likewise. * gdb.fortran/logical.exp: Likewise. * gdb.fortran/max-depth.exp: Likewise. * gdb.fortran/module.exp: Likewise. * gdb.fortran/multi-dim.exp: Likewise. * gdb.fortran/nested-funcs.exp: Likewise. * gdb.fortran/print-formatted.exp: Likewise. * gdb.fortran/printing-types.exp: Likewise. * gdb.fortran/ptr-indentation.exp: Likewise. * gdb.fortran/ptype-on-functions.exp: Likewise. * gdb.fortran/subarray.exp: Likewise. * gdb.fortran/vla-alloc-assoc.exp: Likewise. * gdb.fortran/vla-history.exp: Likewise. * gdb.fortran/vla-ptr-info.exp: Likewise. * gdb.fortran/vla-sizeof.exp: Likewise. * gdb.fortran/vla-value-sub-arbitrary.exp: Likewise. * gdb.fortran/vla-value-sub-finish.exp: Likewise. * gdb.fortran/vla-value-sub.exp: Likewise. * gdb.fortran/vla-value.exp: Likewise. * gdb.fortran/whatis_type.exp: Likewise. * gdb.mi/mi-var-child-f.exp: Likewise. Please let me know any further comments. Regards, Alok -----Original Message----- From: Andrew Burgess Sent: Friday, April 24, 2020 3:48 PM To: Sharma, Alok Kumar Cc: gdb-patches@sourceware.org; George, Jini Susan ; Achra, Nitika Subject: Re: [PATCH] gdb/fortran: Allow Flang MAIN_ in Fortran testing [CAUTION: External Email] Hi, Thanks for look at this. * Sharma, Alok Kumar [2020-04-24 09:44:18 +0000]: > [AMD Official Use Only - Internal Distribution Only] You may want to figure out how to disable this for external mail. > > Hi all, > > I request you all to please review this patch. Below are the details. > > Problem Description: > > Name of fortran main function for Flang compiler is MAIN_ while for > gfortran it is MAIN__ . In test cases MAIN__ is hardcoded for the > purpose of inserting breakpoint. > (please note the number of underscores after MAIN) > > Resolution: > > New proc is added to detect main function name depending on the > compiler used. Which is used in testcases. > > This commit adds support for Flang main function, there should be no > change for gfortran. > > gdb/testsuite/ChangeLog > > * gdb.dwarf2/dw2-common-block.exp: Skip test except for gfortran, > as assembly file to be tested is generated by gfortran. > * lib/fortran.exp (fortran_main): New Proc, handle flang MAIN_. > * gdb.fortran/array-bounds-high.exp: Handle flang MAIN_ > * gdb.fortran/array-bounds.exp: Likewise. > * gdb.fortran/array-slices.exp: Likewise. > * gdb.fortran/block-data.exp: Likewise. > * gdb.fortran/charset.exp: Likewise. > * gdb.fortran/common-block.exp: Likewise. > * gdb.fortran/complex.exp: Likewise. > * gdb.fortran/derived-type-function.exp: Likewise. > * gdb.fortran/derived-type.exp: Likewise. > * gdb.fortran/info-modules.exp: Likewise. > * gdb.fortran/info-types.exp: Likewise. > * gdb.fortran/intrinsics.exp: Likewise. > * gdb.fortran/library-module.exp: Likewise. > * gdb.fortran/logical.exp: Likewise. > * gdb.fortran/max-depth.exp: Likewise. > * gdb.fortran/module.exp: Likewise. > * gdb.fortran/multi-dim.exp: Likewise. > * gdb.fortran/nested-funcs.exp: Likewise. > * gdb.fortran/print-formatted.exp: Likewise. > * gdb.fortran/print_type.exp: Likewise. > * gdb.fortran/printing-types.exp: Likewise. > * gdb.fortran/ptr-indentation.exp: Likewise. > * gdb.fortran/ptype-on-functions.exp: Likewise. > * gdb.fortran/subarray.exp: Likewise. > * gdb.fortran/vla-alloc-assoc.exp: Likewise. > * gdb.fortran/vla-datatypes.exp: Likewise. > * gdb.fortran/vla-history.exp: Likewise. > * gdb.fortran/vla-ptr-info.exp: Likewise. > * gdb.fortran/vla-ptype-sub.exp: Likewise. > * gdb.fortran/vla-ptype.exp: Likewise. > * gdb.fortran/vla-sizeof.exp: Likewise. > * gdb.fortran/vla-type.exp: Likewise. > * gdb.fortran/vla-value-sub-arbitrary.exp: Likewise. > * gdb.fortran/vla-value-sub-finish.exp: Likewise. > * gdb.fortran/vla-value-sub.exp: Likewise. > * gdb.fortran/vla-value.exp: Likewise. > * gdb.fortran/whatis_type.exp: Likewise. > * gdb.mi/mi-var-child-f.exp: Likewise. > > Please let me know your comments. > > Regards, > Alok > From 7c1667f2e074dc1e0d9a0336d9ec07da59124a72 Mon Sep 17 00:00:00 2001 > From: Alok Kumar Sharma > Date: Fri, 24 Apr 2020 14:46:09 +0530 > Subject: [PATCH] gdb/fortran: Allow Flang MAIN_ in Fortran testing > > Name of fortran main function for Flang compiler is MAIN_ while for > gfortran it is MAIN__ . In test cases MAIN__ is hardcoded for the > purpose of inserting breakpoint. > > New proc is added to detect main function name depending on the > compiler used. Which is used in testcases. > > This commit adds support for Flang main function, there should be no > change for gfortran. > > gdb/testsuite/ChangeLog > > * gdb.dwarf2/dw2-common-block.exp: Skip test except for gfortran, > as assembly file to be tested is generated by gfortran. > * lib/fortran.exp (fortran_main): New Proc, handle flang MAIN_. > * gdb.fortran/array-bounds-high.exp: Handle flang MAIN_ > * gdb.fortran/array-bounds.exp: Likewise. > * gdb.fortran/array-slices.exp: Likewise. > * gdb.fortran/block-data.exp: Likewise. > * gdb.fortran/charset.exp: Likewise. > * gdb.fortran/common-block.exp: Likewise. > * gdb.fortran/complex.exp: Likewise. > * gdb.fortran/derived-type-function.exp: Likewise. > * gdb.fortran/derived-type.exp: Likewise. > * gdb.fortran/info-modules.exp: Likewise. > * gdb.fortran/info-types.exp: Likewise. > * gdb.fortran/intrinsics.exp: Likewise. > * gdb.fortran/library-module.exp: Likewise. > * gdb.fortran/logical.exp: Likewise. > * gdb.fortran/max-depth.exp: Likewise. > * gdb.fortran/module.exp: Likewise. > * gdb.fortran/multi-dim.exp: Likewise. > * gdb.fortran/nested-funcs.exp: Likewise. > * gdb.fortran/print-formatted.exp: Likewise. > * gdb.fortran/print_type.exp: Likewise. > * gdb.fortran/printing-types.exp: Likewise. > * gdb.fortran/ptr-indentation.exp: Likewise. > * gdb.fortran/ptype-on-functions.exp: Likewise. > * gdb.fortran/subarray.exp: Likewise. > * gdb.fortran/vla-alloc-assoc.exp: Likewise. > * gdb.fortran/vla-datatypes.exp: Likewise. > * gdb.fortran/vla-history.exp: Likewise. > * gdb.fortran/vla-ptr-info.exp: Likewise. > * gdb.fortran/vla-ptype-sub.exp: Likewise. > * gdb.fortran/vla-ptype.exp: Likewise. > * gdb.fortran/vla-sizeof.exp: Likewise. > * gdb.fortran/vla-type.exp: Likewise. > * gdb.fortran/vla-value-sub-arbitrary.exp: Likewise. > * gdb.fortran/vla-value-sub-finish.exp: Likewise. > * gdb.fortran/vla-value-sub.exp: Likewise. > * gdb.fortran/vla-value.exp: Likewise. > * gdb.fortran/whatis_type.exp: Likewise. > * gdb.mi/mi-var-child-f.exp: Likewise. > > Change-Id: I0a30f5dad684879b416f71d3d08c385c159325bf > --- > gdb/testsuite/ChangeLog | 44 +++++++++++++++++++ > gdb/testsuite/gdb.dwarf2/dw2-common-block.exp | 6 +++ > .../gdb.fortran/array-bounds-high.exp | 5 ++- > gdb/testsuite/gdb.fortran/array-bounds.exp | 5 ++- > gdb/testsuite/gdb.fortran/array-slices.exp | 3 +- > gdb/testsuite/gdb.fortran/block-data.exp | 4 +- > gdb/testsuite/gdb.fortran/charset.exp | 6 ++- > gdb/testsuite/gdb.fortran/common-block.exp | 4 +- > gdb/testsuite/gdb.fortran/complex.exp | 5 ++- > .../gdb.fortran/derived-type-function.exp | 5 ++- > gdb/testsuite/gdb.fortran/derived-type.exp | 4 +- > gdb/testsuite/gdb.fortran/info-modules.exp | 4 +- > gdb/testsuite/gdb.fortran/info-types.exp | 4 +- > gdb/testsuite/gdb.fortran/intrinsics.exp | 4 +- > gdb/testsuite/gdb.fortran/library-module.exp | 5 ++- > gdb/testsuite/gdb.fortran/logical.exp | 5 ++- > gdb/testsuite/gdb.fortran/max-depth.exp | 4 +- > gdb/testsuite/gdb.fortran/module.exp | 6 +-- > gdb/testsuite/gdb.fortran/multi-dim.exp | 4 +- > gdb/testsuite/gdb.fortran/nested-funcs.exp | 4 +- > gdb/testsuite/gdb.fortran/print-formatted.exp | 4 +- > gdb/testsuite/gdb.fortran/print_type.exp | 2 +- > gdb/testsuite/gdb.fortran/printing-types.exp | 5 ++- > gdb/testsuite/gdb.fortran/ptr-indentation.exp | 4 +- > .../gdb.fortran/ptype-on-functions.exp | 4 +- > gdb/testsuite/gdb.fortran/subarray.exp | 5 ++- > gdb/testsuite/gdb.fortran/vla-alloc-assoc.exp | 3 +- > gdb/testsuite/gdb.fortran/vla-datatypes.exp | 2 +- > gdb/testsuite/gdb.fortran/vla-history.exp | 3 +- > gdb/testsuite/gdb.fortran/vla-ptr-info.exp | 3 +- > gdb/testsuite/gdb.fortran/vla-ptype-sub.exp | 2 +- > gdb/testsuite/gdb.fortran/vla-ptype.exp | 2 +- > gdb/testsuite/gdb.fortran/vla-sizeof.exp | 3 +- > gdb/testsuite/gdb.fortran/vla-type.exp | 2 +- > .../gdb.fortran/vla-value-sub-arbitrary.exp | 3 +- > .../gdb.fortran/vla-value-sub-finish.exp | 3 +- > gdb/testsuite/gdb.fortran/vla-value-sub.exp | 3 +- > gdb/testsuite/gdb.fortran/vla-value.exp | 6 +-- > gdb/testsuite/gdb.fortran/whatis_type.exp | 4 +- > gdb/testsuite/gdb.mi/mi-var-child-f.exp | 2 +- > gdb/testsuite/lib/fortran.exp | 16 +++++++ > 41 files changed, 148 insertions(+), 64 deletions(-) > > diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index > 10683db566..e972f97fad 100644 > --- a/gdb/testsuite/ChangeLog > +++ b/gdb/testsuite/ChangeLog > @@ -1,3 +1,47 @@ > +2020-04-24 Alok Kumar Sharma > + > + * gdb.dwarf2/dw2-common-block.exp: Skip test except for gfortran, > + as assembly file to be tested is generated by gfortran. > + * lib/fortran.exp (fortran_main): New Proc, handle flang MAIN_. > + * gdb.fortran/array-bounds-high.exp: Handle flang MAIN_ > + * gdb.fortran/array-bounds.exp: Likewise. > + * gdb.fortran/array-slices.exp: Likewise. > + * gdb.fortran/block-data.exp: Likewise. > + * gdb.fortran/charset.exp: Likewise. > + * gdb.fortran/common-block.exp: Likewise. > + * gdb.fortran/complex.exp: Likewise. > + * gdb.fortran/derived-type-function.exp: Likewise. > + * gdb.fortran/derived-type.exp: Likewise. > + * gdb.fortran/info-modules.exp: Likewise. > + * gdb.fortran/info-types.exp: Likewise. > + * gdb.fortran/intrinsics.exp: Likewise. > + * gdb.fortran/library-module.exp: Likewise. > + * gdb.fortran/logical.exp: Likewise. > + * gdb.fortran/max-depth.exp: Likewise. > + * gdb.fortran/module.exp: Likewise. > + * gdb.fortran/multi-dim.exp: Likewise. > + * gdb.fortran/nested-funcs.exp: Likewise. > + * gdb.fortran/print-formatted.exp: Likewise. > + * gdb.fortran/print_type.exp: Likewise. > + * gdb.fortran/printing-types.exp: Likewise. > + * gdb.fortran/ptr-indentation.exp: Likewise. > + * gdb.fortran/ptype-on-functions.exp: Likewise. > + * gdb.fortran/subarray.exp: Likewise. > + * gdb.fortran/vla-alloc-assoc.exp: Likewise. > + * gdb.fortran/vla-datatypes.exp: Likewise. > + * gdb.fortran/vla-history.exp: Likewise. > + * gdb.fortran/vla-ptr-info.exp: Likewise. > + * gdb.fortran/vla-ptype-sub.exp: Likewise. > + * gdb.fortran/vla-ptype.exp: Likewise. > + * gdb.fortran/vla-sizeof.exp: Likewise. > + * gdb.fortran/vla-type.exp: Likewise. > + * gdb.fortran/vla-value-sub-arbitrary.exp: Likewise. > + * gdb.fortran/vla-value-sub-finish.exp: Likewise. > + * gdb.fortran/vla-value-sub.exp: Likewise. > + * gdb.fortran/vla-value.exp: Likewise. > + * gdb.fortran/whatis_type.exp: Likewise. > + * gdb.mi/mi-var-child-f.exp: Likewise. > + > 2020-04-23 Tom de Vries > > * gdb.base/decl-before-def.exp: Run to main and print a again. > diff --git a/gdb/testsuite/gdb.dwarf2/dw2-common-block.exp > b/gdb/testsuite/gdb.dwarf2/dw2-common-block.exp > index 9bcf06b17f..cf41c6833f 100644 > --- a/gdb/testsuite/gdb.dwarf2/dw2-common-block.exp > +++ b/gdb/testsuite/gdb.dwarf2/dw2-common-block.exp > @@ -30,6 +30,12 @@ if {[skip_fortran_tests]} { > return 0 > } > > +# Assembly file is generated using gfortran. > +# skip running for other compilers. > +if {![test_compiler_info {gcc-*}]} { > + return 0 > +} I don't think this change relates to the name of the main function, right? So it should be split into a separate patch. > + > standard_testfile .S > > if { [prepare_for_testing "failed to prepare" "${testfile}" $srcfile > \ diff --git a/gdb/testsuite/gdb.fortran/array-bounds-high.exp > b/gdb/testsuite/gdb.fortran/array-bounds-high.exp > index 81e2f87b89..f1945b4112 100644 > --- a/gdb/testsuite/gdb.fortran/array-bounds-high.exp > +++ b/gdb/testsuite/gdb.fortran/array-bounds-high.exp > @@ -20,13 +20,14 @@ if { [skip_fortran_tests] } { return -1 } > > set testfile "array-bounds-high" > standard_testfile .f90 > +load_lib fortran.exp > > if {[prepare_for_testing $testfile.exp $testfile $srcfile {f90 debug}]} { > return -1 > } > > -if {![runto MAIN__]} { > - perror "Could not run to breakpoint `MAIN__'." > +if {![runto $fmain]} { > + perror "Could not run to breakpoint `$fmain'." > continue > } > > diff --git a/gdb/testsuite/gdb.fortran/array-bounds.exp > b/gdb/testsuite/gdb.fortran/array-bounds.exp > index 12bf5c2db3..be28ff6da9 100644 > --- a/gdb/testsuite/gdb.fortran/array-bounds.exp > +++ b/gdb/testsuite/gdb.fortran/array-bounds.exp > @@ -20,13 +20,14 @@ if { [skip_fortran_tests] } { return -1 } > > set testfile "array-bounds" > standard_testfile .f90 > +load_lib fortran.exp > > if {[prepare_for_testing $testfile.exp $testfile $srcfile {f90 debug}]} { > return -1 > } > > -if {![runto MAIN__]} { > - perror "Could not run to breakpoint `MAIN__'." > +if {![runto $fmain]} { > + perror "Could not run to breakpoint `$fmain'." > continue > } > > diff --git a/gdb/testsuite/gdb.fortran/array-slices.exp > b/gdb/testsuite/gdb.fortran/array-slices.exp > index 11997f926a..e91db62aa1 100644 > --- a/gdb/testsuite/gdb.fortran/array-slices.exp > +++ b/gdb/testsuite/gdb.fortran/array-slices.exp > @@ -21,13 +21,14 @@ > if {[skip_fortran_tests]} { return -1 } > > standard_testfile ".f90" > +load_lib fortran.exp > > if {[prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} \ > {debug f90}]} { > return -1 > } > > -if ![runto_main] { > +if ![runto $fmain] { Out of interest, how is this test even passing on gFortran? runto_main should place a breakpoint on 'main', and I can't see any obvious special case handling for Fortran. And my main thought is that what we should do is override runto_main in lib/fortran.exp, and then switch all of the test over to using that instead, this would be more consistent with how the C/C++ tests work then. Thanks, Andrew > untested "could not run to main" > return -1 > } > diff --git a/gdb/testsuite/gdb.fortran/block-data.exp > b/gdb/testsuite/gdb.fortran/block-data.exp > index 292afe6c16..520f0d5d28 100644 > --- a/gdb/testsuite/gdb.fortran/block-data.exp > +++ b/gdb/testsuite/gdb.fortran/block-data.exp > @@ -30,8 +30,8 @@ if {[prepare_for_testing $testfile.exp $testfile $srcfile {debug f90}]} { > return -1 > } > > -if ![runto MAIN__] then { > - untested "couldn't run to breakpoint MAIN__" > +if ![runto $fmain] then { > + untested "couldn't run to breakpoint $fmain" > return -1 > } > > diff --git a/gdb/testsuite/gdb.fortran/charset.exp > b/gdb/testsuite/gdb.fortran/charset.exp > index f0f62f8490..11ab9dfdf0 100644 > --- a/gdb/testsuite/gdb.fortran/charset.exp > +++ b/gdb/testsuite/gdb.fortran/charset.exp > @@ -19,12 +19,14 @@ > if { [skip_fortran_tests] } { return -1 } > > standard_testfile .f90 > +load_lib fortran.exp > + > if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} {debug additional_flags=-fbackslash f90}] } { > return -1 > } > > -if ![runto MAIN__] { > - perror "Couldn't run to MAIN__" > +if ![runto $fmain] { > + perror "Couldn't run to $fmain" > continue > } > > diff --git a/gdb/testsuite/gdb.fortran/common-block.exp > b/gdb/testsuite/gdb.fortran/common-block.exp > index 19c1af0d81..2b74a18e75 100644 > --- a/gdb/testsuite/gdb.fortran/common-block.exp > +++ b/gdb/testsuite/gdb.fortran/common-block.exp > @@ -27,8 +27,8 @@ if {[prepare_for_testing "failed to prepare" ${testfile} \ > return -1 > } > > -if ![runto MAIN__] then { > - perror "couldn't run to breakpoint MAIN__" > +if ![runto $fmain] then { > + perror "couldn't run to breakpoint $fmain" > continue > } > > diff --git a/gdb/testsuite/gdb.fortran/complex.exp > b/gdb/testsuite/gdb.fortran/complex.exp > index c092ab29f1..8ac81c1fcb 100644 > --- a/gdb/testsuite/gdb.fortran/complex.exp > +++ b/gdb/testsuite/gdb.fortran/complex.exp > @@ -14,13 +14,14 @@ > # along with this program. If not, see . > > standard_testfile .f90 > +load_lib fortran.exp > > if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug f90 quiet}]} { > return -1 > } > > -if ![runto MAIN__] then { > - perror "Couldn't run to MAIN__" > +if ![runto $fmain] then { > + perror "Couldn't run to $fmain" > continue > } > > diff --git a/gdb/testsuite/gdb.fortran/derived-type-function.exp > b/gdb/testsuite/gdb.fortran/derived-type-function.exp > index 1f0f957317..8a298f5f7b 100644 > --- a/gdb/testsuite/gdb.fortran/derived-type-function.exp > +++ b/gdb/testsuite/gdb.fortran/derived-type-function.exp > @@ -21,13 +21,14 @@ > if { [skip_fortran_tests] } { return -1 } > > standard_testfile .f90 > +load_lib fortran.exp > > if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug f90}]} { > return -1 > } > > -if ![runto MAIN__] then { > - perror "couldn't run to breakpoint MAIN__" > +if ![runto $fmain] then { > + perror "couldn't run to breakpoint $fmain" > continue > } > > diff --git a/gdb/testsuite/gdb.fortran/derived-type.exp > b/gdb/testsuite/gdb.fortran/derived-type.exp > index f1705bffd8..eddd985e59 100644 > --- a/gdb/testsuite/gdb.fortran/derived-type.exp > +++ b/gdb/testsuite/gdb.fortran/derived-type.exp > @@ -27,8 +27,8 @@ if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug f90}]} { > return -1 > } > > -if ![runto MAIN__] then { > - perror "couldn't run to breakpoint MAIN__" > +if ![runto $fmain] then { > + perror "couldn't run to breakpoint $fmain" > continue > } > > diff --git a/gdb/testsuite/gdb.fortran/info-modules.exp > b/gdb/testsuite/gdb.fortran/info-modules.exp > index 0c3c6a58e1..9967803dcc 100644 > --- a/gdb/testsuite/gdb.fortran/info-modules.exp > +++ b/gdb/testsuite/gdb.fortran/info-modules.exp > @@ -28,8 +28,8 @@ if { [prepare_for_testing "failed to prepare" $testfile \ > return -1 > } > > -if { ![runto MAIN__] } { > - perror "Could not run to breakpoint `MAIN__'." > +if { ![runto $fmain] } { > + perror "Could not run to breakpoint `$fmain'." > continue > } > > diff --git a/gdb/testsuite/gdb.fortran/info-types.exp > b/gdb/testsuite/gdb.fortran/info-types.exp > index 2138937782..7f58740ed8 100644 > --- a/gdb/testsuite/gdb.fortran/info-types.exp > +++ b/gdb/testsuite/gdb.fortran/info-types.exp > @@ -27,8 +27,8 @@ if { [prepare_for_testing "failed to prepare" $testfile \ > return -1 > } > > -if { ![runto MAIN__] } { > - perror "Could not run to breakpoint `MAIN__'." > +if { ![runto $fmain] } { > + perror "Could not run to breakpoint `$fmain'." > continue > } > > diff --git a/gdb/testsuite/gdb.fortran/intrinsics.exp > b/gdb/testsuite/gdb.fortran/intrinsics.exp > index 504bce4138..dca2d98cf4 100644 > --- a/gdb/testsuite/gdb.fortran/intrinsics.exp > +++ b/gdb/testsuite/gdb.fortran/intrinsics.exp > @@ -25,8 +25,8 @@ if { [prepare_for_testing "failed to prepare" $testfile $srcfile {debug f90}] } > return -1 > } > > -if { ![runto MAIN__] } { > - perror "Could not run to breakpoint `MAIN__'." > +if { ![runto $fmain] } { > + perror "Could not run to breakpoint `$fmain'." > continue > } > > diff --git a/gdb/testsuite/gdb.fortran/library-module.exp > b/gdb/testsuite/gdb.fortran/library-module.exp > index f25988e32c..eb26551f4d 100644 > --- a/gdb/testsuite/gdb.fortran/library-module.exp > +++ b/gdb/testsuite/gdb.fortran/library-module.exp > @@ -40,9 +40,10 @@ if { [gdb_compile $srcdir/$subdir/$srcfile > $binfile executable [list debug f90 clean_restart $testfile > > gdb_load_shlib $libfile > +load_lib fortran.exp > > -if ![runto MAIN__] then { > - perror "couldn't run to breakpoint MAIN__" > +if ![runto $fmain] then { > + perror "couldn't run to breakpoint $fmain" > continue > } > > diff --git a/gdb/testsuite/gdb.fortran/logical.exp > b/gdb/testsuite/gdb.fortran/logical.exp > index 324714fa49..ef5954aaf9 100644 > --- a/gdb/testsuite/gdb.fortran/logical.exp > +++ b/gdb/testsuite/gdb.fortran/logical.exp > @@ -16,13 +16,14 @@ > # This file was written by Jan Kratochvil . > > standard_testfile .f90 > +load_lib fortran.exp > > if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug f90 quiet}]} { > return -1 > } > > -if { ![runto MAIN__] } { > - perror "Could not run to breakpoint `MAIN__'." > +if { ![runto $fmain] } { > + perror "Could not run to breakpoint `$fmain'." > continue > } > > diff --git a/gdb/testsuite/gdb.fortran/max-depth.exp > b/gdb/testsuite/gdb.fortran/max-depth.exp > index 262d0fdfa1..52b5a24b98 100644 > --- a/gdb/testsuite/gdb.fortran/max-depth.exp > +++ b/gdb/testsuite/gdb.fortran/max-depth.exp > @@ -26,8 +26,8 @@ if { [prepare_for_testing "failed to prepare" $testfile $srcfile {debug f90}] } > return -1 > } > > -if { ![runto MAIN__] } { > - perror "Could not run to breakpoint `MAIN__'." > +if { ![runto $fmain] } { > + perror "Could not run to breakpoint `$fmain'." > continue > } > > diff --git a/gdb/testsuite/gdb.fortran/module.exp > b/gdb/testsuite/gdb.fortran/module.exp > index 1c269e2fed..9f5c79fba2 100644 > --- a/gdb/testsuite/gdb.fortran/module.exp > +++ b/gdb/testsuite/gdb.fortran/module.exp > @@ -29,8 +29,8 @@ gdb_test "p modmany::var_i" " = 14" "stopped language detection" > > gdb_test "print mod1::var_const" " = 20" "fully qualified name of DW_TAG_constant" > > -if ![runto MAIN__] then { > - perror "couldn't run to breakpoint MAIN__" > +if ![runto $fmain] then { > + perror "couldn't run to breakpoint $fmain" > continue > } > > @@ -123,7 +123,7 @@ complete "modmany::var" $modmany_list # > Breakpoint would work in language "c". > gdb_test "show language" {The current source language is "(auto; > currently )?fortran".} > > -# gcc-4.4.2: The main program is always MAIN__ in .symtab so "runto" > above > +# gcc-4.4.2: The main program is always $fmain in .symtab so "runto" > +above > # works. But DWARF DW_TAG_subprogram contains the name specified by > # the "program" Fortran statement. > if [gdb_breakpoint "module"] { > diff --git a/gdb/testsuite/gdb.fortran/multi-dim.exp > b/gdb/testsuite/gdb.fortran/multi-dim.exp > index 05590914df..2567f166e2 100644 > --- a/gdb/testsuite/gdb.fortran/multi-dim.exp > +++ b/gdb/testsuite/gdb.fortran/multi-dim.exp > @@ -25,8 +25,8 @@ if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} {debug f90} > return -1 > } > > -if ![runto MAIN__] { > - perror "Couldn't run to MAIN__" > +if ![runto $fmain] { > + perror "Couldn't run to $fmain" > continue > } > > diff --git a/gdb/testsuite/gdb.fortran/nested-funcs.exp > b/gdb/testsuite/gdb.fortran/nested-funcs.exp > index e4fc02ffa5..b68227cb5a 100755 > --- a/gdb/testsuite/gdb.fortran/nested-funcs.exp > +++ b/gdb/testsuite/gdb.fortran/nested-funcs.exp > @@ -25,8 +25,8 @@ if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug f90}]} { > return -1 > } > > -if ![runto MAIN__] then { > - perror "couldn't run to breakpoint MAIN__" > +if ![runto $fmain] then { > + perror "couldn't run to breakpoint $fmain" > continue > } > > diff --git a/gdb/testsuite/gdb.fortran/print-formatted.exp > b/gdb/testsuite/gdb.fortran/print-formatted.exp > index 8c6529ce7f..cd12c6b3c4 100644 > --- a/gdb/testsuite/gdb.fortran/print-formatted.exp > +++ b/gdb/testsuite/gdb.fortran/print-formatted.exp > @@ -25,8 +25,8 @@ if { [prepare_for_testing "failed to prepare" $testfile $srcfile {debug f90}] } > return -1 > } > > -if { ![runto MAIN__] } { > - fail "runto MAIN__" > +if { ![runto $fmain] } { > + fail "runto $fmain" > return -1 > } > > diff --git a/gdb/testsuite/gdb.fortran/print_type.exp > b/gdb/testsuite/gdb.fortran/print_type.exp > index 7d5915390d..615c2be226 100755 > --- a/gdb/testsuite/gdb.fortran/print_type.exp > +++ b/gdb/testsuite/gdb.fortran/print_type.exp > @@ -24,7 +24,7 @@ if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} \ > return -1 > } > > -if ![runto_main] { > +if ![runto $fmain] { > untested "could not run to main" > return -1 > } > diff --git a/gdb/testsuite/gdb.fortran/printing-types.exp > b/gdb/testsuite/gdb.fortran/printing-types.exp > index 2c88f9e003..206cccd19b 100644 > --- a/gdb/testsuite/gdb.fortran/printing-types.exp > +++ b/gdb/testsuite/gdb.fortran/printing-types.exp > @@ -16,13 +16,14 @@ > if {[skip_fortran_tests]} { return -1 } > > standard_testfile .f90 > +load_lib fortran.exp > > if {[prepare_for_testing $testfile.exp $testfile $srcfile {debug f90}]} { > return -1 > } > > -if {![runto MAIN__]} then { > - untested "could not run to breakpoint MAIN__" > +if {![runto $fmain]} then { > + untested "could not run to breakpoint $fmain" > return -1 > } > > diff --git a/gdb/testsuite/gdb.fortran/ptr-indentation.exp > b/gdb/testsuite/gdb.fortran/ptr-indentation.exp > index 285e24e2cc..bffd4983f0 100644 > --- a/gdb/testsuite/gdb.fortran/ptr-indentation.exp > +++ b/gdb/testsuite/gdb.fortran/ptr-indentation.exp > @@ -22,8 +22,8 @@ if {[prepare_for_testing $testfile.exp $testfile $srcfile {debug f90}]} { > return -1 > } > > -if {![runto MAIN__]} then { > - untested "couldn't run to breakpoint MAIN__" > +if {![runto $fmain]} then { > + untested "couldn't run to breakpoint $fmain" > return -1 > } > > diff --git a/gdb/testsuite/gdb.fortran/ptype-on-functions.exp > b/gdb/testsuite/gdb.fortran/ptype-on-functions.exp > index d91e4bd48e..bf1f5d8637 100644 > --- a/gdb/testsuite/gdb.fortran/ptype-on-functions.exp > +++ b/gdb/testsuite/gdb.fortran/ptype-on-functions.exp > @@ -24,8 +24,8 @@ if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug f90}]} { > return -1 > } > > -if ![runto MAIN__] then { > - perror "couldn't run to breakpoint MAIN__" > +if ![runto $fmain] then { > + perror "couldn't run to breakpoint $fmain" > continue > } > > diff --git a/gdb/testsuite/gdb.fortran/subarray.exp > b/gdb/testsuite/gdb.fortran/subarray.exp > index 5e3e8c38cb..c8aa5fe829 100644 > --- a/gdb/testsuite/gdb.fortran/subarray.exp > +++ b/gdb/testsuite/gdb.fortran/subarray.exp > @@ -21,6 +21,7 @@ > if { [skip_fortran_tests] } { return -1 } > > standard_testfile .f > +load_lib fortran.exp > > if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug f90}]} { > return -1 > @@ -31,8 +32,8 @@ gdb_start > gdb_reinitialize_dir $srcdir/$subdir > gdb_load ${binfile} > > -if ![runto MAIN__] then { > - perror "couldn't run to breakpoint MAIN__" > +if ![runto $fmain] then { > + perror "couldn't run to breakpoint $fmain" > continue > } > > diff --git a/gdb/testsuite/gdb.fortran/vla-alloc-assoc.exp > b/gdb/testsuite/gdb.fortran/vla-alloc-assoc.exp > index 5d8585c2ee..ba1ee8e58c 100644 > --- a/gdb/testsuite/gdb.fortran/vla-alloc-assoc.exp > +++ b/gdb/testsuite/gdb.fortran/vla-alloc-assoc.exp > @@ -14,13 +14,14 @@ > # along with this program. If not, see . > > standard_testfile "vla.f90" > +load_lib fortran.exp > > if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \ > {debug f90 quiet}] } { > return -1 > } > > -if ![runto_main] { > +if ![runto $fmain] { > untested "could not run to main" > return -1 > } > diff --git a/gdb/testsuite/gdb.fortran/vla-datatypes.exp > b/gdb/testsuite/gdb.fortran/vla-datatypes.exp > index 2db9b3e110..b4c4b198c3 100644 > --- a/gdb/testsuite/gdb.fortran/vla-datatypes.exp > +++ b/gdb/testsuite/gdb.fortran/vla-datatypes.exp > @@ -24,7 +24,7 @@ if { [prepare_for_testing "failed to prepare" > ${testfile} ${srcfile} \ # check that all fortran standard datatypes > will be # handled correctly when using as VLA's > > -if ![runto_main] { > +if ![runto $fmain] { > untested "could not run to main" > return -1 > } > diff --git a/gdb/testsuite/gdb.fortran/vla-history.exp > b/gdb/testsuite/gdb.fortran/vla-history.exp > index 24bd945f4a..aa38d5288c 100644 > --- a/gdb/testsuite/gdb.fortran/vla-history.exp > +++ b/gdb/testsuite/gdb.fortran/vla-history.exp > @@ -14,13 +14,14 @@ > # along with this program. If not, see . > > standard_testfile "vla.f90" > +load_lib fortran.exp > > if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \ > {debug f90 quiet}] } { > return -1 > } > > -if ![runto_main] { > +if ![runto $fmain] { > untested "could not run to main" > return -1 > } > diff --git a/gdb/testsuite/gdb.fortran/vla-ptr-info.exp > b/gdb/testsuite/gdb.fortran/vla-ptr-info.exp > index 24c7b45840..1538f689e2 100644 > --- a/gdb/testsuite/gdb.fortran/vla-ptr-info.exp > +++ b/gdb/testsuite/gdb.fortran/vla-ptr-info.exp > @@ -14,13 +14,14 @@ > # along with this program. If not, see . > > standard_testfile "vla.f90" > +load_lib fortran.exp > > if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \ > {debug f90 quiet}] } { > return -1 > } > > -if ![runto_main] { > +if ![runto $fmain] { > untested "could not run to main" > return -1 > } > diff --git a/gdb/testsuite/gdb.fortran/vla-ptype-sub.exp > b/gdb/testsuite/gdb.fortran/vla-ptype-sub.exp > index 09909e74b0..90455601e4 100644 > --- a/gdb/testsuite/gdb.fortran/vla-ptype-sub.exp > +++ b/gdb/testsuite/gdb.fortran/vla-ptype-sub.exp > @@ -21,7 +21,7 @@ if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \ > return -1 > } > > -if ![runto_main] { > +if ![runto $fmain] { > untested "could not run to main" > return -1 > } > diff --git a/gdb/testsuite/gdb.fortran/vla-ptype.exp > b/gdb/testsuite/gdb.fortran/vla-ptype.exp > index 22b2005317..39d00a32c2 100644 > --- a/gdb/testsuite/gdb.fortran/vla-ptype.exp > +++ b/gdb/testsuite/gdb.fortran/vla-ptype.exp > @@ -21,7 +21,7 @@ if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \ > return -1 > } > > -if ![runto_main] { > +if ![runto $fmain] { > untested "could not run to main" > return -1 > } > diff --git a/gdb/testsuite/gdb.fortran/vla-sizeof.exp > b/gdb/testsuite/gdb.fortran/vla-sizeof.exp > index 8e7d36314e..c826d96eb9 100644 > --- a/gdb/testsuite/gdb.fortran/vla-sizeof.exp > +++ b/gdb/testsuite/gdb.fortran/vla-sizeof.exp > @@ -14,13 +14,14 @@ > # along with this program. If not, see . > > standard_testfile "vla.f90" > +load_lib fortran.exp > > if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \ > {debug f90 quiet}] } { > return -1 > } > > -if ![runto_main] { > +if ![runto $fmain] { > untested "could not run to main" > return -1 > } > diff --git a/gdb/testsuite/gdb.fortran/vla-type.exp > b/gdb/testsuite/gdb.fortran/vla-type.exp > index 6d885e7889..d9b66ff395 100755 > --- a/gdb/testsuite/gdb.fortran/vla-type.exp > +++ b/gdb/testsuite/gdb.fortran/vla-type.exp > @@ -21,7 +21,7 @@ if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \ > return -1 > } > > -if ![runto_main] { > +if ![runto $fmain] { > untested "could not run to main" > return -1 > } > diff --git a/gdb/testsuite/gdb.fortran/vla-value-sub-arbitrary.exp > b/gdb/testsuite/gdb.fortran/vla-value-sub-arbitrary.exp > index ab61dde06f..a18b4e4209 100644 > --- a/gdb/testsuite/gdb.fortran/vla-value-sub-arbitrary.exp > +++ b/gdb/testsuite/gdb.fortran/vla-value-sub-arbitrary.exp > @@ -14,13 +14,14 @@ > # along with this program. If not, see . > > standard_testfile "vla-sub.f90" > +load_lib fortran.exp > > if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \ > {debug f90 quiet}] } { > return -1 > } > > -if ![runto_main] { > +if ![runto $fmain] { > untested "could not run to main" > return -1 > } > diff --git a/gdb/testsuite/gdb.fortran/vla-value-sub-finish.exp > b/gdb/testsuite/gdb.fortran/vla-value-sub-finish.exp > index afd992cee4..a056fc2732 100644 > --- a/gdb/testsuite/gdb.fortran/vla-value-sub-finish.exp > +++ b/gdb/testsuite/gdb.fortran/vla-value-sub-finish.exp > @@ -14,13 +14,14 @@ > # along with this program. If not, see . > > standard_testfile "vla-sub.f90" > +load_lib fortran.exp > > if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \ > {debug f90 quiet}] } { > return -1 > } > > -if ![runto_main] { > +if ![runto $fmain] { > untested "could not run to main" > return -1 > } > diff --git a/gdb/testsuite/gdb.fortran/vla-value-sub.exp > b/gdb/testsuite/gdb.fortran/vla-value-sub.exp > index 3311f6befa..e0a42260a4 100644 > --- a/gdb/testsuite/gdb.fortran/vla-value-sub.exp > +++ b/gdb/testsuite/gdb.fortran/vla-value-sub.exp > @@ -14,13 +14,14 @@ > # along with this program. If not, see . > > standard_testfile "vla-sub.f90" > +load_lib fortran.exp > > if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \ > {debug f90 quiet}] } { > return -1 > } > > -if ![runto_main] { > +if ![runto $fmain] { > untested "could not run to main" > return -1 > } > diff --git a/gdb/testsuite/gdb.fortran/vla-value.exp > b/gdb/testsuite/gdb.fortran/vla-value.exp > index 5af17b570c..994a5a3e7a 100644 > --- a/gdb/testsuite/gdb.fortran/vla-value.exp > +++ b/gdb/testsuite/gdb.fortran/vla-value.exp > @@ -21,7 +21,7 @@ if { [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} \ > return -1 > } > > -if ![runto_main] { > +if ![runto $fmain] { > untested "could not run to main" > return -1 > } > @@ -129,8 +129,8 @@ gdb_test "print vla1(9, 9, 9)" "no such vector > element \\\(vector not allocated\ # Try to assign VLA to user > variable clean_restart ${testfile} > > -if ![runto MAIN__] then { > - perror "couldn't run to breakpoint MAIN__" > +if ![runto $fmain] then { > + perror "couldn't run to breakpoint $fmain" > continue > } > gdb_breakpoint [gdb_get_line_number "vla2-allocated"] diff --git > a/gdb/testsuite/gdb.fortran/whatis_type.exp > b/gdb/testsuite/gdb.fortran/whatis_type.exp > index 6a9cc0a81e..8a9a1eb79f 100644 > --- a/gdb/testsuite/gdb.fortran/whatis_type.exp > +++ b/gdb/testsuite/gdb.fortran/whatis_type.exp > @@ -23,8 +23,8 @@ if { [prepare_for_testing "failed to prepare" ${testfile} \ > return -1 > } > > -if ![runto MAIN__] { > - fail "run to MAIN__" > +if ![runto $fmain] { > + fail "run to $fmain" > return > } > > diff --git a/gdb/testsuite/gdb.mi/mi-var-child-f.exp > b/gdb/testsuite/gdb.mi/mi-var-child-f.exp > index 8cfffa7c08..363da0b7ed 100644 > --- a/gdb/testsuite/gdb.mi/mi-var-child-f.exp > +++ b/gdb/testsuite/gdb.mi/mi-var-child-f.exp > @@ -36,7 +36,7 @@ if {[gdb_compile "${srcdir}/${subdir}/${srcfile}" > "${binfile}" \ mi_gdb_reinitialize_dir $srcdir/$subdir mi_gdb_load > ${binfile} > > -mi_runto MAIN__ > +mi_runto $fmain > > mi_create_varobj "array" "array" "create local variable array" > > diff --git a/gdb/testsuite/lib/fortran.exp > b/gdb/testsuite/lib/fortran.exp index 549ed65790..0bd95504c8 100644 > --- a/gdb/testsuite/lib/fortran.exp > +++ b/gdb/testsuite/lib/fortran.exp > @@ -18,6 +18,8 @@ > # Auxiliary function to set the language to fortran. > # The result is 1 (true) for success, 0 (false) for failure. > > +global fmain > + > proc set_lang_fortran {} { > if [gdb_test_no_output "set language fortran"] { > return 0 > @@ -126,3 +128,17 @@ proc fortran_character1 {} { > return "unknown" > } > } > + > +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" > + } > +} > + > +set fmain [fortran_main] > -- > 2.17.1