This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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);
     }


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]