aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Brobecker <brobecker@gnat.com>2005-03-09 06:03:15 +0000
committerJoel Brobecker <brobecker@gnat.com>2005-03-09 06:03:15 +0000
commit5b5464adf1b78a96eea30f0115478b4986c24414 (patch)
tree6d34202f22869b8b93374d8cf95f4f925a76e3d7
parenta9df7c441357713422456f35ccdfda3ae6928a07 (diff)
downloadgdb-5b5464adf1b78a96eea30f0115478b4986c24414.zip
gdb-5b5464adf1b78a96eea30f0115478b4986c24414.tar.gz
gdb-5b5464adf1b78a96eea30f0115478b4986c24414.tar.bz2
* dwarf2read.c (dwarf_decode_lines): Use the complete filename
when creating include psymtabs.
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/dwarf2read.c26
2 files changed, 28 insertions, 3 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index ff12d2b..d3a1a80 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2004-03-09 Joel Brobecker <brobecker@adacore.com>
+
+ * dwarf2read.c (dwarf_decode_lines): Use the complete filename
+ when creating include psymtabs.
+
2005-03-08 Mark Mitchell <mark@codesourcery.com>
* environ.h (struct environ): Rename to ...
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index d0a3376..a6a7684 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -6622,9 +6622,29 @@ dwarf_decode_lines (struct line_header *lh, char *comp_dir, bfd *abfd,
for (file_index = 0; file_index < lh->num_file_names; file_index++)
if (lh->file_names[file_index].included_p == 1)
{
- char *include_name = lh->file_names [file_index].name;
-
- if (strcmp (include_name, pst->filename) != 0)
+ const struct file_entry fe = lh->file_names [file_index];
+ char *include_name = fe.name;
+ char *dir_name = NULL;
+ char *pst_filename = pst->filename;
+
+ if (fe.dir_index)
+ dir_name = lh->include_dirs[fe.dir_index - 1];
+
+ if (!IS_ABSOLUTE_PATH (include_name) && dir_name != NULL)
+ {
+ include_name =
+ concat (dir_name, SLASH_STRING, include_name, NULL);
+ make_cleanup (xfree, include_name);
+ }
+
+ if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
+ {
+ pst_filename =
+ concat (pst->dirname, SLASH_STRING, pst_filename, NULL);
+ make_cleanup (xfree, pst_filename);
+ }
+
+ if (strcmp (include_name, pst_filename) != 0)
dwarf2_create_include_psymtab (include_name, pst, objfile);
}
}