summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Kratochvil <jan.kratochvil@redhat.com>2010-04-04 22:12:04 +0000
committerJan Kratochvil <jan.kratochvil@redhat.com>2010-04-04 22:12:04 +0000
commit91d6d46b0c1d3b5ae3602be139cb8780ded5b418 (patch)
treef8de34278c389851a69060b84d9c46c40a61591e
parentef9b9ef1ad140e93ebeec10320972a2c639d2e57 (diff)
downloadgdb-91d6d46b0c1d3b5ae3602be139cb8780ded5b418.tar.gz
gdb/
* infcmd.c (run_command_1): Call proceed with regcache_read_pc address. * config/djgpp/fnchange.lst: Add translation for break-entry.exp. gdb/testsuite/ * gdb.base/break-entry.exp: New.
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/config/djgpp/fnchange.lst1
-rw-r--r--gdb/infcmd.c5
-rw-r--r--gdb/testsuite/ChangeLog4
-rw-r--r--gdb/testsuite/gdb.base/break-entry.exp43
5 files changed, 56 insertions, 2 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 3db5070ee64..f79aa3fced8 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,10 @@
2010-04-04 Jan Kratochvil <jan.kratochvil@redhat.com>
+ * infcmd.c (run_command_1): Call proceed with regcache_read_pc address.
+ * config/djgpp/fnchange.lst: Add translation for break-entry.exp.
+
+2010-04-04 Jan Kratochvil <jan.kratochvil@redhat.com>
+
* breakpoint.c (bpstat_find_step_resume_breakpoint): Remove.
* breakpoint.h (bpstat_find_step_resume_breakpoint): Remove.
diff --git a/gdb/config/djgpp/fnchange.lst b/gdb/config/djgpp/fnchange.lst
index 3982f1d0ab1..eb9e8351945 100644
--- a/gdb/config/djgpp/fnchange.lst
+++ b/gdb/config/djgpp/fnchange.lst
@@ -371,6 +371,7 @@
@V@/gdb/testsuite/gdb.arch/powerpc-prologue.exp @V@/gdb/testsuite/gdb.arch/ppc-prologue.exp
@V@/gdb/testsuite/gdb.base/bitfields2.c @V@/gdb/testsuite/gdb.base/bitfiel2.c
@V@/gdb/testsuite/gdb.base/bitfields2.exp @V@/gdb/testsuite/gdb.base/bitfiel2.exp
+@V@/gdb/testsuite/gdb.base/break-entry.exp @V@/gdb/testsuite/gdb.base/brkentry.exp
@V@/gdb/testsuite/gdb.base/coremaker2.c @V@/gdb/testsuite/gdb.base/core2maker.c
@V@/gdb/testsuite/gdb.base/hashline1.exp @V@/gdb/testsuite/gdb.base/hash1line.exp
@V@/gdb/testsuite/gdb.base/hashline2.exp @V@/gdb/testsuite/gdb.base/hash2line.exp
diff --git a/gdb/infcmd.c b/gdb/infcmd.c
index db2232d4668..a803bcbbb45 100644
--- a/gdb/infcmd.c
+++ b/gdb/infcmd.c
@@ -580,8 +580,9 @@ run_command_1 (char *args, int from_tty, int tbreak_at_main)
has done its thing; now we are setting up the running program. */
post_create_inferior (&current_target, 0);
- /* Start the target running. */
- proceed ((CORE_ADDR) -1, TARGET_SIGNAL_0, 0);
+ /* Start the target running. Do not use -1 continuation as it would skip
+ breakpoint right at the entry point. */
+ proceed (regcache_read_pc (get_current_regcache ()), TARGET_SIGNAL_0, 0);
/* Since there was no error, there's no need to finish the thread
states here. */
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index aff549f05f9..27054c030e7 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2010-04-04 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * gdb.base/break-entry.exp: New.
+
2010-04-02 Hui Zhu <teawater@gmail.com>
Michael Snyder <msnyder@vmware.com>
diff --git a/gdb/testsuite/gdb.base/break-entry.exp b/gdb/testsuite/gdb.base/break-entry.exp
new file mode 100644
index 00000000000..d4b86a387cf
--- /dev/null
+++ b/gdb/testsuite/gdb.base/break-entry.exp
@@ -0,0 +1,43 @@
+# Copyright (C) 2010 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 <http://www.gnu.org/licenses/>.
+
+# Test inferior can stop at its very first instruction, usually "_start".
+# Dynamic executables have first instruction in ld.so.
+
+set testfile break-entry
+if { [prepare_for_testing ${testfile}.exp ${testfile} start.c {additional_flags=-static}] } {
+ return -1
+}
+
+set test "info files"
+set entry ""
+gdb_test_multiple $test $test {
+ -re "\r\n\[\t \]*Entry point:\[\t \]*(0x\[0-9a-f\]+)\r\n.*$gdb_prompt $" {
+ set entry $expect_out(1,string)
+ pass $test
+ }
+}
+if {$entry == ""} {
+ untested ${testfile}.exp
+ return
+}
+
+if ![runto "*$entry"] {
+ return
+}
+gdb_test {p/x $pc} " = $entry"
+
+gdb_breakpoint "main"
+gdb_continue_to_breakpoint "main" "main.*"