aboutsummaryrefslogtreecommitdiff
path: root/gdb/dwarf2read.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/dwarf2read.c')
-rw-r--r--gdb/dwarf2read.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index b3ea52b..519550b 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -9416,7 +9416,8 @@ 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 && lh->include_dirs != NULL)
+ if (fe->dir_index && lh->include_dirs != NULL
+ && (fe->dir_index - 1) < lh->num_include_dirs)
dir = lh->include_dirs[fe->dir_index - 1];
dwarf2_start_subfile (fe->name, dir);
@@ -17985,7 +17986,8 @@ psymtab_include_file_name (const struct line_header *lh, int file_index,
char *copied_name = NULL;
int file_is_pst;
- if (fe.dir_index && lh->include_dirs != NULL)
+ if (fe.dir_index && lh->include_dirs != NULL
+ && (fe.dir_index - 1) < lh->num_include_dirs)
dir_name = lh->include_dirs[fe.dir_index - 1];
if (!IS_ABSOLUTE_PATH (include_name)
@@ -18366,7 +18368,8 @@ dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu,
struct file_entry *fe = &lh->file_names[state_machine.file - 1];
const char *dir = NULL;
- if (fe->dir_index && lh->include_dirs != NULL)
+ if (fe->dir_index && lh->include_dirs != NULL
+ && (fe->dir_index - 1) < lh->num_include_dirs)
dir = lh->include_dirs[fe->dir_index - 1];
dwarf2_start_subfile (fe->name, dir);
@@ -18529,7 +18532,8 @@ dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu,
else
{
fe = &lh->file_names[state_machine.file - 1];
- if (fe->dir_index && lh->include_dirs != NULL)
+ if (fe->dir_index && lh->include_dirs != NULL
+ && (fe->dir_index - 1) < lh->num_include_dirs)
dir = lh->include_dirs[fe->dir_index - 1];
if (record_lines_p)
{
@@ -18671,7 +18675,8 @@ dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
struct file_entry *fe;
fe = &lh->file_names[i];
- if (fe->dir_index && lh->include_dirs != NULL)
+ if (fe->dir_index && lh->include_dirs != NULL
+ && (fe->dir_index - 1) < lh->num_include_dirs)
dir = lh->include_dirs[fe->dir_index - 1];
dwarf2_start_subfile (fe->name, dir);
@@ -21380,7 +21385,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
- || lh->include_dirs == NULL)
+ || lh->include_dirs == NULL
+ || (fe->dir_index - 1) >= lh->num_include_dirs)
return xstrdup (fe->name);
return concat (lh->include_dirs[fe->dir_index - 1], SLASH_STRING,
fe->name, (char *) NULL);