summaryrefslogtreecommitdiff
path: root/gdb/macrotab.h
diff options
context:
space:
mode:
authorJan Kratochvil <jan.kratochvil@redhat.com>2013-02-03 16:25:56 +0000
committerJan Kratochvil <jan.kratochvil@redhat.com>2013-02-03 16:25:56 +0000
commit233d95b548ec948c4a6d01cd05c307385dd615fb (patch)
tree615dcf50bf106efed9c95c9b66353fef6a6f23d5 /gdb/macrotab.h
parentda235a7c2183d92f9be66642d5b357729078a39b (diff)
downloadbinutils-gdb-233d95b548ec948c4a6d01cd05c307385dd615fb.tar.gz
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/macrotab.h')
-rw-r--r--gdb/macrotab.h19
1 files changed, 16 insertions, 3 deletions
diff --git a/gdb/macrotab.h b/gdb/macrotab.h
index eeef7ee674f..075dfd90fa5 100644
--- a/gdb/macrotab.h
+++ b/gdb/macrotab.h
@@ -125,7 +125,9 @@ struct macro_source_file
a part of. */
struct macro_table *table;
- /* A source file --- possibly a header file. */
+ /* A source file --- possibly a header file. This filename is relative to
+ the compilation directory (table->comp_dir), it exactly matches the
+ symtab->filename content. */
const char *filename;
/* The location we were #included from, or zero if we are the
@@ -152,7 +154,8 @@ struct macro_source_file
xmalloc if OBSTACK is zero. Use BCACHE to store all macro names,
arguments, definitions, and anything else that might be the same
amongst compilation units in an executable file; if BCACHE is zero,
- don't cache these things.
+ don't cache these things. COMP_DIR optionally contains the compilation
+ directory of all files for this macro table.
Note that, if either OBSTACK or BCACHE are non-zero, then removing
information from the table may leak memory. Neither obstacks nor
@@ -164,7 +167,8 @@ struct macro_source_file
the same source location (although 'gcc -DFOO -UFOO -DFOO=2' does
do that in GCC 4.1.2.). */
struct macro_table *new_macro_table (struct obstack *obstack,
- struct bcache *bcache);
+ struct bcache *bcache,
+ const char *comp_dir);
/* Free TABLE, and any macro definitions, source file structures,
@@ -347,5 +351,14 @@ void macro_for_each_in_scope (struct macro_source_file *file, int line,
macro_callback_fn fn,
void *user_data);
+/* Return FILE->filename with possibly prepended compilation directory name.
+ This is raw concatenation without the "set substitute-path" and gdb_realpath
+ applications done by symtab_to_fullname. Returned string must be freed by
+ xfree.
+
+ THis function ignores the "set filename-display" setting. Its default
+ setting is "relative" which is backward compatible but the former behavior
+ of macro filenames printing was "absolute". */
+extern char *macro_source_fullname (struct macro_source_file *file);
#endif /* MACROTAB_H */