diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 2056b31d98..690f76a046 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2009-07-14 Ulrich Weigand + + * objfiles.c (objfile_relocate): Do not relocate the same + BLOCKVECTOR_MAP address map multiple times. + 2009-07-14 Ulrich Weigand * remote.c (process_stop_reply): Access expedited target registers diff --git a/gdb/objfiles.c b/gdb/objfiles.c index 795d53b3f5..69b366f0e6 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) {