aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorSimon Marchi <simon.marchi@efficios.com>2021-02-02 10:40:50 -0500
committerSimon Marchi <simon.marchi@polymtl.ca>2021-02-02 10:40:50 -0500
commita0c1eeba9b13b759b058dd5640ccb0dc2630a723 (patch)
tree0f811556652afc721275b1c2c9b28515a1b3a762 /gdb
parent5424d7ed94cf5a7ca24636ab9f4e6d5c353fc0d3 (diff)
downloadgdb-a0c1eeba9b13b759b058dd5640ccb0dc2630a723.zip
gdb-a0c1eeba9b13b759b058dd5640ccb0dc2630a723.tar.gz
gdb-a0c1eeba9b13b759b058dd5640ccb0dc2630a723.tar.bz2
gdb/dwarf: change read_loclist_index complaints into errors
Unlike read_rnglists_index, read_loclist_index uses complaints when it detects an inconsistency (a DW_FORM_loclistx value without a .debug_loclists section or an offset outside of the section). I really think they should be errors, since there's no point in continuing if this situation happens, we will likely segfault or read garbage. gdb/ChangeLog: * dwarf2/read.c (read_loclist_index): Change complaints into errors. Change-Id: Ic3a1cf6e682d47cb6e739dd76fd7ca5be2637e10
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/dwarf2/read.c19
2 files changed, 16 insertions, 8 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 0592c86..dcbfc77 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2021-02-02 Simon Marchi <simon.marchi@efficios.com>
+
+ * dwarf2/read.c (read_loclist_index): Change complaints into
+ errors.
+
2021-02-02 Tom de Vries <tdevries@suse.de>
PR symtab/24620
diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c
index 0a00f89..a9f7ce3 100644
--- a/gdb/dwarf2/read.c
+++ b/gdb/dwarf2/read.c
@@ -20218,19 +20218,22 @@ read_loclist_index (struct dwarf2_cu *cu, ULONGEST loclist_index)
section->read (objfile);
if (section->buffer == NULL)
- complaint (_("DW_FORM_loclistx used without .debug_loclists "
- "section [in module %s]"), objfile_name (objfile));
+ error (_("DW_FORM_loclistx used without .debug_loclists "
+ "section [in module %s]"), objfile_name (objfile));
+
struct loclists_rnglists_header header;
read_loclists_rnglists_header (&header, section);
if (loclist_index >= header.offset_entry_count)
- complaint (_("DW_FORM_loclistx pointing outside of "
- ".debug_loclists offset array [in module %s]"),
- objfile_name (objfile));
+ error (_("DW_FORM_loclistx pointing outside of "
+ ".debug_loclists offset array [in module %s]"),
+ objfile_name (objfile));
+
if (loclist_base + loclist_index * cu->header.offset_size
>= section->size)
- complaint (_("DW_FORM_loclistx pointing outside of "
- ".debug_loclists section [in module %s]"),
- objfile_name (objfile));
+ error (_("DW_FORM_loclistx pointing outside of "
+ ".debug_loclists section [in module %s]"),
+ objfile_name (objfile));
+
const gdb_byte *info_ptr
= section->buffer + loclist_base + loclist_index * cu->header.offset_size;