gdb/dwarf: change read_loclist_index complaints into errors
authorSimon Marchi <simon.marchi@efficios.com>
Tue, 2 Feb 2021 15:40:50 +0000 (10:40 -0500)
committerSimon Marchi <simon.marchi@polymtl.ca>
Tue, 2 Feb 2021 15:40:50 +0000 (10:40 -0500)
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

gdb/ChangeLog
gdb/dwarf2/read.c

index 0592c8643d6e88257d37b342f6a79a034cea0381..dcbfc77761d5b5bd568cab39ea701bc86b8b59bb 100644 (file)
@@ -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
index 0a00f89cf6dec93d968b1f3569c4977af05321f9..a9f7ce3a3122e4cc209153a6615df577d0c43fa9 100644 (file)
@@ -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;