binutils-gdb/gdb/testsuite/gdb.dwarf2/clang-debug-names.exp
Tom de Vries d3b54e63f4 [gdb/symtab] Fix duplicate CUs in create_cus_from_debug_names_list
When running test-case gdb.dwarf2/clang-debug-names.exp, I run into the
following warning:
...
(gdb) file clang-debug-names^M
Reading symbols from clang-debug-names...^M
warning: Section .debug_aranges in clang-debug-names has duplicate \
  debug_info_offset 0xc7, ignoring .debug_aranges.^M
...

This is caused by a missing return in commit 3ee6bb113a "[gdb/symtab] Fix
incomplete CU list assert in .debug_names".

Fix this by adding the missing return, such that we have instead this warning:
...
(gdb) file clang-debug-names^M
Reading symbols from clang-debug-names...^M
warning: Section .debug_aranges in clang-debug-names \
  entry at offset 0 debug_info_offset 0 does not exists, \
  ignoring .debug_aranges.^M
...
which is a known problem filed as PR25969 - "Ignoring .debug_aranges with
clang .debug_names".

Tested on x86_64-linux.

gdb/ChangeLog:

2021-02-05  Tom de Vries  <tdevries@suse.de>

	PR symtab/27307
	* dwarf2/read.c (create_cus_from_debug_names_list): Add missing
	return.

gdb/testsuite/ChangeLog:

2021-02-05  Tom de Vries  <tdevries@suse.de>

	PR symtab/27307
	* gdb.dwarf2/clang-debug-names.exp: Check file command warnings.
2021-02-05 09:14:25 +01:00

57 lines
1.6 KiB
Text

# Copyright 2020-2021 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/>.
load_lib dwarf.exp
# This test can only be run on targets which support DWARF-2 and use gas.
if {![dwarf2_support]} {
return 0
}
standard_testfile .c -debug.S
lassign [function_range main ${srcdir}/${subdir}/${srcfile}] \
main_start main_length
set asm_file [standard_output_file $srcfile2]
source $srcdir/$subdir/clang-debug-names.exp.tcl
if { [prepare_for_testing "failed to prepare" ${testfile} \
[list $srcfile $asm_file] {nodebug}] } {
return -1
}
set test "no file command warnings"
if { [regexp "warning: " $gdb_file_cmd_msg] } {
set kfail_re \
[concat \
"warning: Section .debug_aranges in \[^\r\n\]* entry" \
"at offset 0 debug_info_offset 0 does not exists," \
"ignoring \\.debug_aranges\\."]
if { [regexp $kfail_re $gdb_file_cmd_msg] } {
kfail symtab/25969 $test
} else {
fail $test
}
} else {
pass $test
}
set cmd "ptype main"
set pass_re \
[multi_line \
$cmd \
"type = int \\(\\)"]
gdb_test $cmd $pass_re