From b101f7a1257f10f7e9d596bef5c59b4ae082f4ab Mon Sep 17 00:00:00 2001
From: Ulrich Weigand <uweigand@de.ibm.com>
Date: Tue, 14 Jul 2009 14:55:06 +0000
Subject: [PATCH] 	* objfiles.c (objfile_relocate): Do not relocate the
 same 	BLOCKVECTOR_MAP address map multiple times.

---
 gdb/ChangeLog  | 5 +++++
 gdb/objfiles.c | 7 ++++---
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 2056b31d98a..690f76a0461 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2009-07-14  Ulrich Weigand  <uweigand@de.ibm.com>
+
+	* objfiles.c (objfile_relocate): Do not relocate the same
+	BLOCKVECTOR_MAP address map multiple times.
+
 2009-07-14  Ulrich Weigand  <uweigand@de.ibm.com>
 
 	* remote.c (process_stop_reply): Access expedited target registers
diff --git a/gdb/objfiles.c b/gdb/objfiles.c
index 795d53b3f54..69b366f0e60 100644
--- a/gdb/objfiles.c
+++ b/gdb/objfiles.c
@@ -570,6 +570,10 @@ objfile_relocate (struct objfile *objfile, struct section_offsets *new_offsets)
 	continue;
 
       bv = BLOCKVECTOR (s);
+      if (BLOCKVECTOR_MAP (bv))
+	addrmap_relocate (BLOCKVECTOR_MAP (bv),
+			  ANOFFSET (delta, s->block_line_section));
+
       for (i = 0; i < BLOCKVECTOR_NBLOCKS (bv); ++i)
 	{
 	  struct block *b;
@@ -579,9 +583,6 @@ objfile_relocate (struct objfile *objfile, struct section_offsets *new_offsets)
 	  b = BLOCKVECTOR_BLOCK (bv, i);
 	  BLOCK_START (b) += ANOFFSET (delta, s->block_line_section);
 	  BLOCK_END (b) += ANOFFSET (delta, s->block_line_section);
-          if (BLOCKVECTOR_MAP (bv))
-            addrmap_relocate (BLOCKVECTOR_MAP (bv),
-                              ANOFFSET (delta, s->block_line_section));
 
 	  ALL_BLOCK_SYMBOLS (b, iter, sym)
 	    {
-- 
GitLab