diff options
author | Tom Tromey <tom@tromey.com> | 2021-03-13 09:41:04 -0700 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2021-03-13 09:41:05 -0700 |
commit | 27012aba8a638a636940c2813f191383ccd713fd (patch) | |
tree | bc0df6613a30068e2bd663f019f0c352a6b387a5 /gdb | |
parent | e7d9022ba8755005cae79207b5f911b1a9cebed4 (diff) | |
download | binutils-27012aba8a638a636940c2813f191383ccd713fd.zip binutils-27012aba8a638a636940c2813f191383ccd713fd.tar.gz binutils-27012aba8a638a636940c2813f191383ccd713fd.tar.bz2 |
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 <tom@tromey.com>
* dwarf2/abbrev.c (abbrev_table::read): Remove Irix 6 workaround.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 4 | ||||
-rw-r--r-- | gdb/dwarf2/abbrev.c | 28 |
2 files changed, 13 insertions, 19 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 0157dea..4010e67 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,7 @@ +2021-03-13 Tom Tromey <tom@tromey.com> + + * dwarf2/abbrev.c (abbrev_table::read): Remove Irix 6 workaround. + 2021-03-12 Christian Biesinger <cbiesinger@google.com> PR threads/27239 diff --git a/gdb/dwarf2/abbrev.c b/gdb/dwarf2/abbrev.c index 9ece708..a8bdf71 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; |