aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDoug Evans <dje@google.com>2009-02-17 06:14:17 +0000
committerDoug Evans <dje@google.com>2009-02-17 06:14:17 +0000
commit1903f0e64bb6f600388af42a7af7aff02e70bdef (patch)
tree38b72309b83508ccf9dc30ebce511f549d2fb988 /gdb/testsuite/gdb.arch/amd64-disp-step.S
parent*** empty log message *** (diff)
downloadbinutils-gdb-1903f0e64bb6f600388af42a7af7aff02e70bdef.tar.gz
binutils-gdb-1903f0e64bb6f600388af42a7af7aff02e70bdef.tar.bz2
binutils-gdb-1903f0e64bb6f600388af42a7af7aff02e70bdef.zip
* amd64-tdep.c (amd64_skip_prefixes): Renamed from skip_prefixes.
All callers updated. (amd64_get_insn_details): Handle more 3-byte opcode insns. (amd64_breakpoint_p): Delete. (amd64_displaced_step_fixup): When fixing up after stepping an int3, don't back up pc to the start of the int3. * i386-tdep.c: #include opcode/i386.h. (i386_skip_prefixes): New function. (i386_absolute_jmp_p): Constify argument. (i386_absolute_call_p,i386_ret_p,i386_call_p,i386_syscall_p): Ditto. (i386_breakpoint_p): Delete. (i386_displaced_step_fixup): Handle unnecessary or redundant prefixes. When fixing up after stepping an int3, don't back up pc to the start of the int3. * gdb.arch/amd64-disp-step.S (test_int3): New test. * gdb.arch/amd64-disp-step.exp (test_int3): New test. * gdb.arch/i386-disp-step.S (test_prefixed_abs_jump): New test. (test_prefixed_syscall,test_int3): New tests. * gdb.arch/i386-disp-step.exp (test_prefixed_abs_jump): New test. (test_prefixed_syscall,test_int3): New tests.
Diffstat (limited to 'gdb/testsuite/gdb.arch/amd64-disp-step.S')
-rw-r--r--gdb/testsuite/gdb.arch/amd64-disp-step.S28
1 files changed, 28 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.arch/amd64-disp-step.S b/gdb/testsuite/gdb.arch/amd64-disp-step.S
index 45eeb9b17da..1ce0184c8fb 100644
--- a/gdb/testsuite/gdb.arch/amd64-disp-step.S
+++ b/gdb/testsuite/gdb.arch/amd64-disp-step.S
@@ -23,6 +23,8 @@
main:
nop
+/***********************************************/
+
/* test call/ret */
.global test_call
@@ -33,6 +35,8 @@ test_call:
test_ret_end:
nop
+/***********************************************/
+
/* test abs-jmp/rep-ret */
test_abs_jmp_setup:
@@ -48,6 +52,8 @@ test_abs_jmp_return:
test_rep_ret_end:
nop
+/***********************************************/
+
/* test syscall */
.global test_syscall
@@ -58,6 +64,24 @@ test_syscall:
test_syscall_end:
nop
+/***********************************************/
+
+/* Test stepping over int3.
+ The prefixes are pointless, but it's possible, so we exercise it. */
+
+ nop
+ .global test_int3
+test_int3:
+ repz
+ repz
+ int3
+ nop
+ .global test_int3_end
+test_int3_end:
+ nop
+
+/***********************************************/
+
/* test rip-relative
GDB picks a spare register to hold the rip-relative address.
Exercise all the possibilities (rax-rdi, sans rsp). */
@@ -118,6 +142,8 @@ test_rip_rdi_end:
answer: .8byte 42
+/***********************************************/
+
/* all done */
done:
@@ -139,6 +165,8 @@ test_call_end:
test_ret:
ret
+/***********************************************/
+
/* subroutine to help test abs-jmp/rep-ret */
test_abs_jmp_subr: