aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Jacobowitz <drow@false.org>2006-09-25 18:16:03 +0000
committerDaniel Jacobowitz <drow@false.org>2006-09-25 18:16:03 +0000
commiteb9a4096a7b02d72844ac1b4aa6b6a99b089e4b1 (patch)
tree12748cb756f54272b1cd2924cba38b7f48d404d2
parent75e047010efaf697b312396459d89485d66e3d7e (diff)
downloadgdb-eb9a4096a7b02d72844ac1b4aa6b6a99b089e4b1.zip
gdb-eb9a4096a7b02d72844ac1b4aa6b6a99b089e4b1.tar.gz
gdb-eb9a4096a7b02d72844ac1b4aa6b6a99b089e4b1.tar.bz2
gdb/testsuite/
* gdb.arch/thumb-prologue.c: Update breakpoint mechanism. Restore lr before returning for completeness. * gdb.arch/thumb-prologue.exp: Update to set a breakpoint.
-rw-r--r--ChangeLog.csl7
-rw-r--r--gdb/testsuite/gdb.arch/thumb-prologue.c22
-rw-r--r--gdb/testsuite/gdb.arch/thumb-prologue.exp4
3 files changed, 27 insertions, 6 deletions
diff --git a/ChangeLog.csl b/ChangeLog.csl
index c51db41..73a2bb3 100644
--- a/ChangeLog.csl
+++ b/ChangeLog.csl
@@ -1,3 +1,10 @@
+2006-09-25 Daniel Jacobowitz <dan@codesourcery.com>
+
+ gdb/testsuite/
+ * gdb.arch/thumb-prologue.c: Update breakpoint mechanism. Restore
+ lr before returning for completeness.
+ * gdb.arch/thumb-prologue.exp: Update to set a breakpoint.
+
2006-09-21 Daniel Jacobowitz <dan@codesourcery.com>
gdb/
diff --git a/gdb/testsuite/gdb.arch/thumb-prologue.c b/gdb/testsuite/gdb.arch/thumb-prologue.c
index f618963..d78083b 100644
--- a/gdb/testsuite/gdb.arch/thumb-prologue.c
+++ b/gdb/testsuite/gdb.arch/thumb-prologue.c
@@ -29,7 +29,8 @@ main (void)
}
/* Normally Thumb functions use r7 as the frame pointer. However,
- with the GCC option -mtpcs-frame, they may use fp instead. */
+ with the GCC option -mtpcs-frame, they may use fp instead. Make
+ sure that the prologue analyzer can handle this. */
asm(".text\n"
" .align 2\n"
@@ -51,8 +52,13 @@ asm(".text\n"
" mov r7, sl\n"
" push {r7}\n"
- /* Trap. */
- " .short 0xdffe\n"
+ /* We'll set a breakpoint at this call. We can't hardcode a trap
+ instruction; the right instruction to use varies too much. And
+ we can't use a global label, because GDB will think that's the
+ start of a new function. So, this slightly convoluted
+ technique. */
+ ".Ltpcs:\n"
+ " nop\n"
" pop {r2}\n"
" mov sl, r2\n"
@@ -63,6 +69,11 @@ asm(".text\n"
" bx lr\n"
" .align 2\n"
+ " .type tpcs_offset, %object\n"
+ "tpcs_offset:\n"
+ " .word .Ltpcs - tpcs_frame_1\n"
+
+ " .align 2\n"
" .thumb_func\n"
" .code 16\n"
"tpcs_frame:\n"
@@ -81,7 +92,7 @@ asm(".text\n"
" mov r7, sl\n"
" push {r7}\n"
- /* Clobber saved regs. */
+ /* Clobber saved regs around the call. */
" mov r7, #0\n"
" mov lr, r7\n"
" bl tpcs_frame_1\n"
@@ -89,8 +100,9 @@ asm(".text\n"
" pop {r2}\n"
" mov sl, r2\n"
" pop {r7}\n"
- " pop {r1, r2}\n"
+ " pop {r1, r2, r3}\n"
" mov fp, r1\n"
" mov sp, r2\n"
+ " mov lr, r3\n"
" bx lr\n"
);
diff --git a/gdb/testsuite/gdb.arch/thumb-prologue.exp b/gdb/testsuite/gdb.arch/thumb-prologue.exp
index 58a080f..57ee7a0 100644
--- a/gdb/testsuite/gdb.arch/thumb-prologue.exp
+++ b/gdb/testsuite/gdb.arch/thumb-prologue.exp
@@ -48,7 +48,9 @@ if ![runto_main] then {
# Testcase for TPCS prologue.
-gdb_test "continue" "Program received signal SIG.*" "continue to TPCS"
+gdb_breakpoint "* *(int *)tpcs_offset + (int) &tpcs_frame_1"
+gdb_test "continue" "Breakpoint .*, $hex in tpcs_frame_1 \\(\\)" \
+ "continue to TPCS"
gdb_test "backtrace 10" \
"#0\[ \t\]*$hex in tpcs_frame_1 .*\r\n#1\[ \t\]*$hex in tpcs_frame .*\r\n#2\[ \t\]*$hex in main.*" \