[PATCH] gdb/fortran: Allow Flang MAIN_ in Fortran testing

Andrew Burgess andrew.burgess@embecosm.com
Fri Apr 24 10:17:52 GMT 2020


Hi,

Thanks for look at this.

* Sharma, Alok Kumar <AlokKumar.Sharma@amd.com> [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 <AlokKumar.Sharma@amd.com>
> 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  <alokkumar.sharma@amd.com>
> +
> +	* 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  <tdevries@suse.de>
>  
>  	* 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 <http://www.gnu.org/licenses/>.
>  
>  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 <jan.kratochvil@redhat.com>.
>  
>  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 <http://www.gnu.org/licenses/>.
>  
>  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 <http://www.gnu.org/licenses/>.
>  
>  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 <http://www.gnu.org/licenses/>.
>  
>  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 <http://www.gnu.org/licenses/>.
>  
>  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 <http://www.gnu.org/licenses/>.
>  
>  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 <http://www.gnu.org/licenses/>.
>  
>  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 <http://www.gnu.org/licenses/>.
>  
>  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



More information about the Gdb-patches mailing list