binutils-gdb/gdb/testsuite/gdb.linespec/macro-relative.exp
Simon Marchi 9be5d742db gdb/testsuite: add "macros" option to gdb_compile
Make gdb_compile handle a new "macros" option, which makes it pass the
appropriate flag to make the compiler include macro information in the
debug info.  This will help simplify tests using macros, reduce
redundant code, and make it easier to add support for a new compiler.

Right now it only handles clang specially (using -fdebug-macro) and
falls back to -g3 otherwise (which works for gcc).  Other compilers can
be added as needed.

There are some tests that are currently skipped if the compiler is nor
gcc nor clang.  After this patch, the tests will attempt to run (the -g3
fall back will be used).  That gives a chance to people using other
compilers to notice something is wrong and maybe add support for their
compiler.  If it is needed to support a compiler that doesn't have a way
to include macro information, then we can always introduce a
"skip_macro_tests" that can be used to skip over them.

Change-Id: I50cd6ab1bfbb478c1005486408e214b551364c9b
2022-04-07 14:41:28 -04:00

54 lines
1.5 KiB
Plaintext

# Copyright 2013-2022 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/>.
standard_testfile
# Fission doesn't support macros yet. Bug 15954.
if [using_fission] {
unsupported "fission"
return -1
}
if [is_remote host] {
unsupported "compiling on a remote host does not support a filename with directory."
return 0
}
set opts {debug additional_flags=-I. macros}
if { [file pathtype $objdir] == "relative" } {
untested "objdir $objdir should be absolute"
return
}
set saved_pwd [pwd]
cd $srcdir/${subdir}/base/two
set err [gdb_compile "../../${srcfile}" "${binfile}" executable $opts]
cd $saved_pwd
if { $err != "" } {
untested "compilation failed"
return -1
}
clean_restart ${testfile}
# Test macros respect DW_AT_comp_dir.
# "list header_two_func" does not set exactly the one line we want.
if ![runto header_two_func] {
return -1
}
gdb_test "info macro HEADER" "\r\n#define HEADER 2"