diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 0592c8643d6..dcbfc77761d 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2021-02-02 Simon Marchi + + * dwarf2/read.c (read_loclist_index): Change complaints into + errors. + 2021-02-02 Tom de Vries PR symtab/24620 diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index 0a00f89cf6d..a9f7ce3a312 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;