public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Tom de Vries <tdevries@suse.de>
To: gdb-patches@sourceware.org
Subject: Re: [PATCH 03/11] [gdb/testsuite] Add test-case gdb.base/fission-macro-i.exp
Date: Thu, 13 Jun 2024 18:27:58 +0200	[thread overview]
Message-ID: <9bf1882e-2a93-4bd4-989d-dc0805608b0f@suse.de> (raw)
In-Reply-To: <20240521154415.9543-3-tdevries@suse.de>

On 5/21/24 17:44, Tom de Vries wrote:
> We can exercise test-case gdb.base/fission-macro.exp using gcc release 14.
> 
> We cannot use the test-case with a gcc release earlier than gcc 14, because
> it's missing gcc commit 80048aa13a6 ("debug/111409 - don't generate COMDAT
> macro sections for split DWARF").
> 
> A way to work around this is to use a .i file instead of a .c file.  Add a
> test-case using this approach.
> 
> This allows use to excercise gcc 11-13 in addition.
> 
> Tested on x86_64-linux.
> 

I'm having second thoughts on this and the following 2 patches, all 
using gdb.base/fission-macro-i.i.

While this adds a way to test gdb functionality in combination with gcc 
< 14, the actual use-cases for which the following two workaround 
patches will be useful will be severely limited, so I'm not sure it's 
worth the added complexity and maintenance burden of the workarounds.

So, I'm considering dropping these 3.

Thanks,
- Tom

