diff options
author | Tom de Vries <tdevries@suse.de> | 2024-06-13 17:39:40 +0200 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2024-06-13 17:39:40 +0200 |
commit | 2f43916ead97b183348581e4fd4489cd59845e62 (patch) | |
tree | 3c1248a0a4a6b00899a6bf2a5073bbd81f6991e6 | |
parent | 56c82e7029464dbd8b2b7237bf3176f3199f9e71 (diff) | |
download | gdb-2f43916ead97b183348581e4fd4489cd59845e62.zip gdb-2f43916ead97b183348581e4fd4489cd59845e62.tar.gz gdb-2f43916ead97b183348581e4fd4489cd59845e62.tar.bz2 |
[gdb/testsuite] Add gdb.base/fission-macro.exp
Starting with gcc commit 80048aa13a6 ("debug/111409 - don't generate COMDAT
macro sections for split DWARF"), available from release gcc 14.1 onwards, gcc
produces a usable dwarf-5 32-bit .debug_macro.dwo section.
Add a test-case excercising this.
Tested on x86_64-linux.
Tested test-case using a current gcc trunk build, and gcc 14.
-rw-r--r-- | gdb/testsuite/gdb.base/fission-macro-2.c | 27 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/fission-macro.c | 27 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/fission-macro.exp | 75 |
3 files changed, 129 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.base/fission-macro-2.c b/gdb/testsuite/gdb.base/fission-macro-2.c new file mode 100644 index 0000000..fb088c8 --- /dev/null +++ b/gdb/testsuite/gdb.base/fission-macro-2.c @@ -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.c b/gdb/testsuite/gdb.base/fission-macro.c new file mode 100644 index 0000000..9c8cbec --- /dev/null +++ b/gdb/testsuite/gdb.base/fission-macro.c @@ -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 (); +} diff --git a/gdb/testsuite/gdb.base/fission-macro.exp b/gdb/testsuite/gdb.base/fission-macro.exp new file mode 100644 index 0000000..705e3dd --- /dev/null +++ b/gdb/testsuite/gdb.base/fission-macro.exp @@ -0,0 +1,75 @@ +# 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 14 is the first release containing the fix for PR debug/111409. +require {expr [gcc_major_version] >= 14} + +standard_testfile .c -2.c + +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} { + foreach_with_prefix strict_dwarf {0 1} { + do_tests $dwarf_version $dwarf_bits $strict_dwarf + } + } +} |