aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorJan Kratochvil <jan.kratochvil@redhat.com>2009-09-29 19:24:46 +0000
committerJan Kratochvil <jan.kratochvil@redhat.com>2009-09-29 19:24:46 +0000
commit8172766a9309627ee68f193fc5443af78f1d8f85 (patch)
treed6398c3d26c1c1e6fc16dbf778ccacc9001e3f21 /gdb
parent0f73703cc3c04d3fa71e054d5ec7847e61b63a86 (diff)
downloadgdb-8172766a9309627ee68f193fc5443af78f1d8f85.zip
gdb-8172766a9309627ee68f193fc5443af78f1d8f85.tar.gz
gdb-8172766a9309627ee68f193fc5443af78f1d8f85.tar.bz2
gdb/testsuite/
* gdb.base/breakpoint-shadow.exp: Move the ia64 part into ... * gdb.arch/ia64-breakpoint-shadow.exp: ... a new file, with new tests. * gdb.arch/ia64-breakpoint-shadow.S: New file.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/testsuite/ChangeLog6
-rw-r--r--gdb/testsuite/gdb.arch/ia64-breakpoint-shadow.S44
-rw-r--r--gdb/testsuite/gdb.arch/ia64-breakpoint-shadow.exp80
-rw-r--r--gdb/testsuite/gdb.base/breakpoint-shadow.exp24
4 files changed, 131 insertions, 23 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 96f313a..7297f0c 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2009-09-29 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * gdb.base/breakpoint-shadow.exp: Move the ia64 part into ...
+ * gdb.arch/ia64-breakpoint-shadow.exp: ... a new file, with new tests.
+ * gdb.arch/ia64-breakpoint-shadow.S: New file.
+
2009-09-29 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
* gdb.objc/basicclass.exp: Disable pending breakpoint query.
diff --git a/gdb/testsuite/gdb.arch/ia64-breakpoint-shadow.S b/gdb/testsuite/gdb.arch/ia64-breakpoint-shadow.S
new file mode 100644
index 0000000..ad88286
--- /dev/null
+++ b/gdb/testsuite/gdb.arch/ia64-breakpoint-shadow.S
@@ -0,0 +1,44 @@
+/* Copyright 2009 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/>.
+
+ This file is part of the gdb testsuite.
+ It tests displaced stepping over various insns that require special
+ handling. */
+
+ .text
+ .align 16
+ .global main
+ .proc main
+main:
+ mov r2=r12
+ mov r14=1
+ ;;
+bundle:
+ /* Store value 1 into `long' variable on stack. */
+ st8.rel [r2]=r14
+ /* This long constant requires L-X slot in this bundle. */
+ movl r14=0x7fffffff
+ ;;
+ /* Store value 0x7fffffff into `long' variable on stack. */
+ st8.rel [r2]=r14
+ mov r14=r0
+ ;;
+ mov r8=r14
+ mov r12=r2
+ br.ret.sptk.many b0
+
+ .endp main
+
+ .section .note.GNU-stack,"",@progbits
diff --git a/gdb/testsuite/gdb.arch/ia64-breakpoint-shadow.exp b/gdb/testsuite/gdb.arch/ia64-breakpoint-shadow.exp
new file mode 100644
index 0000000..3d26c47
--- /dev/null
+++ b/gdb/testsuite/gdb.arch/ia64-breakpoint-shadow.exp
@@ -0,0 +1,80 @@
+# Copyright 2009 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/>.
+
+if ![istarget "ia64-*-*"] {
+ verbose "Skipping ia64-breakpoint-shadow test."
+ return
+}
+
+set testfile ia64-breakpoint-shadow
+set srcfile ${testfile}.S
+set binfile ${objdir}/${subdir}/${testfile}
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
+ untested "Couldn't compile test program"
+ return -1
+}
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load ${binfile}
+
+# We need to start the inferior to place the breakpoints in the memory at all.
+if ![runto_main] {
+ untested start
+ return -1
+}
+
+# The default "auto" mode removes all the breakpoints when we stop (and not
+# running the nonstop mode). We would not be able to test the shadow.
+gdb_test "set breakpoint always-inserted on"
+gdb_test "show breakpoint always-inserted" "Always inserted breakpoint mode is on."
+
+set match "\nDump of assembler code for function main:\r\n(.*)End of assembler dump.\r\n$gdb_prompt $"
+
+set test "disassembly without breakpoints"
+gdb_test_multiple "disass main" $test {
+ -re $match {
+ set orig $expect_out(1,string)
+ pass $test
+ }
+}
+
+set test "slot 0 breakpoint placed"
+gdb_test_multiple "b bundle" $test {
+ -re "Breakpoint \[0-9\] at (0x\[0-9a-f\]*0):.*$gdb_prompt $" {
+ pass $test
+ set bpt2address $expect_out(1,string)
+ }
+}
+
+if ![info exists bpt2address] {
+ return -1
+}
+
+gdb_test "b *($bpt2address + 1)" "Breakpoint \[0-9\] at .*" "slot 1 breakpoint placed"
+gdb_test "b *($bpt2address + 2)" "Can't insert breakpoint for non-existing slot X" "slot 2 (slot X) breakpoint refusal"
+
+set test "disassembly with breakpoints"
+gdb_test_multiple "disass main" $test {
+ -re $match {
+ set got $expect_out(1,string)
+ if [string equal -nocase $orig $got] {
+ pass $test
+ } else {
+ fail $test
+ }
+ }
+}
diff --git a/gdb/testsuite/gdb.base/breakpoint-shadow.exp b/gdb/testsuite/gdb.base/breakpoint-shadow.exp
index a787bb6..fcc50dd 100644
--- a/gdb/testsuite/gdb.base/breakpoint-shadow.exp
+++ b/gdb/testsuite/gdb.base/breakpoint-shadow.exp
@@ -48,29 +48,7 @@ gdb_test_multiple "disass main" $test {
}
gdb_test "b [gdb_get_line_number "break-first"]" "Breakpoint \[0-9\] at .*" "First breakpoint placed"
-set test "Second breakpoint placed"
-gdb_test_multiple "b [gdb_get_line_number "break-second"]" $test {
- -re "Breakpoint \[0-9\] at (0x\[0-9a-f\]*):.*$gdb_prompt $" {
- pass $test
- set bpt2address $expect_out(1,string)
- }
-}
-
-if [istarget "ia64-*-*"] then {
- # Unoptimized code should not use the 3rd slot for the first instruction of
- # a source line. This is important for our test, because we want both
- # breakpoints ("Second breakpoint" and the following one) to be in the same
- # bundle.
-
- set test "Second breakpoint address is valid on ia64"
- if [string match "*\[01\]" $bpt2address] {
- pass $test
-
- gdb_test "b *($bpt2address + 1)" "Breakpoint \[0-9\] at .*" "Third breakpoint on ia64 in the Second breakpoint's bundle"
- } else {
- unresolved $test
- }
-}
+gdb_test "b [gdb_get_line_number "break-second"]" "Breakpoint \[0-9\] at .*" "Second breakpoint placed"
set test "disassembly with breakpoints"
gdb_test_multiple "disass main" $test {