* linespec.c (minsym_found): Advance to the next line if possible.

* gdb.base/prologue.c, gdb.base/prologue.exp: New.
	* lib/gdb.exp (gdb_breakpoint): Handle "temporary".
This commit is contained in:
Daniel Jacobowitz
2007-07-31 19:58:40 +00:00
parent 6b3d9b8313
commit e48883f791
6 changed files with 139 additions and 2 deletions

View File

@@ -1833,11 +1833,27 @@ minsym_found (int funfirstline, struct minimal_symbol *msymbol)
values.sals[0].section = SYMBOL_BFD_SECTION (msymbol);
if (funfirstline)
{
struct symtab_and_line sal;
values.sals[0].pc
+= gdbarch_deprecated_function_start_offset (current_gdbarch);
values.sals[0].pc = gdbarch_skip_prologue
(current_gdbarch, values.sals[0].pc);
sal = find_pc_sect_line (values.sals[0].pc, values.sals[0].section, 0);
/* Check if SKIP_PROLOGUE left us in mid-line, and the next
line is still part of the same function. If there is no
line information here, sal.pc will be the passed in PC. */
if (sal.pc != values.sals[0].pc
&& (lookup_minimal_symbol_by_pc_section (values.sals[0].pc,
values.sals[0].section)
== lookup_minimal_symbol_by_pc_section (sal.end,
values.sals[0].section)))
/* Recalculate the line number (might not be N+1). */
values.sals[0] = find_pc_sect_line (sal.end, values.sals[0].section, 0);
}
values.nelts = 1;
return values;
}