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.
This commit is contained in:
parent
da235a7c21
commit
233d95b548
11 changed files with 302 additions and 69 deletions
|
@ -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 */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue