Home | History | Annotate | Line # | Download | only in gdb.base
      1 # Copyright 2024 Free Software Foundation, Inc.
      2 
      3 # This program is free software; you can redistribute it and/or modify
      4 # it under the terms of the GNU General Public License as published by
      5 # the Free Software Foundation; either version 3 of the License, or
      6 # (at your option) any later version.
      7 #
      8 # This program is distributed in the hope that it will be useful,
      9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
     10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     11 # GNU General Public License for more details.
     12 #
     13 # You should have received a copy of the GNU General Public License
     14 # along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
     15 
     16 # Gcc 14 is the first release containing the fix for PR debug/111409.
     17 require {expr [gcc_major_version] >= 14}
     18 
     19 standard_testfile .c -2.c
     20 
     21 proc do_tests { dwarf_version dwarf_bits strict_dwarf } {
     22     set opts {}
     23     lappend opts debug
     24     lappend opts quiet
     25     lappend opts additional_flags=-gsplit-dwarf
     26     lappend opts macros
     27 
     28     if { $dwarf_bits == 64 } {
     29 	lappend opts additional_flags=-gdwarf64
     30     }
     31 
     32     if { $strict_dwarf } {
     33 	lappend opts additional_flags=-gstrict-dwarf
     34     }
     35 
     36     lappend opts additional_flags=-gdwarf-$dwarf_version
     37 
     38     set id v$dwarf_version-b$dwarf_bits-s$strict_dwarf
     39 
     40     set srcfiles [list $::srcfile $::srcfile2]
     41     if { [build_executable "failed to prepare" $::testfile-$id $srcfiles $opts] } {
     42 	return -1
     43     }
     44 
     45     clean_restart
     46 
     47     gdb_load_no_complaints $::binfile-$id
     48 
     49     if {![runto_main]} {
     50 	return 0
     51     }
     52 
     53     gdb_test "p FIRST" " = 1"
     54     gdb_test "p SECOND" " = 2"
     55 
     56     gdb_test "info macro FIRST" "#define FIRST 1"
     57     gdb_test "info macro SECOND" "#define SECOND 2"
     58 
     59     gdb_breakpoint foo
     60     gdb_continue_to_breakpoint "foo"
     61 
     62     gdb_test "p THIRD" " = 3"
     63     gdb_test "p FOURTH" " = 4"
     64 
     65     gdb_test "info macro THIRD" "#define THIRD 3"
     66     gdb_test "info macro FOURTH" "#define FOURTH 4"
     67 }
     68 
     69 foreach_with_prefix dwarf_version {5} {
     70     foreach_with_prefix dwarf_bits {32} {
     71 	foreach_with_prefix strict_dwarf {0 1} {
     72 	    do_tests $dwarf_version $dwarf_bits $strict_dwarf
     73 	}
     74     }
     75 }
     76