aboutsummaryrefslogtreecommitdiff
path: root/gdb/dwarf2read.c
diff options
context:
space:
mode:
authorSandra Loosemore <sandra@codesourcery.com>2015-05-08 12:43:39 -0700
committerSandra Loosemore <sandra@codesourcery.com>2015-05-08 12:43:39 -0700
commitafa6c9abf2c12c8e6155d088ea45e5091ca79c57 (patch)
treebbdafc9070faac9f0bfdb2833a1811f864eb6123 /gdb/dwarf2read.c
parent35d54293c3a0fb5e8cd3a82a1e2a6e0481b615af (diff)
downloadfsf-binutils-gdb-afa6c9abf2c12c8e6155d088ea45e5091ca79c57.zip
fsf-binutils-gdb-afa6c9abf2c12c8e6155d088ea45e5091ca79c57.tar.gz
fsf-binutils-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.c13
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);