From b260e109836fc4bc884fb3f66cbc24b77931c026 Mon Sep 17 00:00:00 2001 From: Jan Kratochvil Date: Mon, 11 Jan 2010 18:15:05 +0000 Subject: [PATCH] gdb/ * objfiles.c (objfile_relocate1): Change the return type to int. Describe the new return value. Return non-zero if data changed. (objfile_relocate): New variable changed. Set it. Call breakpoint_re_set depending on CHANGED. --- gdb/ChangeLog | 7 +++++++ gdb/objfiles.c | 18 ++++++++++++------ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 34dcb5dc7e3..2082d653557 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2010-01-11 Jan Kratochvil + + * objfiles.c (objfile_relocate1): Change the return type to int. + Describe the new return value. Return non-zero if data changed. + (objfile_relocate): New variable changed. Set it. Call + breakpoint_re_set depending on CHANGED. + 2010-01-11 Jan Kratochvil Implement binary numbers parsing. diff --git a/gdb/objfiles.c b/gdb/objfiles.c index d1e441b4189..0b07e370916 100644 --- a/gdb/objfiles.c +++ b/gdb/objfiles.c @@ -693,9 +693,10 @@ free_all_objfiles (void) } /* Relocate OBJFILE to NEW_OFFSETS. There should be OBJFILE->NUM_SECTIONS - entries in new_offsets. SEPARATE_DEBUG_OBJFILE is not touched here. */ + entries in new_offsets. SEPARATE_DEBUG_OBJFILE is not touched here. + Return non-zero iff any change happened. */ -static void +static int objfile_relocate1 (struct objfile *objfile, struct section_offsets *new_offsets) { struct obj_section *s; @@ -714,7 +715,7 @@ objfile_relocate1 (struct objfile *objfile, struct section_offsets *new_offsets) something_changed = 1; } if (!something_changed) - return; + return 0; } /* OK, get all the symtabs. */ @@ -850,6 +851,9 @@ objfile_relocate1 (struct objfile *objfile, struct section_offsets *new_offsets) exec_set_section_address (bfd_get_filename (objfile->obfd), idx, obj_section_addr (s)); } + + /* Data changed. */ + return 1; } /* Relocate OBJFILE to NEW_OFFSETS. There should be OBJFILE->NUM_SECTIONS @@ -865,8 +869,9 @@ void objfile_relocate (struct objfile *objfile, struct section_offsets *new_offsets) { struct objfile *debug_objfile; + int changed = 0; - objfile_relocate1 (objfile, new_offsets); + changed |= objfile_relocate1 (objfile, new_offsets); for (debug_objfile = objfile->separate_debug_objfile; debug_objfile; @@ -894,13 +899,14 @@ objfile_relocate (struct objfile *objfile, struct section_offsets *new_offsets) debug_objfile->num_sections, objfile_addrs); - objfile_relocate1 (debug_objfile, new_debug_offsets); + changed |= objfile_relocate1 (debug_objfile, new_debug_offsets); do_cleanups (my_cleanups); } /* Relocate breakpoints as necessary, after things are relocated. */ - breakpoint_re_set (); + if (changed) + breakpoint_re_set (); } /* Return non-zero if OBJFILE has partial symbols. */ -- 2.30.2