1# Copyright 2007-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/>. 15load_lib dwarf.exp 16 17# Test DW_TAG_compile_unit with no children and with neither DW_AT_low_pc nor 18# DW_AT_high_pc but with DW_AT_ranges instead. 19 20# This test can only be run on targets which support DWARF-2 and use gas. 21require dwarf2_support 22 23# The .c files use __attribute__. 24require is_c_compiler_gcc 25 26standard_testfile .c -2.c -3.c 27set asmfile [standard_output_file ${testfile}.s] 28set asmfile2 [standard_output_file ${testfile}2.s] 29set objfile [standard_output_file ${testfile}.o] 30set objfile2 [standard_output_file ${testfile}2.o] 31set objfile3 [standard_output_file ${testfile}3.o] 32 33# Generate .s without debug info but provide debug info by the assembler. 34# This way we get DW_TAG_compile_unit DIE and only that DIE. 35 36if {[gdb_compile "${srcdir}/${subdir}/${srcfile}" "${asmfile}" assembly {}] != "" 37 || [gdb_compile "${asmfile}" "${objfile}" object {additional_flags=-gdwarf-2}] != "" } { 38 return -1 39} 40if {[gdb_compile "${srcdir}/${subdir}/${srcfile2}" "${asmfile2}" assembly {}] != "" 41 || [gdb_compile "${asmfile2}" "${objfile2}" object {additional_flags=-gdwarf-2}] != "" } { 42 return -1 43} 44 45# STABS compilation is intentional as it tests the STABS lookup where is no 46# partial_symtab->psymtabs_addrmap supported for that CU (Compilation Unit) in 47# a file containing psymtabs_addrmap-supporting DWARF CUs. 48if {[gdb_compile "${srcdir}/${subdir}/${srcfile3}" "${objfile3}" object {additional_flags=-gstabs quiet}] != "" } { 49 return -1 50} 51 52if {[gdb_compile "${objfile} ${objfile2} ${objfile3}" "${binfile}" executable {}] != "" } { 53 return -1 54} 55 56clean_restart ${testfile} 57 58# Test also objfile->psymtabs_addrmap relocations for -fPIE -pie builds below. 59# On some targets it may possibly fail but the program is being started only 60# for the PIE build so try it anyway. 61 62runto_main 63 64# Correct output: 65# Line 39 of "../.././gdb/testsuite/gdb.dwarf2/dw2-ranges.S" starts at address 0x4 and ends at 0x8. 66# Wrong output: 67# No line number information available for address 0x4 68 69gdb_test "info line main" "Line \[0-9\]* of .* starts at address .* and ends at .*" 70gdb_test "info line func" "Line \[0-9\]* of .* starts at address .* and ends at .*" 71gdb_test "info line main2" "Line \[0-9\]* of .* starts at address .* and ends at .*" 72gdb_test "info line func2" "Line \[0-9\]* of .* starts at address .* and ends at .*" 73 74gdb_test "info line main3" \ 75 "Line \[0-9\]* of .* starts at address .* and ends at .*" 76