> Tested test-case using a current gcc trunk build and gcc 11-14.
> ---
>   gdb/testsuite/gdb.base/fission-macro-i-2.i | 27 ++++++++
>   gdb/testsuite/gdb.base/fission-macro-i.exp | 77 ++++++++++++++++++++++
>   gdb/testsuite/gdb.base/fission-macro-i.i   | 27 ++++++++
>   3 files changed, 131 insertions(+)
>   create mode 100644 gdb/testsuite/gdb.base/fission-macro-i-2.i
>   create mode 100644 gdb/testsuite/gdb.base/fission-macro-i.exp
>   create mode 100644 gdb/testsuite/gdb.base/fission-macro-i.i
> 
> diff --git a/gdb/testsuite/gdb.base/fission-macro-i-2.i b/gdb/testsuite/gdb.base/fission-macro-i-2.i
> new file mode 100644
> index 00000000000..fb088c8bfaf
> --- /dev/null
> +++ b/gdb/testsuite/gdb.base/fission-macro-i-2.i
> @@ -0,0 +1,27 @@
> +/* This testcase is part of GDB, the GNU debugger.
> +
> +   Copyright 2024 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/>.  */
> +
> +#define THIRD 3
> +#define FOURTH 4
> +
> +extern int foo (void);
> +
> +int
> +foo (void)
> +{
> +  return 0;
> +}
> diff --git a/gdb/testsuite/gdb.base/fission-macro-i.exp b/gdb/testsuite/gdb.base/fission-macro-i.exp
> new file mode 100644
> index 00000000000..bf1ca206a6c
> --- /dev/null
> +++ b/gdb/testsuite/gdb.base/fission-macro-i.exp
> @@ -0,0 +1,77 @@
> +# Copyright 2024 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/>.  */
> +
> +# Gcc 11 is the first release containing the fix for PR debug/99319.
> +require {expr [gcc_major_version] >= 11}
> +
> +# Use a .i file instead of a .c file, to make sure that we only generate one
> +# .debug_macros section, working around gcc PR debug/111409.
> +standard_testfile .i -2.i
> +
> +proc do_tests { dwarf_version dwarf_bits strict_dwarf } {
> +    set opts {}
> +    lappend opts debug
> +    lappend opts quiet
> +    lappend opts additional_flags=-gsplit-dwarf
> +    lappend opts macros
> +
> +    if { $dwarf_bits == 64 } {
> +	lappend opts additional_flags=-gdwarf64
> +    }
> +
> +    if { $strict_dwarf } {
> +	lappend opts additional_flags=-gstrict-dwarf
> +    }
> +
> +    lappend opts additional_flags=-gdwarf-$dwarf_version
> +
> +    set id v$dwarf_version-b$dwarf_bits-s$strict_dwarf
> +
> +    set srcfiles [list $::srcfile $::srcfile2]
> +    if { [build_executable "failed to prepare" $::testfile-$id $srcfiles $opts] } {
> +	return -1
> +    }
> +
> +    clean_restart
> +
> +    gdb_load_no_complaints $::binfile-$id
> +
> +    if {![runto_main]} {
> +	return 0
> +    }
> +
> +    gdb_test "p FIRST" " = 1"
> +    gdb_test "p SECOND" " = 2"
> +
> +    gdb_test "info macro FIRST" "#define FIRST 1"
> +    gdb_test "info macro SECOND" "#define SECOND 2"
> +
> +    gdb_breakpoint foo
> +    gdb_continue_to_breakpoint "foo"
> +
> +    gdb_test "p THIRD" " = 3"
> +    gdb_test "p FOURTH" " = 4"
> +
> +    gdb_test "info macro THIRD" "#define THIRD 3"
> +    gdb_test "info macro FOURTH" "#define FOURTH 4"
> +}
> +
> +foreach_with_prefix dwarf_version {5} {
> +    foreach_with_prefix dwarf_bits {32 64} {
> +	foreach_with_prefix strict_dwarf {0 1} {
> +	    do_tests $dwarf_version $dwarf_bits $strict_dwarf
> +	}
> +    }
> +}
> diff --git a/gdb/testsuite/gdb.base/fission-macro-i.i b/gdb/testsuite/gdb.base/fission-macro-i.i
> new file mode 100644
> index 00000000000..9c8cbece5c5
> --- /dev/null
> +++ b/gdb/testsuite/gdb.base/fission-macro-i.i
> @@ -0,0 +1,27 @@
> +/* This testcase is part of GDB, the GNU debugger.
> +
> +   Copyright 2024 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/>.  */
> +
> +#define FIRST 1
> +#define SECOND 2
> +
> +extern int foo (void);
> +
> +int
> +main (void)
> +{
> +  return foo ();
> +}


  reply	other threads:[~2024-06-13 16:27 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-21 15:44 [PATCH 01/11] [gdb/testsuite] Add gdb.base/fission-macro.exp Tom de Vries
2024-05-21 15:44 ` [PATCH 02/11] [gdb/macros] Handle 64-bit dwarf in gdb.base/fission-macro.exp Tom de Vries
2024-05-21 15:44 ` [PATCH 03/11] [gdb/testsuite] Add test-case gdb.base/fission-macro-i.exp Tom de Vries
2024-06-13 16:27   ` Tom de Vries [this message]
2024-05-21 15:44 ` [PATCH 04/11] [gdb/macros] Work around gcc PR debug/99319 Tom de Vries
2024-05-21 15:44 ` [PATCH 05/11] [gdb/macros] Work around a gcc PR fixed in gcc 9 Tom de Vries
2024-05-21 15:44 ` [PATCH 06/11] [gdb/macros] Handle v4 dwarf in gdb.base/fission-macro.exp Tom de Vries
2024-05-21 15:44 ` [PATCH 07/11] [gdb/macros] Workaround gcc PR debug/115066 Tom de Vries
2024-05-21 15:44 ` [PATCH 08/11] [gdb/testsuite] Extend gdb.base/fission-macro.exp Tom de Vries
2024-05-21 15:44 ` [PATCH 09/11] [gdb/macros] Fix gdb.base/fission-macro.exp with clang Tom de Vries
2024-05-21 15:44 ` [PATCH 10/11] [gdb/testsuite] Use -g3 in gdb.base/lineinc.exp Tom de Vries
2024-05-21 15:44 ` [PATCH 11/11] [gdb/testsuite] Don't use readelf in gdb/contrib/cc-with-tweaks.sh Tom de Vries
2024-06-13 15:40 ` [PATCH 01/11] [gdb/testsuite] Add gdb.base/fission-macro.exp Tom de Vries
2024-06-17  8:16   ` Christophe Lyon
2024-06-17  8:23     ` Tom de Vries
2024-06-17  8:43       ` Christophe Lyon

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=9bf1882e-2a93-4bd4-989d-dc0805608b0f@suse.de \
    --to=tdevries@suse.de \
    --cc=gdb-patches@sourceware.org \
    /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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).