aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2021-03-13 09:41:04 -0700
committerTom Tromey <tom@tromey.com>2021-03-13 09:41:05 -0700
commit27012aba8a638a636940c2813f191383ccd713fd (patch)
treebc0df6613a30068e2bd663f019f0c352a6b387a5
parente7d9022ba8755005cae79207b5f911b1a9cebed4 (diff)
downloadgdb-27012aba8a638a636940c2813f191383ccd713fd.zip
gdb-27012aba8a638a636940c2813f191383ccd713fd.tar.gz
gdb-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.
-rw-r--r--gdb/ChangeLog4
-rw-r--r--gdb/dwarf2/abbrev.c28
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;