Fix block label printing in precise-output tests (#5798)

As a follow-up to #5780, disassemble the regions identified by bb_starts, falling back on disassembling the whole buffer. This ensures that instructions like br_table that introduce a lot of constants don't throw off capstone for the remainder of the function.

---------

Co-authored-by: Jamey Sharp <jamey@minilop.net>
This commit is contained in:
Trevor Elliott
2023-02-15 18:35:26 -08:00
committed by GitHub
parent f04decc4a1
commit cc073593a4
123 changed files with 1473 additions and 784 deletions

View File

@@ -21,9 +21,10 @@ block0(v0: i128, v1: i128):
; ret
;
; Disassembled:
; block0: ; offset 0x0
; pushq %rbp
; movq %rsp, %rbp
; block0: ; offset 0x4
; block1: ; offset 0x4
; movq %rdi, %rax
; addq %rdx, %rax
; movq %rsi, %rdx
@@ -51,9 +52,10 @@ block0(v0: i128, v1: i128):
; ret
;
; Disassembled:
; block0: ; offset 0x0
; pushq %rbp
; movq %rsp, %rbp
; block0: ; offset 0x4
; block1: ; offset 0x4
; movq %rdi, %rax
; subq %rdx, %rax
; movq %rsi, %rdx
@@ -81,9 +83,10 @@ block0(v0: i128, v1: i128):
; ret
;
; Disassembled:
; block0: ; offset 0x0
; pushq %rbp
; movq %rsp, %rbp
; block0: ; offset 0x4
; block1: ; offset 0x4
; movq %rdi, %rax
; andq %rdx, %rax
; movq %rsi, %rdx
@@ -111,9 +114,10 @@ block0(v0: i128, v1: i128):
; ret
;
; Disassembled:
; block0: ; offset 0x0
; pushq %rbp
; movq %rsp, %rbp
; block0: ; offset 0x4
; block1: ; offset 0x4
; movq %rdi, %rax
; orq %rdx, %rax
; movq %rsi, %rdx
@@ -141,9 +145,10 @@ block0(v0: i128, v1: i128):
; ret
;
; Disassembled:
; block0: ; offset 0x0
; pushq %rbp
; movq %rsp, %rbp
; block0: ; offset 0x4
; block1: ; offset 0x4
; movq %rdi, %rax
; xorq %rdx, %rax
; movq %rsi, %rdx
@@ -171,9 +176,10 @@ block0(v0: i128):
; ret
;
; Disassembled:
; block0: ; offset 0x0
; pushq %rbp
; movq %rsp, %rbp
; block0: ; offset 0x4
; block1: ; offset 0x4
; movq %rdi, %rax
; notq %rax
; movq %rsi, %rdx
@@ -210,9 +216,10 @@ block0(v0: i128, v1: i128):
; ret
;
; Disassembled:
; block0: ; offset 0x0
; pushq %rbp
; movq %rsp, %rbp
; block0: ; offset 0x4
; block1: ; offset 0x4
; movq %rdx, %rax
; movq %rdi, %rdx
; imulq %rcx, %rdx
@@ -247,9 +254,10 @@ block0(v0: i64, v1: i64):
; ret
;
; Disassembled:
; block0: ; offset 0x0
; pushq %rbp
; movq %rsp, %rbp
; block0: ; offset 0x4
; block1: ; offset 0x4
; movq %rsi, %rdx
; movq %rdi, %rax
; movq %rbp, %rsp
@@ -273,9 +281,10 @@ block0(v0: i128):
; ret
;
; Disassembled:
; block0: ; offset 0x0
; pushq %rbp
; movq %rsp, %rbp
; block0: ; offset 0x4
; block1: ; offset 0x4
; movq %rsi, %rdx
; movq %rdi, %rax
; movq %rbp, %rsp
@@ -424,6 +433,7 @@ block0(v0: i128, v1: i128):
; ret
;
; Disassembled:
; block0: ; offset 0x0
; pushq %rbp
; movq %rsp, %rbp
; subq $0x40, %rsp
@@ -432,7 +442,7 @@ block0(v0: i128, v1: i128):
; movq %r13, 0x20(%rsp)
; movq %r14, 0x28(%rsp)
; movq %r15, 0x30(%rsp)
; block0: ; offset 0x21
; block1: ; offset 0x21
; cmpq %rdx, %rdi
; sete %r9b
; cmpq %rcx, %rsi
@@ -575,21 +585,22 @@ block2:
; ret
;
; Disassembled:
; block0: ; offset 0x0
; pushq %rbp
; movq %rsp, %rbp
; block0: ; offset 0x4
; block1: ; offset 0x4
; cmpq $0, %rdi
; sete %r9b
; cmpq $0, %rsi
; sete %sil
; testb %r9b, %sil
; jne 0x27
; block1: ; offset 0x1d
; block2: ; offset 0x1d
; movl $2, %eax
; movq %rbp, %rsp
; popq %rbp
; retq
; block2: ; offset 0x27
; block3: ; offset 0x27
; movl $1, %eax
; movq %rbp, %rsp
; popq %rbp
@@ -630,21 +641,22 @@ block2:
; ret
;
; Disassembled:
; block0: ; offset 0x0
; pushq %rbp
; movq %rsp, %rbp
; block0: ; offset 0x4
; block1: ; offset 0x4
; cmpq $0, %rdi
; sete %r9b
; cmpq $0, %rsi
; sete %sil
; testb %r9b, %sil
; jne 0x27
; block1: ; offset 0x1d
; block2: ; offset 0x1d
; movl $1, %eax
; movq %rbp, %rsp
; popq %rbp
; retq
; block2: ; offset 0x27
; block3: ; offset 0x27
; movl $2, %eax
; movq %rbp, %rsp
; popq %rbp
@@ -667,9 +679,10 @@ block0(v0: i64):
; ret
;
; Disassembled:
; block0: ; offset 0x0
; pushq %rbp
; movq %rsp, %rbp
; block0: ; offset 0x4
; block1: ; offset 0x4
; movq %rdi, %rax
; xorq %rdx, %rdx
; movq %rbp, %rsp
@@ -694,9 +707,10 @@ block0(v0: i64):
; ret
;
; Disassembled:
; block0: ; offset 0x0
; pushq %rbp
; movq %rsp, %rbp
; block0: ; offset 0x4
; block1: ; offset 0x4
; movq %rdi, %rdx
; sarq $0x3f, %rdx
; movq %rdi, %rax
@@ -722,9 +736,10 @@ block0(v0: i8):
; ret
;
; Disassembled:
; block0: ; offset 0x0
; pushq %rbp
; movq %rsp, %rbp
; block0: ; offset 0x4
; block1: ; offset 0x4
; movsbq %dil, %rax
; movq %rax, %rdx
; sarq $0x3f, %rdx
@@ -749,9 +764,10 @@ block0(v0: i8):
; ret
;
; Disassembled:
; block0: ; offset 0x0
; pushq %rbp
; movq %rsp, %rbp
; block0: ; offset 0x4
; block1: ; offset 0x4
; movzbq %dil, %rax
; xorq %rdx, %rdx
; movq %rbp, %rsp
@@ -774,9 +790,10 @@ block0(v0: i128):
; ret
;
; Disassembled:
; block0: ; offset 0x0
; pushq %rbp
; movq %rsp, %rbp
; block0: ; offset 0x4
; block1: ; offset 0x4
; movq %rdi, %rax
; movq %rbp, %rsp
; popq %rbp
@@ -798,9 +815,10 @@ block0(v0: i128):
; ret
;
; Disassembled:
; block0: ; offset 0x0
; pushq %rbp
; movq %rsp, %rbp
; block0: ; offset 0x4
; block1: ; offset 0x4
; movq %rdi, %rax
; movq %rbp, %rsp
; popq %rbp
@@ -823,9 +841,10 @@ block0(v0: i8):
; ret
;
; Disassembled:
; block0: ; offset 0x0
; pushq %rbp
; movq %rsp, %rbp
; block0: ; offset 0x4
; block1: ; offset 0x4
; movzbq %dil, %rax
; xorq %rdx, %rdx
; movq %rbp, %rsp
@@ -889,9 +908,10 @@ block0(v0: i128):
; ret
;
; Disassembled:
; block0: ; offset 0x0
; pushq %rbp
; movq %rsp, %rbp
; block0: ; offset 0x4
; block1: ; offset 0x4
; movq %rdi, %rax
; shrq $1, %rax
; movabsq $0x7777777777777777, %r8
@@ -1037,9 +1057,10 @@ block0(v0: i128):
; ret
;
; Disassembled:
; block0: ; offset 0x0
; pushq %rbp
; movq %rsp, %rbp
; block0: ; offset 0x4
; block1: ; offset 0x4
; movabsq $0x5555555555555555, %rcx
; movq %rsi, %rdx
; andq %rcx, %rdx
@@ -1145,9 +1166,10 @@ block0(v0: i128, v1: i64):
; ret
;
; Disassembled:
; block0: ; offset 0x0
; pushq %rbp
; movq %rsp, %rbp
; block0: ; offset 0x4
; block1: ; offset 0x4
; movq %rdi, (%rdx) ; trap: heap_oob
; movq %rsi, 8(%rdx) ; trap: heap_oob
; movq %rbp, %rsp
@@ -1171,9 +1193,10 @@ block0(v0: i64):
; ret
;
; Disassembled:
; block0: ; offset 0x0
; pushq %rbp
; movq %rsp, %rbp
; block0: ; offset 0x4
; block1: ; offset 0x4
; movq (%rdi), %rax ; trap: heap_oob
; movq 8(%rdi), %rdx ; trap: heap_oob
; movq %rbp, %rsp
@@ -1227,14 +1250,15 @@ block2(v8: i128):
; ret
;
; Disassembled:
; block0: ; offset 0x0
; pushq %rbp
; movq %rsp, %rbp
; block0: ; offset 0x4
; block1: ; offset 0x4
; xorq %rax, %rax
; xorq %r9, %r9
; testb %dl, %dl
; je 0x29
; block1: ; offset 0x12
; block2: ; offset 0x12
; movl $1, %r8d
; xorq %r10, %r10
; addq %r8, %rax
@@ -1243,7 +1267,7 @@ block2(v8: i128):
; movq %rbp, %rsp
; popq %rbp
; retq
; block2: ; offset 0x29
; block3: ; offset 0x29
; movq %r9, %rdx
; movl $2, %r9d
; xorq %r11, %r11
@@ -1308,6 +1332,7 @@ block0(v0: i128, v1: i128, v2: i64, v3: i128, v4: i128, v5: i128):
; ret
;
; Disassembled:
; block0: ; offset 0x0
; pushq %rbp
; movq %rsp, %rbp
; subq $0x20, %rsp
@@ -1315,7 +1340,7 @@ block0(v0: i128, v1: i128, v2: i64, v3: i128, v4: i128, v5: i128):
; movq %r12, 8(%rsp)
; movq %r14, 0x10(%rsp)
; movq %r15, 0x18(%rsp)
; block0: ; offset 0x1b
; block1: ; offset 0x1b
; movq %r8, %r14
; movq %rcx, %rbx
; movq %rdx, %rcx
@@ -1375,9 +1400,10 @@ block0(v0: i128):
; ret
;
; Disassembled:
; block0: ; offset 0x0
; pushq %rbp
; movq %rsp, %rbp
; block0: ; offset 0x4
; block1: ; offset 0x4
; movq %rdi, (%rdx)
; movq %rsi, 8(%rdx)
; movq %rdi, 0x10(%rdx)
@@ -1426,11 +1452,12 @@ block0(v0: i128, v1: i128):
; ret
;
; Disassembled:
; block0: ; offset 0x0
; pushq %rbp
; movq %rsp, %rbp
; subq $0x10, %rsp
; movq %r13, (%rsp)
; block0: ; offset 0xc
; block1: ; offset 0xc
; movq %r8, %r13
; subq $0x10, %rsp
; leaq (%rsp), %r8
@@ -1478,9 +1505,10 @@ block0(v0: i128):
; ret
;
; Disassembled:
; block0: ; offset 0x0
; pushq %rbp
; movq %rsp, %rbp
; block0: ; offset 0x4
; block1: ; offset 0x4
; movq %rdi, %r8
; movq $18446744073709551615, %rcx
; bsrq %rsi, %r9
@@ -1525,9 +1553,10 @@ block0(v0: i128):
; ret
;
; Disassembled:
; block0: ; offset 0x0
; pushq %rbp
; movq %rsp, %rbp
; block0: ; offset 0x4
; block1: ; offset 0x4
; movl $0x40, %ecx
; bsfq %rdi, %rax
; cmoveq %rcx, %rax
@@ -1561,9 +1590,10 @@ block0(v0: i8, v1: i128):
; ret
;
; Disassembled:
; block0: ; offset 0x0
; pushq %rbp
; movq %rsp, %rbp
; block0: ; offset 0x4
; block1: ; offset 0x4
; movq %rsi, %rcx
; andq $7, %rcx
; movq %rdi, %rax
@@ -1605,9 +1635,10 @@ block0(v0: i128, v1: i128):
; ret
;
; Disassembled:
; block0: ; offset 0x0
; pushq %rbp
; movq %rsp, %rbp
; block0: ; offset 0x4
; block1: ; offset 0x4
; movq %rdx, %rcx
; movq %rdi, %rdx
; shlq %cl, %rdx
@@ -1663,9 +1694,10 @@ block0(v0: i128, v1: i128):
; ret
;
; Disassembled:
; block0: ; offset 0x0
; pushq %rbp
; movq %rsp, %rbp
; block0: ; offset 0x4
; block1: ; offset 0x4
; movq %rdx, %rcx
; movq %rdi, %r8
; shrq %cl, %r8
@@ -1723,9 +1755,10 @@ block0(v0: i128, v1: i128):
; ret
;
; Disassembled:
; block0: ; offset 0x0
; pushq %rbp
; movq %rsp, %rbp
; block0: ; offset 0x4
; block1: ; offset 0x4
; movq %rdx, %rcx
; movq %rdi, %r8
; shrq %cl, %r8
@@ -1805,9 +1838,10 @@ block0(v0: i128, v1: i128):
; ret
;
; Disassembled:
; block0: ; offset 0x0
; pushq %rbp
; movq %rsp, %rbp
; block0: ; offset 0x4
; block1: ; offset 0x4
; movq %rdx, %rcx
; movq %rdi, %rdx
; shlq %cl, %rdx
@@ -1908,9 +1942,10 @@ block0(v0: i128, v1: i128):
; ret
;
; Disassembled:
; block0: ; offset 0x0
; pushq %rbp
; movq %rsp, %rbp
; block0: ; offset 0x4
; block1: ; offset 0x4
; movq %rdx, %rcx
; movq %rdi, %r8
; shrq %cl, %r8