From: Tom Tromey Date: Sat, 13 Mar 2021 16:41:04 +0000 (-0700) Subject: Remove Irix 6 workaround from DWARF abbrev reader X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=27012aba8a6;p=binutils-gdb.git Remove Irix 6 workaround from DWARF abbrev reader abbrev_table::read has a workaround for Irix 6. The last release of Irix was in 2006, and (according to Wikipedia) hardware produced after 2007 cannot run Irix. I think this workaround can safely be retired. gdb/ChangeLog 2021-03-13 Tom Tromey * dwarf2/abbrev.c (abbrev_table::read): Remove Irix 6 workaround. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 0157dea6158..4010e6782e4 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,7 @@ +2021-03-13 Tom Tromey + + * dwarf2/abbrev.c (abbrev_table::read): Remove Irix 6 workaround. + 2021-03-12 Christian Biesinger PR threads/27239 diff --git a/gdb/dwarf2/abbrev.c b/gdb/dwarf2/abbrev.c index 9ece708a1ac..a8bdf7182de 100644 --- a/gdb/dwarf2/abbrev.c +++ b/gdb/dwarf2/abbrev.c @@ -84,7 +84,6 @@ abbrev_table::read (struct dwarf2_section_info *section, bfd *abfd = section->get_bfd_owner (); const gdb_byte *abbrev_ptr; struct abbrev_info *cur_abbrev; - unsigned int abbrev_number, bytes_read; abbrev_table_up abbrev_table (new struct abbrev_table (sect_off)); struct obstack *obstack = &abbrev_table->m_abbrev_obstack; @@ -92,12 +91,17 @@ abbrev_table::read (struct dwarf2_section_info *section, /* Caller must ensure this. */ gdb_assert (section->readin); abbrev_ptr = section->buffer + to_underlying (sect_off); - abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read); - abbrev_ptr += bytes_read; - /* Loop until we reach an abbrev number of 0. */ - while (abbrev_number) + while (true) { + unsigned int bytes_read; + /* Loop until we reach an abbrev number of 0. */ + unsigned int abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, + &bytes_read); + if (abbrev_number == 0) + break; + abbrev_ptr += bytes_read; + /* Start without any attrs. */ obstack_blank (obstack, offsetof (abbrev_info, attrs)); cur_abbrev = (struct abbrev_info *) obstack_base (obstack); @@ -144,20 +148,6 @@ abbrev_table::read (struct dwarf2_section_info *section, cur_abbrev = (struct abbrev_info *) obstack_finish (obstack); cur_abbrev->num_attrs = num_attrs; abbrev_table->add_abbrev (cur_abbrev); - - /* Get next abbreviation. - Under Irix6 the abbreviations for a compilation unit are not - always properly terminated with an abbrev number of 0. - Exit loop if we encounter an abbreviation which we have - already read (which means we are about to read the abbreviations - for the next compile unit) or if the end of the abbreviation - table is reached. */ - if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size) - break; - abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read); - abbrev_ptr += bytes_read; - if (abbrev_table->lookup_abbrev (abbrev_number) != NULL) - break; } return abbrev_table;