aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2009-08-17 11:16:13 +0000
committerPedro Alves <palves@redhat.com>2009-08-17 11:16:13 +0000
commitf1f2b5f40ef91b70acaa733f6f92f08de5efa29f (patch)
tree398dff7db313fd1e923f87797f5a78beac52ee40
parented4e4aa28d1d647a2f20971db49c975121156e2d (diff)
downloadgdb-f1f2b5f40ef91b70acaa733f6f92f08de5efa29f.zip
gdb-f1f2b5f40ef91b70acaa733f6f92f08de5efa29f.tar.gz
gdb-f1f2b5f40ef91b70acaa733f6f92f08de5efa29f.tar.bz2
2009-08-17 Pedro Alves <pedro@codesourcery.com>>
* objfiles.c (objfile_relocate): Relocate the entry point before relocating the section offsets. Flush the section map before resetting breakpoints.
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/objfiles.c16
2 files changed, 15 insertions, 7 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 4215476..3a02f7d 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2009-08-17 Pedro Alves <pedro@codesourcery.com>>
+
+ * objfiles.c (objfile_relocate): Relocate the entry point before
+ relocating the section offsets. Flush the section map before
+ resetting breakpoints.
+
2009-08-14 Doug Evans <dje@google.com>
* symfile.c (find_separate_debug_file): Remove double free of
diff --git a/gdb/objfiles.c b/gdb/objfiles.c
index 586f5d0..92db65e 100644
--- a/gdb/objfiles.c
+++ b/gdb/objfiles.c
@@ -666,12 +666,6 @@ objfile_relocate (struct objfile *objfile, struct section_offsets *new_offsets)
to be out of order. */
msymbols_sort (objfile);
- {
- int i;
- for (i = 0; i < objfile->num_sections; ++i)
- (objfile->section_offsets)->offsets[i] = ANOFFSET (new_offsets, i);
- }
-
if (objfile->ei.entry_point != ~(CORE_ADDR) 0)
{
/* Relocate ei.entry_point with its section offset, use SECT_OFF_TEXT
@@ -684,6 +678,15 @@ objfile_relocate (struct objfile *objfile, struct section_offsets *new_offsets)
objfile->ei.entry_point += ANOFFSET (delta, SECT_OFF_TEXT (objfile));
}
+ {
+ int i;
+ for (i = 0; i < objfile->num_sections; ++i)
+ (objfile->section_offsets)->offsets[i] = ANOFFSET (new_offsets, i);
+ }
+
+ /* Rebuild section map next time we need it. */
+ objfiles_changed_p = 1;
+
/* Update the table in exec_ops, used to read memory. */
ALL_OBJFILE_OSECTIONS (objfile, s)
{
@@ -695,7 +698,6 @@ objfile_relocate (struct objfile *objfile, struct section_offsets *new_offsets)
/* Relocate breakpoints as necessary, after things are relocated. */
breakpoint_re_set ();
- objfiles_changed_p = 1; /* Rebuild section map next time we need it. */
}
/* Many places in gdb want to test just to see if we have any partial