diff options
Diffstat (limited to 'gdb/testsuite/gdb.linespec')
-rw-r--r-- | gdb/testsuite/gdb.linespec/base/one/header.h | 29 | ||||
-rw-r--r-- | gdb/testsuite/gdb.linespec/base/two/header.h | 29 | ||||
-rw-r--r-- | gdb/testsuite/gdb.linespec/macro-relative.c | 29 | ||||
-rw-r--r-- | gdb/testsuite/gdb.linespec/macro-relative.exp | 47 |
4 files changed, 134 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.linespec/base/one/header.h b/gdb/testsuite/gdb.linespec/base/one/header.h new file mode 100644 index 0000000..f437495 --- /dev/null +++ b/gdb/testsuite/gdb.linespec/base/one/header.h @@ -0,0 +1,29 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2013 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/>. */ + +#if 1 +# define HEADER 1 +#endif +#if 0 +# undef HEADER +# define HEADER 2 +void header_two_func (void) {} +#endif +#if 1 +/* #include "header.h" does not work, why? */ +# include <header.h> +#endif diff --git a/gdb/testsuite/gdb.linespec/base/two/header.h b/gdb/testsuite/gdb.linespec/base/two/header.h new file mode 100644 index 0000000..aab791b --- /dev/null +++ b/gdb/testsuite/gdb.linespec/base/two/header.h @@ -0,0 +1,29 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2013 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/>. */ + +#if 0 +# define HEADER 1 +#endif +#if 1 +# undef HEADER +# define HEADER 2 +void header_two_func (void) {} +#endif +#if 0 +/* #include "header.h" does not work, why? */ +# include <header.h> +#endif diff --git a/gdb/testsuite/gdb.linespec/macro-relative.c b/gdb/testsuite/gdb.linespec/macro-relative.c new file mode 100644 index 0000000..7bb40b4 --- /dev/null +++ b/gdb/testsuite/gdb.linespec/macro-relative.c @@ -0,0 +1,29 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2013 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/>. */ + +/* GCC cannot compile directly a .h file. */ + +/* Use trailing "./header.h" to match the #include line in "one/header.h". */ + +#include "../one/./header.h" + +int +main (void) +{ + header_two_func (); + return 0; +} diff --git a/gdb/testsuite/gdb.linespec/macro-relative.exp b/gdb/testsuite/gdb.linespec/macro-relative.exp new file mode 100644 index 0000000..0a056e3 --- /dev/null +++ b/gdb/testsuite/gdb.linespec/macro-relative.exp @@ -0,0 +1,47 @@ +# Copyright 2013 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 + +set opts {debug additional_flags=-I.} + +get_compiler_info +if [test_compiler_info gcc*] { + lappend opts additional_flags=-g3 +} + +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" |