mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-03-07 13:39:43 +08:00
Similar to the previous patch, but this time add "-q" to tests that do "break main", "list main", etc. explicitly. gdb/testsuite/ChangeLog: * config/monitor.exp: Use "list -q". * gdb.arch/gdb1558.exp: Use "break -q". * gdb.arch/i386-permbkpt.exp: Use "break -q". * gdb.arch/i386-prologue-skip-cf-protection.exp: Use "break -q". * gdb.base/break.exp: Use "break -q", "list -q" and "tbreak -q". * gdb.base/commands.exp: Use "break -q". * gdb.base/condbreak.exp: Use "break -q". * gdb.base/ctf-ptype.exp: Use "list -q". * gdb.base/define.exp: Use "break -q". * gdb.base/del.exp: Use "break -q". * gdb.base/fullname.exp: Use "break -q". * gdb.base/hbreak-in-shr-unsupported.exp: Use "hbreak -q". * gdb.base/hbreak-unmapped.exp: Use "hbreak -q". * gdb.base/hbreak2.exp: Use "hbreak -q" and "list -q". * gdb.base/hw-sw-break-same-address.exp: Use "break -q" and "hbreak -q". * gdb.base/included.exp: Use "list -q". * gdb.base/label.exp: Use "break -q". * gdb.base/lineinc.exp: Use "break -q". * gdb.base/list.exp: Use "list -q". * gdb.base/macscp.exp: Use "list -q". * gdb.base/pending.exp: Use "break -q". * gdb.base/prologue-include.exp: Use "break -q". * gdb.base/ptype.exp: Use "list -q". * gdb.base/sepdebug.exp: Use "break -q", "list -q" and "tbreak -q". * gdb.base/server-del-break.exp: Use "break -q". * gdb.base/style.exp: Use "break -q". * gdb.base/symbol-without-target_section.exp: Use "list -q". * gdb.base/watchpoint-reuse-slot.exp: Use "hbreak -q". * gdb.cp/exception.exp: Use "tbreak -q". * gdb.dwarf2/dw2-error.exp: Use "break -q". * gdb.dwarf2/fission-mix.exp: Use "break -q". * gdb.dwarf2/fission-reread.exp: Use "break -q". * gdb.dwarf2/pr13961.exp: Use "break -q". * gdb.linespec/explicit.exp: Use "list -q". * gdb.linespec/linespec.exp: Use "break -q". * gdb.mi/mi-simplerun.exp: Use "--qualified". * gdb.python/py-mi-objfile-gdb.py: Use "list -q". * gdb.server/bkpt-other-inferior.exp: Use "break -q". * gdb.server/connect-without-multi-process.exp: Use "break -q". * gdb.trace/change-loc.exp: Use "break -q". * gdb.trace/pending.exp: Use "break -q". * gdb.tui/basic.exp: Use "list -q". * gdb.tui/list-before.exp: Use "list -q". * gdb.tui/list.exp: Use "list -q". * lib/gdb.exp (gdb_has_argv0): Use "break -q". Change-Id: Iab9408e90ed71cbb111cd737d2d81b5ba8adb108
113 lines
4.3 KiB
Plaintext
113 lines
4.3 KiB
Plaintext
# Test macro handling of #included files.
|
|
# Copyright 2003-2020 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/>.
|
|
|
|
# The test program lineinc.c contains a mix of #line directives and
|
|
# #include directives that will cause the compiler to attribute more
|
|
# than one #inclusion to the same source line. You can get similar
|
|
# effects using things like GCC's '-imacros' flag.
|
|
#
|
|
# Compiling lineinc.c with Dwarf 2 macro information will produce
|
|
# something like this:
|
|
#
|
|
# $ gcc -g3 lineinc.c -o lineinc
|
|
# $ readelf -wml lineinc
|
|
# ...
|
|
# The File Name Table:
|
|
# Entry Dir Time Size Name
|
|
# 1 0 0 0 lineinc.c
|
|
# 2 0 0 0 lineinc1.h
|
|
# 3 0 0 0 lineinc2.h
|
|
# 4 0 0 0 lineinc3.h
|
|
# ...
|
|
# Contents of the .debug_macinfo section:
|
|
#
|
|
# DW_MACINFO_start_file - lineno: 0 filenum: 1
|
|
# DW_MACINFO_define - lineno : 1 macro : __VERSION__ "3.2 20020903 (Red Hat Linux 8.0 3.2-7)"
|
|
# DW_MACINFO_define - lineno : 2 macro : __USER_LABEL_PREFIX__
|
|
# ...
|
|
# DW_MACINFO_define - lineno : 1 macro : __i386__ 1
|
|
# DW_MACINFO_define - lineno : 1 macro : __tune_i386__ 1
|
|
# DW_MACINFO_start_file - lineno: 10 filenum: 2
|
|
# DW_MACINFO_define - lineno : 1 macro : FOO 1
|
|
# DW_MACINFO_end_file
|
|
# DW_MACINFO_start_file - lineno: 10 filenum: 3
|
|
# DW_MACINFO_undef - lineno : 1 macro : FOO
|
|
# DW_MACINFO_define - lineno : 2 macro : FOO 2
|
|
# DW_MACINFO_end_file
|
|
# DW_MACINFO_start_file - lineno: 11 filenum: 4
|
|
# DW_MACINFO_undef - lineno : 1 macro : FOO
|
|
# DW_MACINFO_define - lineno : 2 macro : FOO 3
|
|
# DW_MACINFO_end_file
|
|
# DW_MACINFO_end_file
|
|
# $
|
|
#
|
|
# Note how the inclusions of lineinc1.h and lineinc2.h are both
|
|
# attributed to line 10 of lineinc.c, and the #inclusion of lineinc3.h
|
|
# is attributed to line 11. This is all correct, given the #line
|
|
# directives in lineinc.c.
|
|
#
|
|
# Dwarf 2 macro information doesn't contain enough information to
|
|
# allow GDB to figure out what's really going on here --- it makes no
|
|
# mention of the #line directives --- so we just try to cope as best
|
|
# we can. If the macro table were to attribute more than one
|
|
# #inclusion to the same source line, then GDB wouldn't be able to
|
|
# tell which #included file's #definitions and #undefinitions come
|
|
# first, so it can't tell which #definitions are in scope following
|
|
# all the #inclusions. To cope with this, GDB puts all the files
|
|
# #included by a given source file in a list sorted by the line at
|
|
# which they were #included; this gives GDB the chance to detect
|
|
# multiple #inclusions at the same line, complain, and assign
|
|
# distinct, albiet incorrect, line numbers to each #inclusion.
|
|
#
|
|
# However, at one point GDB was sorting the list in reverse order,
|
|
# while the code to assign new, distinct line numbers assumed it was
|
|
# sorted in ascending order; GDB would get an internal error trying to
|
|
# read the above debugging info.
|
|
|
|
|
|
standard_testfile .c
|
|
|
|
if {[gdb_compile "${srcdir}/${subdir}/${srcfile}" ${binfile} executable {debug}] != ""} {
|
|
untested "failed to compile"
|
|
return -1
|
|
}
|
|
|
|
clean_restart ${binfile}
|
|
|
|
# Any command that causes GDB to read the debugging info for the
|
|
# lineinc.c compilation unit will do here.
|
|
set test_name "tolerate macro info with multiple #inclusions per line"
|
|
gdb_test_multiple "break -q main" $test_name {
|
|
-re "Breakpoint 1 at 0x.*: file .*lineinc.c.*\\.\r\n${gdb_prompt}" {
|
|
pass $test_name
|
|
}
|
|
-re ".*internal-error:.*.y or n. " {
|
|
fail $test_name
|
|
send_gdb "y\n"
|
|
gdb_expect {
|
|
-re ".*.y or n. " {
|
|
send_gdb "n\n"
|
|
exp_continue
|
|
}
|
|
-re "$gdb_prompt" {
|
|
}
|
|
timeout {
|
|
fail "$test_name (timeout)"
|
|
}
|
|
}
|
|
}
|
|
}
|