This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
FYI: fix gdb index buglets
- From: Tom Tromey <tromey at redhat dot com>
- To: gdb-patches at sourceware dot org
- Date: Fri, 24 Sep 2010 10:11:19 -0600
- Subject: FYI: fix gdb index buglets
I am checking this in.
I noticed a couple of spots in dwarf2read.c where we weren't using
MAYBE_SWAP on items in the mapped index. This would cause failures on a
big-endian host.
Tom
2010-09-24 Tom Tromey <tromey@redhat.com>
* dwarf2read.c (dw2_expand_symtabs_matching): Add missing
MAYBE_SWAPs.
(dw2_map_symbol_names): Likewise.
Index: dwarf2read.c
===================================================================
RCS file: /cvs/src/src/gdb/dwarf2read.c,v
retrieving revision 1.460
diff -u -r1.460 dwarf2read.c
--- dwarf2read.c 22 Sep 2010 19:22:44 -0000 1.460
+++ dwarf2read.c 24 Sep 2010 16:06:07 -0000
@@ -2382,10 +2382,12 @@
{
int i;
offset_type iter;
+ struct mapped_index *index;
dw2_setup (objfile);
if (!dwarf2_per_objfile->index_table)
return;
+ index = dwarf2_per_objfile->index_table;
for (i = 0; i < (dwarf2_per_objfile->n_comp_units
+ dwarf2_per_objfile->n_type_comp_units); ++i)
@@ -2411,28 +2413,24 @@
}
}
- for (iter = 0;
- iter < dwarf2_per_objfile->index_table->index_table_slots;
- ++iter)
+ for (iter = 0; iter < index->index_table_slots; ++iter)
{
offset_type idx = 2 * iter;
const char *name;
offset_type *vec, vec_len, vec_idx;
- if (dwarf2_per_objfile->index_table->index_table[idx] == 0
- && dwarf2_per_objfile->index_table->index_table[idx + 1] == 0)
+ if (index->index_table[idx] == 0 && index->index_table[idx + 1] == 0)
continue;
- name = (dwarf2_per_objfile->index_table->constant_pool
- + dwarf2_per_objfile->index_table->index_table[idx]);
+ name = index->constant_pool + MAYBE_SWAP (index->index_table[idx]);
if (! (*name_matcher) (name, data))
continue;
/* The name was matched, now expand corresponding CUs that were
marked. */
- vec = (offset_type *) (dwarf2_per_objfile->index_table->constant_pool
- + dwarf2_per_objfile->index_table->index_table[idx + 1]);
+ vec = (offset_type *) (index->constant_pool
+ + MAYBE_SWAP (index->index_table[idx + 1]));
vec_len = MAYBE_SWAP (vec[0]);
for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
{
@@ -2476,25 +2474,24 @@
void *data)
{
offset_type iter;
+ struct mapped_index *index;
+
dw2_setup (objfile);
if (!dwarf2_per_objfile->index_table)
return;
+ index = dwarf2_per_objfile->index_table;
- for (iter = 0;
- iter < dwarf2_per_objfile->index_table->index_table_slots;
- ++iter)
+ for (iter = 0; iter < index->index_table_slots; ++iter)
{
offset_type idx = 2 * iter;
const char *name;
offset_type *vec, vec_len, vec_idx;
- if (dwarf2_per_objfile->index_table->index_table[idx] == 0
- && dwarf2_per_objfile->index_table->index_table[idx + 1] == 0)
+ if (index->index_table[idx] == 0 && index->index_table[idx + 1] == 0)
continue;
- name = (dwarf2_per_objfile->index_table->constant_pool
- + dwarf2_per_objfile->index_table->index_table[idx]);
+ name = (index->constant_pool + MAYBE_SWAP (index->index_table[idx]));
(*fun) (name, data);
}