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/macrotab.h | |
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/macrotab.h')
-rw-r--r-- | gdb/macrotab.h | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/gdb/macrotab.h b/gdb/macrotab.h index eeef7ee..075dfd9 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 */ |