Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Simon Marchi via Gdb-patches <gdb-patches@sourceware.org>
To: "Willgerodt, Felix" <felix.willgerodt@intel.com>,
	"gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
Subject: Re: [PING**3] [PATCH] gdb, testsuite: Fix mi-var-child-f.exp for Intel compilers.
Date: Fri, 11 Jun 2021 10:10:22 -0400	[thread overview]
Message-ID: <10d61e20-856a-76f6-ea43-1293496286ba@polymtl.ca> (raw)
In-Reply-To: <ddb928e415db4b228d1b3c1a6be7f0c7@intel.com>

Andrew, do you have an opinion on this?

Simon

On 2021-06-11 8:51 a.m., Willgerodt, Felix via Gdb-patches wrote:
> *Ping*
> 
> Regards,
> Felix
> 
> -----Original Message-----
> From: Willgerodt, Felix 
> Sent: Mittwoch, 2. Juni 2021 09:24
> To: gdb-patches@sourceware.org
> Subject: RE: [PING**2] [PATCH] gdb, testsuite: Fix mi-var-child-f.exp for Intel compilers.
> 
> *Ping*
> 
> Keith Seitz is in favour of this but can't approve.
> 
> Regards,
> Felix
> 
> -----Original Message-----
> From: Willgerodt, Felix
> Sent: Freitag, 21. Mai 2021 08:52
> To: gdb-patches@sourceware.org
> Subject: [Ping] [PATCH] gdb, testsuite: Fix mi-var-child-f.exp for Intel compilers.
> 
> Kindly pinging!
> 
> Felix
> 
> -----Original Message-----
> From: Willgerodt, Felix <felix.willgerodt@intel.com>
> Sent: Freitag, 7. Mai 2021 09:33
> To: Willgerodt, Felix <felix.willgerodt@intel.com>; gdb-patches@sourceware.org
> 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-05-06  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.
> ---
>  gdb/testsuite/gdb.mi/array.f            | 20 --------------------
>  gdb/testsuite/gdb.mi/array.f90          | 21 +++++++++++++++++++++
>  gdb/testsuite/gdb.mi/mi-var-child-f.exp |  4 ++--
>  3 files changed, 23 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/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 <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 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 <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 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.25.4
> 
> Intel Deutschland GmbH
> Registered Address: Am Campeon 10, 85579 Neubiberg, Germany
> Tel: +49 89 99 8853-0, www.intel.de <http://www.intel.de>
> Managing Directors: Christin Eisenschmid, Sharon Heck, Tiffany Doon Silva  
> Chairperson of the Supervisory Board: Nicole Lau
> Registered Office: Munich
> Commercial Register: Amtsgericht Muenchen HRB 186928
> 

  reply	other threads:[~2021-06-11 14:10 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-11 12:51 Willgerodt, Felix via Gdb-patches
2021-06-11 14:10 ` Simon Marchi via Gdb-patches [this message]
2021-06-11 14:41 ` Andrew Burgess
2021-06-11 15:20   ` Willgerodt, Felix via Gdb-patches

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=10d61e20-856a-76f6-ea43-1293496286ba@polymtl.ca \
    --to=gdb-patches@sourceware.org \
    --cc=felix.willgerodt@intel.com \
    --cc=simon.marchi@polymtl.ca \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox