diff --git a/gdb/ChangeLog b/gdb/ChangeLog index b6192d075d..94071bf1cf 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2013-01-24 Ulrich Weigand  + + * symtab.c (skip_prologue_using_sal): Consider a file + change the same as an increased line number + 2013-01-24 Tiago Stürmer Daitx  * MAINTAINERS (Write After Approval): Add myself to the list. diff --git a/gdb/symtab.c b/gdb/symtab.c index d40436a72b..b200b36d3c 100644 --- a/gdb/symtab.c +++ b/gdb/symtab.c @@ -4905,6 +4905,10 @@ skip_prologue_using_sal (struct gdbarch *gdbarch, CORE_ADDR func_addr) line mark the prologue -> body transition. */ if (sal.line >= prologue_sal.line) break; + /* Likewise if we are in a different symtab altogether + (e.g. within a file included via #include).  */ + if (sal.symtab != prologue_sal.symtab) + break; /* The line number is smaller. Check that it's from the same function, not something inlined. If it's inlined, diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 62cd5548da..46c7c5713f 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2013-01-24 Tiago Stürmer Daitx + + * gdb.base/prologue-include.c: New file. + * gdb.base/prologue-include.exp: New file. + * gdb.base/prologue-include.h: New file. + 2013-01-24 Hafiz Abid Qadeer PR gdb/13443 diff --git a/gdb/testsuite/gdb.base/prologue-include.c b/gdb/testsuite/gdb.base/prologue-include.c new file mode 100644 index 0000000000..c393e75293 --- /dev/null +++ b/gdb/testsuite/gdb.base/prologue-include.c @@ -0,0 +1,25 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2013 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +int +main (void) +{ + int i, j; +#include "prologue-include.h" + return 0; +} + diff --git a/gdb/testsuite/gdb.base/prologue-include.exp b/gdb/testsuite/gdb.base/prologue-include.exp new file mode 100644 index 0000000000..ed378b899b --- /dev/null +++ b/gdb/testsuite/gdb.base/prologue-include.exp @@ -0,0 +1,26 @@ +# Copyright (C) 2013 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +standard_testfile + +if { [prepare_for_testing ${testfile}.exp ${testfile}] } { + return -1 +} + +set bp_main [gdb_get_line_number "break main" ${testfile}.h] + +gdb_test "break main" \ + "Breakpoint.*at.* file .*$testfile.h, line $bp_main\\." \ + "breakpoint main" diff --git a/gdb/testsuite/gdb.base/prologue-include.h b/gdb/testsuite/gdb.base/prologue-include.h new file mode 100644 index 0000000000..77843e0586 --- /dev/null +++ b/gdb/testsuite/gdb.base/prologue-include.h @@ -0,0 +1,19 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2013 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + + i = 2; /* break main should stop here */ + j = 2;