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>
208 lines
4.2 KiB
Plaintext
208 lines
4.2 KiB
Plaintext
test compile precise-output
|
|
target s390x
|
|
|
|
function u0:0(i64 sarg(64)) -> i8 system_v {
|
|
block0(v0: i64):
|
|
v1 = load.i8 v0
|
|
return v1
|
|
}
|
|
|
|
; VCode:
|
|
; block0:
|
|
; llc %r2, 0(%r2)
|
|
; br %r14
|
|
;
|
|
; Disassembled:
|
|
; block0: ; offset 0x0
|
|
; llc %r2, 0(%r2)
|
|
; br %r14
|
|
|
|
function u0:1(i64 sarg(64), i64) -> i8 system_v {
|
|
block0(v0: i64, v1: i64):
|
|
v2 = load.i8 v1
|
|
v3 = load.i8 v0
|
|
v4 = iadd.i8 v2, v3
|
|
return v4
|
|
}
|
|
|
|
; VCode:
|
|
; block0:
|
|
; llc %r3, 0(%r3)
|
|
; llc %r4, 0(%r2)
|
|
; ark %r2, %r3, %r4
|
|
; br %r14
|
|
;
|
|
; Disassembled:
|
|
; block0: ; offset 0x0
|
|
; llc %r3, 0(%r3)
|
|
; llc %r4, 0(%r2)
|
|
; ark %r2, %r3, %r4
|
|
; br %r14
|
|
|
|
function u0:2(i64) -> i8 system_v {
|
|
fn1 = colocated u0:0(i64 sarg(64)) -> i8 system_v
|
|
|
|
block0(v0: i64):
|
|
v1 = call fn1(v0)
|
|
return v1
|
|
}
|
|
|
|
; VCode:
|
|
; stmg %r14, %r15, 112(%r15)
|
|
; aghi %r15, -224
|
|
; virtual_sp_offset_adjust 224
|
|
; block0:
|
|
; mvc 160(63,%r15), 0(%r2)
|
|
; la %r2, 160(%r15)
|
|
; brasl %r14, userextname0
|
|
; lmg %r14, %r15, 336(%r15)
|
|
; br %r14
|
|
;
|
|
; Disassembled:
|
|
; block0: ; offset 0x0
|
|
; stmg %r14, %r15, 0x70(%r15)
|
|
; aghi %r15, -0xe0
|
|
; block1: ; offset 0xa
|
|
; mvc 0xa0(0x40, %r15), 0(%r2)
|
|
; la %r2, 0xa0(%r15)
|
|
; brasl %r14, 0x14 ; reloc_external PLTRel32Dbl u0:0 2
|
|
; lmg %r14, %r15, 0x150(%r15)
|
|
; br %r14
|
|
|
|
function u0:3(i64, i64) -> i8 system_v {
|
|
fn1 = colocated u0:0(i64, i64 sarg(64)) -> i8 system_v
|
|
|
|
block0(v0: i64, v1: i64):
|
|
v2 = call fn1(v0, v1)
|
|
return v2
|
|
}
|
|
|
|
; VCode:
|
|
; stmg %r14, %r15, 112(%r15)
|
|
; aghi %r15, -224
|
|
; virtual_sp_offset_adjust 224
|
|
; block0:
|
|
; mvc 160(63,%r15), 0(%r3)
|
|
; la %r3, 160(%r15)
|
|
; brasl %r14, userextname0
|
|
; lmg %r14, %r15, 336(%r15)
|
|
; br %r14
|
|
;
|
|
; Disassembled:
|
|
; block0: ; offset 0x0
|
|
; stmg %r14, %r15, 0x70(%r15)
|
|
; aghi %r15, -0xe0
|
|
; block1: ; offset 0xa
|
|
; mvc 0xa0(0x40, %r15), 0(%r3)
|
|
; la %r3, 0xa0(%r15)
|
|
; brasl %r14, 0x14 ; reloc_external PLTRel32Dbl u0:0 2
|
|
; lmg %r14, %r15, 0x150(%r15)
|
|
; br %r14
|
|
|
|
function u0:4(i64 sarg(256), i64 sarg(64)) -> i8 system_v {
|
|
block0(v0: i64, v1: i64):
|
|
v2 = load.i8 v0
|
|
v3 = load.i8 v1
|
|
v4 = iadd.i8 v2, v3
|
|
return v4
|
|
}
|
|
|
|
; VCode:
|
|
; block0:
|
|
; lgr %r5, %r3
|
|
; llc %r3, 0(%r2)
|
|
; llc %r4, 0(%r5)
|
|
; ark %r2, %r3, %r4
|
|
; br %r14
|
|
;
|
|
; Disassembled:
|
|
; block0: ; offset 0x0
|
|
; lgr %r5, %r3
|
|
; llc %r3, 0(%r2)
|
|
; llc %r4, 0(%r5)
|
|
; ark %r2, %r3, %r4
|
|
; br %r14
|
|
|
|
function u0:5(i64, i64, i64) -> i8 system_v {
|
|
fn1 = colocated u0:0(i64, i64 sarg(256), i64 sarg(64)) -> i8 system_v
|
|
|
|
block0(v0: i64, v1: i64, v2: i64):
|
|
v3 = call fn1(v0, v1, v2)
|
|
return v3
|
|
}
|
|
|
|
; VCode:
|
|
; stmg %r14, %r15, 112(%r15)
|
|
; aghi %r15, -480
|
|
; virtual_sp_offset_adjust 480
|
|
; block0:
|
|
; mvc 160(255,%r15), 0(%r3)
|
|
; mvc 416(63,%r15), 0(%r4)
|
|
; la %r3, 160(%r15)
|
|
; la %r4, 416(%r15)
|
|
; brasl %r14, userextname0
|
|
; lmg %r14, %r15, 592(%r15)
|
|
; br %r14
|
|
;
|
|
; Disassembled:
|
|
; block0: ; offset 0x0
|
|
; stmg %r14, %r15, 0x70(%r15)
|
|
; aghi %r15, -0x1e0
|
|
; block1: ; offset 0xa
|
|
; mvc 0xa0(0x100, %r15), 0(%r3)
|
|
; mvc 0x1a0(0x40, %r15), 0(%r4)
|
|
; la %r3, 0xa0(%r15)
|
|
; la %r4, 0x1a0(%r15)
|
|
; brasl %r14, 0x1e ; reloc_external PLTRel32Dbl u0:0 2
|
|
; lmg %r14, %r15, 0x250(%r15)
|
|
; br %r14
|
|
|
|
function u0:6(i64, i64, i64) -> i8 system_v {
|
|
fn1 = colocated u0:0(i64, i64 sarg(1024), i64 sarg(64)) -> i8 system_v
|
|
|
|
block0(v0: i64, v1: i64, v2: i64):
|
|
v3 = call fn1(v0, v1, v2)
|
|
return v3
|
|
}
|
|
|
|
; VCode:
|
|
; stmg %r7, %r15, 56(%r15)
|
|
; aghi %r15, -1248
|
|
; virtual_sp_offset_adjust 1248
|
|
; block0:
|
|
; lgr %r7, %r2
|
|
; lgr %r9, %r4
|
|
; la %r2, 160(%r15)
|
|
; la %r3, 0(%r3)
|
|
; lghi %r4, 1024
|
|
; brasl %r14, %Memcpy
|
|
; lgr %r4, %r9
|
|
; mvc 1184(63,%r15), 0(%r4)
|
|
; la %r3, 160(%r15)
|
|
; la %r4, 1184(%r15)
|
|
; lgr %r2, %r7
|
|
; brasl %r14, userextname0
|
|
; lmg %r7, %r15, 1304(%r15)
|
|
; br %r14
|
|
;
|
|
; Disassembled:
|
|
; block0: ; offset 0x0
|
|
; stmg %r7, %r15, 0x38(%r15)
|
|
; aghi %r15, -0x4e0
|
|
; block1: ; offset 0xa
|
|
; lgr %r7, %r2
|
|
; lgr %r9, %r4
|
|
; la %r2, 0xa0(%r15)
|
|
; la %r3, 0(%r3)
|
|
; lghi %r4, 0x400
|
|
; brasl %r14, 0x1e ; reloc_external PLTRel32Dbl %Memcpy 2
|
|
; lgr %r4, %r9
|
|
; mvc 0x4a0(0x40, %r15), 0(%r4)
|
|
; la %r3, 0xa0(%r15)
|
|
; la %r4, 0x4a0(%r15)
|
|
; lgr %r2, %r7
|
|
; brasl %r14, 0x3a ; reloc_external PLTRel32Dbl u0:0 2
|
|
; lmg %r7, %r15, 0x518(%r15)
|
|
; br %r14
|
|
|