diff options
author | Sandra Loosemore <sandra@codesourcery.com> | 2015-05-08 12:43:39 -0700 |
---|---|---|
committer | Sandra Loosemore <sandra@codesourcery.com> | 2015-05-08 12:43:39 -0700 |
commit | afa6c9abf2c12c8e6155d088ea45e5091ca79c57 (patch) | |
tree | bbdafc9070faac9f0bfdb2833a1811f864eb6123 /gdb/dwarf2read.c | |
parent | 35d54293c3a0fb5e8cd3a82a1e2a6e0481b615af (diff) | |
download | gdb-afa6c9abf2c12c8e6155d088ea45e5091ca79c57.zip gdb-afa6c9abf2c12c8e6155d088ea45e5091ca79c57.tar.gz gdb-afa6c9abf2c12c8e6155d088ea45e5091ca79c57.tar.bz2 |
Avoid segfault on missing directory table.
2015-05-08 Yao Qi <yao@codesourcery.com>
Sandra Loosemore <sandra@codesourcery.com>
gdb/
* dwarf2read.c (setup_type_unit_groups): Do NULL pointer check
to 'lh->include_dirs' before accessing to it.
(psymtab_include_file_name): Likewise.
(dwarf_decode_lines_1): Likewise.
(dwarf_decode_lines): Likewise.
(file_file_name): Likewise.
Diffstat (limited to 'gdb/dwarf2read.c')
-rw-r--r-- | gdb/dwarf2read.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 8d9a394..23a2521 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -9320,7 +9320,7 @@ setup_type_unit_groups (struct die_info *die, struct dwarf2_cu *cu) const char *dir = NULL; struct file_entry *fe = &lh->file_names[i]; - if (fe->dir_index) + if (fe->dir_index && lh->include_dirs != NULL) dir = lh->include_dirs[fe->dir_index - 1]; dwarf2_start_subfile (fe->name, dir); @@ -17396,7 +17396,7 @@ psymtab_include_file_name (const struct line_header *lh, int file_index, char *copied_name = NULL; int file_is_pst; - if (fe.dir_index) + if (fe.dir_index && lh->include_dirs != NULL) dir_name = lh->include_dirs[fe.dir_index - 1]; if (!IS_ABSOLUTE_PATH (include_name) @@ -17595,7 +17595,7 @@ dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu, struct file_entry *fe = &lh->file_names[file - 1]; const char *dir = NULL; - if (fe->dir_index) + if (fe->dir_index && lh->include_dirs != NULL) dir = lh->include_dirs[fe->dir_index - 1]; dwarf2_start_subfile (fe->name, dir); @@ -17815,7 +17815,7 @@ dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu, else { fe = &lh->file_names[file - 1]; - if (fe->dir_index) + if (fe->dir_index && lh->include_dirs != NULL) dir = lh->include_dirs[fe->dir_index - 1]; if (!decode_for_pst_p) { @@ -17958,7 +17958,7 @@ dwarf_decode_lines (struct line_header *lh, const char *comp_dir, struct file_entry *fe; fe = &lh->file_names[i]; - if (fe->dir_index) + if (fe->dir_index && lh->include_dirs != NULL) dir = lh->include_dirs[fe->dir_index - 1]; dwarf2_start_subfile (fe->name, dir); @@ -20640,7 +20640,8 @@ file_file_name (int file, struct line_header *lh) { struct file_entry *fe = &lh->file_names[file - 1]; - if (IS_ABSOLUTE_PATH (fe->name) || fe->dir_index == 0) + if (IS_ABSOLUTE_PATH (fe->name) || fe->dir_index == 0 + || lh->include_dirs == NULL) return xstrdup (fe->name); return concat (lh->include_dirs[fe->dir_index - 1], SLASH_STRING, fe->name, NULL); |