diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2013-02-03 16:25:56 +0000 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2013-02-03 16:25:56 +0000 |
commit | 233d95b548ec948c4a6d01cd05c307385dd615fb (patch) | |
tree | 615dcf50bf106efed9c95c9b66353fef6a6f23d5 /gdb/testsuite/gdb.linespec | |
parent | da235a7c2183d92f9be66642d5b357729078a39b (diff) | |
download | gdb-233d95b548ec948c4a6d01cd05c307385dd615fb.zip gdb-233d95b548ec948c4a6d01cd05c307385dd615fb.tar.gz gdb-233d95b548ec948c4a6d01cd05c307385dd615fb.tar.bz2 |
gdb/
* dwarf2read.c (file_file_name): New function with code from
file_full_name.
(file_full_name): Move most of the code to file_file_name.
(macro_start_file): Rename variable full_name to file_name and use
file_file_name for it. Add comp_dir parameter to new_macro_table.
* macrocmd.c (show_pp_source_pos): New variable fullname. Replace any
macro_source_file->filename access by macro_source_fullname call.
* macroscope.c (_initialize_macroscope): Update the new_macro_table
caller.
* macrotab.c (struct macro_table): New field comp_dir.
(macro_include): New variables link_fullname and source_fullname.
Replace any macro_source_file->filename access by macro_source_fullname
call.
(macro_lookup_inclusion): Remove the partial filenames checking code.
(check_for_redefinition): New variables source_fullname and
found_key_fullname. Replace any macro_source_file->filename access by
macro_source_fullname call.
(macro_undef): New variables source_fullname and key_fullname. Replace
any macro_source_file->filename access by macro_source_fullname call.
(macro_lookup_definition): New variables retval and source_fullname.
Replace any macro_source_file->filename access by macro_source_fullname
call.
(foreach_macro): New variable key_fullname. Replace any
macro_source_file->filename access by macro_source_fullname call.
(foreach_macro_in_scope): New variable datum_fullname. Replace any
macro_source_file->filename access by macro_source_fullname call.
(new_macro_table): Add parameter comp_dir. Initialize T with it.
(macro_source_fullname): New function.
* macrotab.h (struct macro_source_file): Extent the filename field
comment.
(new_macro_table): New parameter comp_dir, add a comment for it.
(macro_source_fullname): new declaration.
gdb/testsuite/
* gdb.linespec/base/one/header.h: New file.
* gdb.linespec/base/two/header.h: New file.
* gdb.linespec/macro-relative.c: New file.
* gdb.linespec/macro-relative.exp: New file.
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" |