> Hi all, > I finally downloaded the source and since it had the same problem as before, I > started tracking the problem > > It boils down to the test in breakpoint.c in the function > breakpoint_re_set_one. > > if (b->address != sals.sals[i].pc > /* ...or new and old breakpoints both have source files, and > the source file name or the line number changes... */ > || (b->source_file != NULL > && sals.sals[i].symtab != NULL > && (!STREQ (b->source_file, sals.sals[i].symtab->filename) > || b->line_number != sals.sals[i].line) > ) > /* ...or we switch between having a source file and not having > one. */ > || ((b->source_file == NULL) != (sals.sals[i].symtab == NULL)) > ) > > The problem is that the b->address == sals.sals[i].pc the moment the library > is loaded back into memory. > Before the symbol stored in the breakpoint data structure is not valid (and > reported as such by the debugger) > Once it is valid (library loaded) the cached address is still the same as the > (new) address and then the above test > FALSELY presumes that is does not need to (re)set the breakpoint ! > > I hope somebody who understands the structure of the code better that I do > reads this and can FIX this problem ! I will download the snapshot the > moment this problem is solved ! > > Somebody ??? > > Wim Delvaux