Home | History | Annotate | Line # | Download | only in gdb.dwarf2
      1 # Copyright 2022-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 load_lib dwarf.exp
     17 
     18 # This test can only be run on targets which support DWARF-2 and use gas.
     19 require dwarf2_support
     20 
     21 standard_testfile _start.c debug-names.S
     22 
     23 set func_info_vars \
     24     [get_func_info _start [list debug additional_flags=-nostartfiles]]
     25 
     26 # Create the DWARF.
     27 set asm_file [standard_output_file $srcfile2]
     28 Dwarf::assemble {
     29     filename $asm_file
     30     add_dummy_cus 0
     31 } {
     32     global func_info_vars
     33     foreach var $func_info_vars {
     34 	global $var
     35     }
     36 
     37     cu { label cu_label } {
     38 	compile_unit {{language @DW_LANG_C}} {
     39 	    subprogram {
     40 		{DW_AT_name _start}
     41 		{DW_AT_low_pc $_start_start DW_FORM_addr}
     42 		{DW_AT_high_pc $_start_end DW_FORM_addr}
     43 	    }
     44 	    base_type {
     45 		{name int}
     46 		{byte_size 4 sdata}
     47 		{encoding @DW_ATE_signed}
     48 	    }
     49 	}
     50     }
     51 
     52     # This CU is missing from the cu list in .debug_names.
     53     cu {} {
     54     }
     55 
     56     debug_names {} {
     57 	cu cu_label
     58 	name _start subprogram cu_label 0xEDDB6232
     59 	name int base_type cu_label 0xB888030
     60     }
     61 }
     62 
     63 if [prepare_for_testing "failed to prepare" $testfile "${asm_file} ${srcfile}" \
     64 	[list additional_flags=-nostartfiles]] {
     65     return -1
     66 }
     67 
     68 # Verify that .debug_names section is not ignored.
     69 set index [have_index $binfile]
     70 gdb_assert { [string equal $index ""] } ".debug_names not used"
     71 
     72 # Verify that initially no symtab is expanded.
     73 gdb_test_no_output "maint info symtabs"
     74 
     75 # Verify that _start is found in the debuginfo, rather than in the minimal
     76 # symbols, which would result instead in:
     77 #   $1 = {<text variable, no debug info>} $hex <_start>
     78 gdb_test "print _start" " = {void \\(\\)} $hex <_start>"
     79