aboutsummaryrefslogtreecommitdiff
path: root/test/transform-dis-cases-i386.S
blob: 3e468d4c9f040a4349812de2366243fd46d3219b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#define GIVEN .ascii "GIVEN";
#define EXPECT .ascii "EXPECT";
#define EXPECT_ERR .ascii "EXPECT_ERR";

GIVEN call 0f; 0: pop %edx
/* XXX the extra push isn't necessary in 32-bit mode */
EXPECT push %eax; push %eax; mov $0xdead0005, %eax; mov %eax, 4(%esp); pop %eax; pop %edx

GIVEN jmp 0f; 0: nop
EXPECT_ERR

GIVEN jne .+0x1000
/* we expect to generate an unnecessarily long jump, so hardcode it the 0x10000
 * is because we pretend our trampoline is 0x10000 bytes before the original
 * function */
EXPECT 2: .byte 0x0f, 0x85; .long 2; jmp 1f; 0: jmp .+0x10000+0x1000-8; 1:

GIVEN loopne .+0x80
EXPECT loopne 0f; jmp 1f; 0: jmp .+0x10000+0x80-4; 1: