Hello, ok, second try... This patch only modifies breakpoint.c It "expands" the sals returned by decode_line_1(). Means all symtabs are searched for a linetable entries that match the required filename and lineno (returned by decode_line_1()) and then new sal's are created, and this creates (in some cases, e.g. C++ constructors of gcc 4) more then one breakpoint at the same line and file, but at different pc's. The expand is done in a new function called breakpoint_sals_expand(). On a i686 platform with gcc 4.0 i had no problems with this modification so far. I think, it works good enough for me ;) At least till the gdb experts fix this problem themselfs ;) -Thomas Maier On Sun, 1 May 2005 17:56:08 -0400, Daniel Jacobowitz wrote: > On Sun, May 01, 2005 at 10:53:05PM +0200, Thomas Maier wrote: >> Ok, hmm, then the code in find_line_symtab() must not return one symtab, >> which is used to find one or more references to the lineno, it must >> return >> a list of symtabs with references to this lineno. Means, a similar >> search >> over all symtabs which is already done in find_line_symtab(). >> Would that be enough to handle the file:lineno case? >> >> (If yes it think a new function like find_multi_line_symtab() is the >> best >> way to do it, then in decode_all_digits() fill in the sals with the >> found >> symtabs + linenos) > > It's a representation problem. I found it much more effective to have > decode_line_1 only return one symtab_and_line structure, and then > expand them to multiple PCs later, regardless of whether the symtab > returned was the only relevant one. Otherwise, things like "list" will > get confused. >