Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(169)

Unified Diff: courgette/testdata/rel32_x64_02.txt

Issue 2008253004: Refactor rel32 searching process for x64 to make it more similar to x86. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: courgette/testdata/rel32_x64_02.txt
diff --git a/courgette/testdata/rel32_x64_02.txt b/courgette/testdata/rel32_x64_02.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9a09327fbc08d5e92333856f8ec7780b8b47b526
--- /dev/null
+++ b/courgette/testdata/rel32_x64_02.txt
@@ -0,0 +1,90 @@
+# Test rel32 jump instructions with abs32 and .reloc obstructions.
+
+# .text start RVA and end RVA
+1000
+3000
+# .reloc start RVA and end RVA
+# Typically this won't overlap with .text.
+# Note: If we use 1020, then the algorithm would never encounter it, so the
+# .reloc does not get skipped! This edge case is not worth fixing right now.
+101F
+1030
+# End RVA
+5000
+
+# Assume ImageBase = 00400000. This does not affect the test.
+Program:
+ 00401000: 55 push ebp
+ 00401001: 8B EC mov ebp,esp
+ 00401003: E8 00 00 00 00 call 00401008 # Overlaps with abs32
+ 00401008: E9 00 00 00 00 jmp 0040100D # Overlaps with abs32
+ 0040100D: 0F 80 00 00 00 00 jo 00401013
+ 00401013: 0F 81 00 00 00 00 jno 00401019
+ 00401019: 0F 82 00 00 00 00 jb 0040101F
+ 0040101F: 0F 83 00 00 00 00 jae 00401025 # Overlaps with .reloc
+ 00401025: 0F 84 00 00 00 00 je 0040102B # Overlaps with .reloc
+ 0040102B: 0F 85 00 00 00 00 jne 00401031 # Overlaps with .reloc
+ 00401031: 0F 86 00 00 00 00 jbe 00401037
+ 00401037: 0F 87 00 00 00 00 ja 0040103D
+ 0040103D: 0F 88 00 00 00 00 js 00401043
+ 00401043: 0F 89 00 00 00 00 jns 00401049
+ 00401049: 0F 8A 00 00 00 00 jp 0040104F # Ignored!
+ 0040104F: 0F 8B 00 00 00 00 jnp 00401055 # Ignored!
+ 00401055: 0F 8C 00 00 00 00 jl 0040105B # Overlaps with abs32
+ 0040105B: 0F 8D 00 00 00 00 jge 00401061 # Overlaps with abs32
+ 00401061: 0F 8E 00 00 00 00 jle 00401067
+ 00401067: 0F 8F 00 00 00 00 jg 0040106D
+ 0040106D: FF 15 00 00 00 00 call 00401073
+ 00401073: FF 25 00 00 00 00 jmp 00401079
+ 00401079: 8B 05 00 00 00 00 mov eax, 00401079
+ 0040107F: 8B 3D 00 00 00 00 mov edi, 00401085
+ 00401085: 8D 05 00 00 00 00 lea eax, 00401079
+ 0040108B: 8D 3D 00 00 00 00 lea edi, 00401079
+ 00401091: 48 8B 05 00 00 00 00 mov rax, 00401098
+ 00401098: 48 8B 3D 00 00 00 00 mov rdi, 0040109F
+ 0040109F: 48 8D 05 00 00 00 00 lea rax, 004010A6
+ 004010A6: 48 8D 3D 00 00 00 00 lea rdi, 004010AD
+ 004010AD: 4C 8B 05 00 00 00 00 mov r8, 004010B4
+ 004010B4: 4C 8B 3D 00 00 00 00 mov r15, 004010BB
+ 004010BB: 4C 8D 05 00 00 00 00 lea r8, 004010C2
+ 004010C2: 4C 8D 3D 00 00 00 00 lea r15, 004010C9
+ 004010C9: 5D pop ebp
+ 004010CA: C3 ret
+
+Abs32:
+1004
+1008
+105A # Straddles across two instruction.
+105F # Same, but covers the op code (and not the target) of the second.
+
+Expected:
+# 1004
+# 1009
+100F
+1015
+101B
+# 1021
+# 1027
+# 102D
+1033
+1039
+103F
+1045
+# 1057
+# 105D
+1063
+1069
+106F
+1075
+107B
+1081
+1087
+108D
+1094
+109B
+10A2
+10A9
+10B0
+10B7
+10BE
+10C5

Powered by Google App Engine
This is Rietveld 408576698