diff options
author | Mark Kettenis <kettenis@gnu.org> | 2004-04-29 18:05:31 +0000 |
---|---|---|
committer | Mark Kettenis <kettenis@gnu.org> | 2004-04-29 18:05:31 +0000 |
commit | a8958849c4e86363003ed25c2bf1e7685fd7bf36 (patch) | |
tree | a033a2c1003cfb4d8a70c43e79508fa36f713920 /gdb/testsuite | |
parent | 711cc5cd074d90536d28426dbdaed62f0d3bf0a7 (diff) | |
download | gdb-a8958849c4e86363003ed25c2bf1e7685fd7bf36.zip gdb-a8958849c4e86363003ed25c2bf1e7685fd7bf36.tar.gz gdb-a8958849c4e86363003ed25c2bf1e7685fd7bf36.tar.bz2 |
* i386-prologue.exp: Add testcase for jump instruction as first
instruction of the real code.
* i386-prologue.c (jump_at_beginning): New function.
Diffstat (limited to 'gdb/testsuite')
-rw-r--r-- | gdb/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/testsuite/gdb.arch/i386-prologue.c | 18 | ||||
-rw-r--r-- | gdb/testsuite/gdb.arch/i386-prologue.exp | 13 |
3 files changed, 37 insertions, 0 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 16308ff..40a0cf2 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2004-04-27 Jerome Guitton <guitton@gnat.com> + + * i386-prologue.exp: Add testcase for jump instruction as first + instruction of the real code. + * i386-prologue.c (jump_at_beginning): New function. + 2004-04-28 Mark Kettenis <kettenis@gnu.org> * gdb.base/call-sc.exp: Remove patterns to KFAIL PR gdb/1624 on diff --git a/gdb/testsuite/gdb.arch/i386-prologue.c b/gdb/testsuite/gdb.arch/i386-prologue.c index 4c92a9c..33fc1db 100644 --- a/gdb/testsuite/gdb.arch/i386-prologue.c +++ b/gdb/testsuite/gdb.arch/i386-prologue.c @@ -1,11 +1,13 @@ void gdb1253 (void); void gdb1338 (void); +void jump_at_beginning (void); int main (void) { gdb1253 (); gdb1338 (); + jump_at_beginning (); return 0; } @@ -35,3 +37,19 @@ asm(".text\n" " popl %esi\n" " popl %edi\n" " ret\n"); + +/* The purpose of this function is to verify that, during prologue + skip, GDB does not follow a jump at the beginnning of the "real" + code. */ + +asm(".text\n" + " .align 8\n" + "jump_at_beginning:\n" + " pushl %ebp\n" + " movl %esp,%ebp\n" + " jmp .gdbjump\n" + " nop\n" + ".gdbjump:\n" + " movl %ebp,%esp\n" + " popl %ebp\n" + " ret\n"); diff --git a/gdb/testsuite/gdb.arch/i386-prologue.exp b/gdb/testsuite/gdb.arch/i386-prologue.exp index f1c1e72..ea04b53 100644 --- a/gdb/testsuite/gdb.arch/i386-prologue.exp +++ b/gdb/testsuite/gdb.arch/i386-prologue.exp @@ -76,3 +76,16 @@ gdb_test "backtrace 10" \ gdb_test "info frame" \ ".*Saved registers:.*ebx at.*esi at.*edi at.*eip at.*" \ "saved registers in gdb1338" + +# Testcase jump_at_beginning. +gdb_test_multiple "break jump_at_beginning" \ + "set breakpoint in jump_at_beginning" { + -re "Breakpoint \[0-9\]* at ($hex).*$gdb_prompt $" { + gdb_test "x/i $expect_out(1,string)" \ + ".*<jump_at_beginning.*>:.*jmp.*" \ + "check jump_at_beginning prologue end" + } + default { + fail "set breakpoint in jump_at_beginning" + } +} |