OLD | NEW |
| (Empty) |
1 # Test rel32 jump instructions with abs32 and .reloc obstructions. | |
2 | |
3 # .text start RVA and end RVA | |
4 1000 | |
5 3000 | |
6 # .reloc start RVA and end RVA | |
7 # Typically this won't overlap with .text. | |
8 # Note: If we use 1020, then the algorithm would never encounter it, so the | |
9 # .reloc does not get skipped! This edge case is not worth fixing right now. | |
10 101F | |
11 1030 | |
12 # End RVA | |
13 5000 | |
14 | |
15 # Assume ImageBase = 00400000. This does not affect the test. | |
16 Program: | |
17 00401000: 55 push ebp | |
18 00401001: 8B EC mov ebp,esp | |
19 00401003: E8 00 00 00 00 call 00401008 # Overlaps with abs32 | |
20 00401008: E9 00 00 00 00 jmp 0040100D # Overlaps with abs32 | |
21 0040100D: 0F 80 00 00 00 00 jo 00401013 | |
22 00401013: 0F 81 00 00 00 00 jno 00401019 | |
23 00401019: 0F 82 00 00 00 00 jb 0040101F | |
24 0040101F: 0F 83 00 00 00 00 jae 00401025 # Overlaps with .reloc | |
25 00401025: 0F 84 00 00 00 00 je 0040102B # Overlaps with .reloc | |
26 0040102B: 0F 85 00 00 00 00 jne 00401031 # Overlaps with .reloc | |
27 00401031: 0F 86 00 00 00 00 jbe 00401037 | |
28 00401037: 0F 87 00 00 00 00 ja 0040103D | |
29 0040103D: 0F 88 00 00 00 00 js 00401043 | |
30 00401043: 0F 89 00 00 00 00 jns 00401049 | |
31 00401049: 0F 8A 00 00 00 00 jp 0040104F # Ignored! | |
32 0040104F: 0F 8B 00 00 00 00 jnp 00401055 # Ignored! | |
33 00401055: 0F 8C 00 00 00 00 jl 0040105B # Overlaps with abs32 | |
34 0040105B: 0F 8D 00 00 00 00 jge 00401061 # Overlaps with abs32 | |
35 00401061: 0F 8E 00 00 00 00 jle 00401067 | |
36 00401067: 0F 8F 00 00 00 00 jg 0040106D | |
37 0040106D: 5D pop ebp | |
38 0040106E: C3 ret | |
39 | |
40 Abs32: | |
41 1004 | |
42 1008 | |
43 105A # Straddles across two instruction. | |
44 105F # Same, but covers the op code (and not the target) of the second. | |
45 | |
46 Expected: | |
47 # 1004 | |
48 # 1009 | |
49 100F | |
50 1015 | |
51 101B | |
52 # 1021 | |
53 # 1027 | |
54 # 102D | |
55 1033 | |
56 1039 | |
57 103F | |
58 1045 | |
59 # 1057 | |
60 # 105D | |
61 1063 # Op code 0F 8E overlaps with abs32 105F, but still okay | |
62 1069 | |
OLD | NEW |