> 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

Reply via email to