aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.arch/arm-disp-step.exp
diff options
context:
space:
mode:
authorYao Qi <yao@codesourcery.com>2011-05-05 02:51:28 +0000
committerYao Qi <yao@codesourcery.com>2011-05-05 02:51:28 +0000
commit0c51be18c45bee00b7cb15079f9c6e9524c1d1eb (patch)
tree9c711a05af973e06a0cd3854f6e2964e4db87aec /gdb/testsuite/gdb.arch/arm-disp-step.exp
parente41e6462129a9020f186bd756aad57d81d3f5cdb (diff)
downloadfsf-binutils-gdb-0c51be18c45bee00b7cb15079f9c6e9524c1d1eb.zip
fsf-binutils-gdb-0c51be18c45bee00b7cb15079f9c6e9524c1d1eb.tar.gz
fsf-binutils-gdb-0c51be18c45bee00b7cb15079f9c6e9524c1d1eb.tar.bz2
2011-05-05 Yao Qi <yao@codesourcery.com>
* gdb.arch/arm-disp-step.S(test_ldr_literal): New. (test_adr_32bit, test_pop_pc): New. * gdb.arch/arm-disp-step.exp (test_ldr_literal): New. (test_adr_32bit, test_pop_pc): New.
Diffstat (limited to 'gdb/testsuite/gdb.arch/arm-disp-step.exp')
-rw-r--r--gdb/testsuite/gdb.arch/arm-disp-step.exp88
1 files changed, 88 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.arch/arm-disp-step.exp b/gdb/testsuite/gdb.arch/arm-disp-step.exp
index 3bea521..0427a04 100644
--- a/gdb/testsuite/gdb.arch/arm-disp-step.exp
+++ b/gdb/testsuite/gdb.arch/arm-disp-step.exp
@@ -68,6 +68,42 @@ proc test_ldm_stm_pc {} {
gdb_continue_to_breakpoint "continue to test_ldm_stm_pc_ret" \
".*bx lr.*"
}
+
+#########################################
+# Test ldrX literal
+proc test_ldr_literal {} {
+ global srcfile
+ global gdb_prompt
+
+ gdb_test_multiple "break *test_ldr_literal" "break test_ldr_literal" {
+ -re "Breakpoint.*at.* file .*$srcfile, line.*\r\n$gdb_prompt $" {
+ pass "break test_ldr_literal"
+ }
+ -re "No symbol.*\r\n$gdb_prompt $" {
+ return 0
+ }
+ }
+
+ gdb_test "break *test_ldrsb_literal" \
+ "Breakpoint.*at.* file .*$srcfile, line.*" \
+ "break test_ldrsb_literal"
+ gdb_test "break *test_ldrsh_literal" \
+ "Breakpoint.*at.* file .*$srcfile, line.*" \
+ "break test_ldrsh_literal"
+ gdb_test "break *test_ldr_literal_end" \
+ "Breakpoint.*at.* file .*$srcfile, line.*" \
+ "break test_test_ldr_literal_end"
+
+ gdb_continue_to_breakpoint "continue to test_ldr_literal" \
+ ".*ldrh.*r0\,.*\[pc\].*"
+ gdb_continue_to_breakpoint "continue to test_ldrsb_literal" \
+ ".*ldrsb.*r0\,.*\[pc\].*"
+ gdb_continue_to_breakpoint "continue to test_ldrsh_literal" \
+ ".*ldrsh.*r0\,.*\[pc\].*"
+ gdb_continue_to_breakpoint "continue to test_ldr_literal_ret" \
+ ".*bx lr.*"
+}
+
##########################################
# Test call/ret.
proc test_call_ret {} {
@@ -126,6 +162,52 @@ proc test_ldr_from_pc {} {
".*bx lr.*"
}
+proc test_adr_32bit {} {
+ global srcfile
+ global gdb_prompt
+
+ gdb_test_multiple "break *test_adr_32bit" "break test_adr_32bit" {
+ -re "Breakpoint.*at.* file .*$srcfile, line.*\r\n$gdb_prompt $" {
+ pass "break test_adr"
+ }
+ -re "No symbol.*\r\n$gdb_prompt $" {
+ return 0
+ }
+ }
+
+ gdb_test "break *test_adr_32bit_after" \
+ "Breakpoint.*at.* file .*$srcfile, line.*" \
+ "break test_adr_32bit_after"
+
+ gdb_test "break *test_adr_32bit_end" \
+ "Breakpoint.*at.* file .*$srcfile, line.*" \
+ "break test_adr_32bit_end"
+
+ gdb_continue_to_breakpoint "test_adr_32bit" \
+ ".*adr.*r0\,.*\.L6.*"
+ gdb_continue_to_breakpoint "test_adr_32bit_after" \
+ ".*adr.*r0\,.*\.L6.*"
+ gdb_continue_to_breakpoint "test_adr_32bit_end" \
+ ".*bx lr.*"
+}
+
+#########################################
+# Test pop to PC
+proc test_pop_pc {} {
+ global srcfile
+ gdb_test "break *test_pop_pc_1" \
+ "Breakpoint.*at.* file .*$srcfile, line.*" \
+ "break test_pop_pc"
+ gdb_test "break *test_pop_pc_ret" \
+ "Breakpoint.*at.* file .*$srcfile, line.*" \
+ "break test_pop_pc_ret"
+
+ gdb_continue_to_breakpoint "continue to test_pop_pc" \
+ ".*b.*\{r1\, pc\}.*"
+ gdb_continue_to_breakpoint "continue to test_pop_pc_ret" \
+ ".*bx lr.*"
+}
+
###########################################
proc test_str_pc {} {
@@ -201,6 +283,12 @@ test_ldr_from_pc
test_ldm_stm_pc
+test_ldr_literal
+
+test_adr_32bit
+
+test_pop_pc
+
test_str_pc
##########################################