This patch makes gdb actually create breakpoints with multiple locations. First, we use decode_line_1 to get sal. After that, we try to find all PC values that correspond to the same file:line as the original sal. Those new sals are used for locations. Some care is taken not to generate extra sals when not necessary: - When breakpoint is requested at address, we don't expand at all. - We never generate two sals with PC values in the same block, so that if scheduler scattered the line, we don't set breakpoints on all pieces of a line. This patch includes testcases for constructors and templates. OK? - Volodya