diff options
author | Doug Evans <dje@google.com> | 2009-02-17 06:14:17 +0000 |
---|---|---|
committer | Doug Evans <dje@google.com> | 2009-02-17 06:14:17 +0000 |
commit | 1903f0e64bb6f600388af42a7af7aff02e70bdef (patch) | |
tree | 38b72309b83508ccf9dc30ebce511f549d2fb988 /gdb/testsuite/gdb.arch/i386-disp-step.S | |
parent | ed38e4b97416eca6ee43599ce82ccf4306adca18 (diff) | |
download | gdb-1903f0e64bb6f600388af42a7af7aff02e70bdef.zip gdb-1903f0e64bb6f600388af42a7af7aff02e70bdef.tar.gz gdb-1903f0e64bb6f600388af42a7af7aff02e70bdef.tar.bz2 |
* 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/i386-disp-step.S')
-rw-r--r-- | gdb/testsuite/gdb.arch/i386-disp-step.S | 65 |
1 files changed, 62 insertions, 3 deletions
diff --git a/gdb/testsuite/gdb.arch/i386-disp-step.S b/gdb/testsuite/gdb.arch/i386-disp-step.S index a56ff1c..2d5c372 100644 --- a/gdb/testsuite/gdb.arch/i386-disp-step.S +++ b/gdb/testsuite/gdb.arch/i386-disp-step.S @@ -23,8 +23,11 @@ main: nop -/* test call/ret */ +/***********************************************/ + +/* Test call/ret. */ + nop .global test_call test_call: call test_call_subr @@ -33,16 +36,72 @@ test_call: test_ret_end: nop -/* test syscall */ +/***********************************************/ + +/* Absolute jump with leading prefixes. + These don't occur in normal code, but gdb should still DTRT. */ + + nop + .global test_prefixed_abs_jump +test_prefixed_abs_jump: + ds + jmp *test_prefixed_abs_jump_addr + .data +test_prefixed_abs_jump_addr: + .4byte test_prefixed_abs_jump_target + .text +test_prefixed_abs_jump_target: + nop + .global test_prefixed_abs_jump_end +test_prefixed_abs_jump_end: + nop + +/***********************************************/ + +/* Test syscall. */ - .global test_syscall mov $0x14,%eax /* getpid */ + .global test_syscall test_syscall: int $0x80 nop + .global test_syscall_end test_syscall_end: nop +/***********************************************/ + +/* Test syscall again, this time with a prefix. + These don't occur in normal code, but gdb should still DTRT. */ + + mov $0x14,%eax /* getpid */ + .global test_prefixed_syscall +test_prefixed_syscall: + repnz + int $0x80 + nop + .global test_prefixed_syscall_end +test_prefixed_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 + +/***********************************************/ + /* all done */ pushl $0 |