From 2077afddd4575079d8b4a9592a45d600242f3257 Mon Sep 17 00:00:00 2001 From: Tiago Daitx Date: Thu, 24 Jan 2013 20:36:03 +0000 Subject: [PATCH] gdb/ * symtab.c (skip_prologue_using_sal): Consider a file change the same as an increased line number gdb/testsuite/ * gdb.base/prologue-include.c: New file. * gdb.base/prologue-include.exp: New file. * gdb.base/prologue-include.h: New file. --- gdb/ChangeLog | 5 ++++ gdb/symtab.c | 4 ++++ gdb/testsuite/ChangeLog | 6 +++++ gdb/testsuite/gdb.base/prologue-include.c | 25 ++++++++++++++++++++ gdb/testsuite/gdb.base/prologue-include.exp | 26 +++++++++++++++++++++ gdb/testsuite/gdb.base/prologue-include.h | 19 +++++++++++++++ 6 files changed, 85 insertions(+) create mode 100644 gdb/testsuite/gdb.base/prologue-include.c create mode 100644 gdb/testsuite/gdb.base/prologue-include.exp create mode 100644 gdb/testsuite/gdb.base/prologue-include.h 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;