Skip to content

Unimplemented ARMv7/thumb2 intrinsics #6075

Open
@marpie

Description

@marpie

Version and Platform (required)

  • Binary Ninja Version: 4.2.6339-dev (d021f9d4)

Bug Description

The following ARM intrinsics are unimplemented in the latest dev release:

Multiply/divide instructions

smlabb
stc2
stcl
umaal

Sync Primitives

clrex
strex

SIMD&FP Instructions

vcmp.f64.F64
vcvt.f32.f64
vcvt.F32.U32
vcvt.f64.f32
vcvt.U32.F32
vld1.32
vld1.64
vld1.8
vldmia
vmrs
vqrshrun.S64
vqshl.U32
vqshlu.S32
vqshrn.U64
vrecpe.f32.F32
vrev16.64
vrhadd.U16
vrshr.U64
vrsra.U64
vshr.U32
vsli.32
vsli.64
vst1.32
vst1.64
vst1.8
vstmia
vtbl.8

Binary

  • Binary was provided via e-mail.
The following functions use the unimplemented intrinsics
_Z15ltc_eax_encryptPK21ltc_cipher_descriptorNSt6__ndk112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEES8_PKhPhj: 
	unimplemented  {vst1.64 {d16, d17}, [r0]!}
	unimplemented  {vst1.64 {d16, d17}, [r0]}
	unimplemented  {vst1.64 {d16, d17}, [r1]!}
	unimplemented  {vst1.64 {d16, d17}, [r1]}

_Z8IntToStri: 
	unimplemented  {vst1.32 {d16, d17}, [r1]}

_Z10hw_decryptNSt6__ndk112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPKhPhm: 
	unimplemented  {vst1.8 {d16}, [r1]}

Java_com_hobbywing_jni_Util_parse: 
	unimplemented  {vld1.8 {d16, d17}, [r1]}
	unimplemented  {vld1.8 {d18, d19}, [r1]}
	unimplemented  {vst1.8 {d16, d17}, [r1]!}
	unimplemented  {vst1.8 {d18, d19}, [r1]}
md5_init: 
	unimplemented  {vld1.64 {d16, d17}, [r0]}
	unimplemented  {vst1.64 {d16, d17}, [r0]}

md5_test: 
	unimplemented  {vld1.64 {d8, d9}, [r0]}
	unimplemented  {vst1.64 {d8, d9}, [r1]}

fast_mp_invmod: 
	unimplemented  {vld1.64 {d16, d17}, [r6]}
	unimplemented  {vst1.64 {d16, d17}, [r0]}
	unimplemented  {vld1.32 {d18, d19}, [r4]}
	unimplemented  {vst1.32 {d16, d17}, [r4], r0}
	unimplemented  {vst1.64 {d18, d19}, [r6]}
mp_mod: 
	unimplemented  {vld1.64 {d16, d17}, [r8]}
	unimplemented  {vld1.32 {d18, d19}, [r9]}
	unimplemented  {vst1.64 {d18, d19}, [r8]}
	unimplemented  {vst1.32 {d16, d17}, [r9]}
mp_exch: 
	unimplemented  {vld1.32 {d16, d17}, [r0]}
	unimplemented  {vld1.32 {d18, d19}, [r1]}
	unimplemented  {vst1.32 {d18, d19}, [r0]}

mp_clear: 
	unimplemented  {vst1.32 {d16, d17}, [r4]}

mp_and: 
	unimplemented  {vld1.64 {d16, d17}, [r5]}
	unimplemented  {vld1.32 {d18, d19}, [r8]}
	unimplemented  {vst1.64 {d18, d19}, [r5]}
	unimplemented  {vst1.32 {d16, d17}, [r8]}

mp_div: 
	unimplemented  {vld1.64 {d16, d17}, [r8]}
	unimplemented  {vst1.64 {d16, d17}, [r0]}
	unimplemented  {vld1.32 {d18, d19}, [r4]}
	unimplemented  {vst1.32 {d16, d17}, [r4], r0}
	unimplemented  {vst1.64 {d18, d19}, [r8]}
	unimplemented  {vld1.64 {d16, d17}, [r4]}
	unimplemented  {vld1.32 {d18, d19}, [r10]}
	unimplemented  {vst1.64 {d18, d19}, [r4]}
	unimplemented  {vst1.32 {d16, d17}, [r10]}

mp_div_2d: 
	unimplemented  {vld1.64 {d16, d17}, [r8]}
	unimplemented  {vld1.32 {d18, d19}, [r10]}
	unimplemented  {vst1.64 {d18, d19}, [r8]}
	unimplemented  {vst1.32 {d16, d17}, [r10]}

mp_div_3: 
	unimplemented  {smlabb r2, r1, r3, r2}
	unimplemented  {vld1.32 {d18, d19}, [r4]}
	unimplemented  {vst1.32 {d16, d17}, [r4]}

mp_div_d: 
	unimplemented  {vld1.64 {d16, d17}, [r5]}
	unimplemented  {vld1.32 {d18, d19}, [r4]}
	unimplemented  {vst1.64 {d18, d19}, [r5]}
	unimplemented  {vst1.32 {d16, d17}, [r4]}

mp_dr_reduce: 
	unimplemented  {umaal r6, r3, r4, r11}

s_mp_exptmod: 
	unimplemented  {vld1.64 {d16, d17}, [r11]}
	unimplemented  {vld1.32 {d18, d19}, [r0]}
	unimplemented  {vst1.64 {d18, d19}, [r11]}
	unimplemented  {vst1.32 {d16, d17}, [r0]}

mp_exptmod_fast: 
	unimplemented  {vld1.64 {d16, d17}, [r1]}
	unimplemented  {vld1.32 {d18, d19}, [r0]}
	unimplemented  {vst1.64 {d18, d19}, [r1]}
	unimplemented  {vst1.32 {d16, d17}, [r0]}

mp_montgomery_reduce: 
	unimplemented  {umaal r3, r5, r1, r6}

mp_exteuclid: 
	unimplemented  {vld1.32 {d18, d19}, [r0]}
	unimplemented  {vld1.64 {d16, d17}, [r1]}
	unimplemented  {vst1.64 {d18, d19}, [r1]}
	unimplemented  {vst1.32 {d16, d17}, [r0]}
	unimplemented  {vld1.32 {d18, d19}, [r8]}
	unimplemented  {vld1.64 {d16, d17}, [r0]}
	unimplemented  {vst1.64 {d18, d19}, [r0]}
	unimplemented  {vst1.32 {d16, d17}, [r8]}
	unimplemented  {vld1.64 {d16, d17}, [r11]}
	unimplemented  {vst1.64 {d18, d19}, [r11]}

mp_gcd: 
	unimplemented  {vld1.64 {d16, d17}, [r10]}
	unimplemented  {vld1.64 {d18, d19}, [r6]}
	unimplemented  {vst1.64 {d18, d19}, [r10]}
	unimplemented  {vst1.64 {d16, d17}, [r6]}

mp_invmod_slow: 
	unimplemented  {vld1.64 {d16, d17}, [r6]}
	unimplemented  {vst1.64 {d18, d19}, [r6]}
	unimplemented  {vst1.32 {d16, d17}, [r4]}

mp_sqrt: 
	unimplemented  {vld1.64 {d16, d17}, [r8]}
	unimplemented  {vld1.32 {d18, d19}, [r10]}
	unimplemented  {vst1.64 {d18, d19}, [r8]}
	unimplemented  {vst1.32 {d16, d17}, [r10]}

s_mp_mul_digs: 
	unimplemented  {umaal r1, r5, r10, r11}
	unimplemented  {vld1.64 {d16, d17}, [r9]}
	unimplemented  {vld1.32 {d18, d19}, [r0]}
	unimplemented  {vst1.32 {d16, d17}, [r0]}
	unimplemented  {vst1.64 {d18, d19}, [r9]}

mp_n_root: 
	unimplemented  {vld1.64 {d16, d17}, [r5]}
	unimplemented  {vst1.64 {d16, d17}, [r0]}
	unimplemented  {vld1.32 {d18, d19}, [r2]}
	unimplemented  {vst1.32 {d16, d17}, [r2], r0}
	unimplemented  {vst1.64 {d18, d19}, [r5]}

s_mp_mul_high_digs: 
	unimplemented  {umaal r11, r4, r10, r6}
	unimplemented  {vld1.64 {d16, d17}, [r4]}
	unimplemented  {vst1.64 {d18, d19}, [r4]}

s_mp_sqr: 
	unimplemented  {vld1.64 {d16, d17}, [r5]}
	unimplemented  {vld1.32 {d18, d19}, [r6]}
	unimplemented  {vst1.64 {d18, d19}, [r5]}
	unimplemented  {vst1.32 {d16, d17}, [r6]}

der_decode_utctime: 
	unimplemented  {vst1.32 {d16, d17}, [r4]}


sha256_init: 
	unimplemented  {vst1.32 {d16, d17}, [r5]!}
	unimplemented  {vst1.64 {d16, d17}, [r5]}

	unimplemented  {vld1.64 {d10, d11}, [r0]}
	unimplemented  {vst1.64 {d10, d11}, [r1]}

sha224_done: 
	unimplemented  {vld1.8 {d16, d17}, [r6], r1}
	unimplemented  {vst1.8 {d16, d17}, [r4], r1}
	unimplemented  {vld1.32 {d16, d17}, [r6]}
	unimplemented  {vst1.8 {d16, d17}, [r4]}

_ZNSt6__ndk113basic_ostreamIcNS_11char_traitsIcEEElsEf: 
	unimplemented  {vcvt.f64.f32 d0, s0}

_ZNSt6__ndk18ios_base6xallocEv: 
	unimplemented  {strex r3, r2, [r1]}


sub_74a50: 
	unimplemented  {vcmp.f64.F64 d0, d1}
	unimplemented  {vmrs apsr_nzcv, fpscr}
	unimplemented  {vcmp.f64.F64 d0, d1}
	unimplemented  {vmrs apsr_nzcv, fpscr}
	unimplemented  {vcvt.f32.f64 s0, d0}

_ZNSt6__ndk114__shared_count12__add_sharedEv: 
	unimplemented  {strex r2, r1, [r0]}

_ZNSt6__ndk119__shared_weak_count16__release_sharedEv: 
	unimplemented  {strex r3, r2, [r0]}

_ZNSt6__ndk119__shared_weak_count14__release_weakEv: 
	unimplemented  {strex r4, r3, [r1]}

_ZNSt6__ndk119__shared_weak_count4lockEv: 
	unimplemented  {clrex}
	unimplemented  {strex r3, r4, [r1]}

_ZNSt6__ndk14stofERKNS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEPj: 
	unimplemented  {vcvt.f32.f64 s16, d0}

_ZNSt6__ndk19to_stringEf: 
	unimplemented  {vcvt.f64.f32 d8, s0}

_ZNSt6__ndk16thread4joinEv: 
	unimplemented  {vtbl.8 d22, {d12}, d0}


__cxa_decrement_exception_refcount: 
	unimplemented  {strex r3, r2, [r0]}

__cxa_increment_exception_refcount: 
	unimplemented  {strex r2, r1, [r0]}

__cxa_current_primary_exception: 
	unimplemented  {strex r3, r2, [r1]}

__cxa_guard_release: 
	unimplemented  {vtbl.8 d21, {d28, d29}, d16}
	unimplemented  {vqrshrun.S64 d20, q0, #4}

__cxa_guard_abort: 
	unimplemented  {vqshrn.U64 d21, q14, #4}

sub_7bc20: 
	unimplemented  {vrev16.64 q11, q2}
	unimplemented  {vtbl.8 d20, {d12}, d3}

_ZSt15set_new_handlerPFvvE: 
	unimplemented  {strex r3, r0, [r2]}

_ZSt14set_unexpectedPFvvE: 
	unimplemented  {strex r3, r1, [r2]}

sub_828bc: 
	unimplemented  {stc2 p15, c15, [r11, #0x3ec]!}

__cxa_deleted_virtual: 
	unimplemented  {vsli.64 d27, d28, #0x3b}

sub_85ff4: 
	unimplemented  {vrhadd.U16 d14, d14, d31}

sub_867e0: 
	unimplemented  {vrhadd.U16 d14, d2, d31}

sub_868a6: 
	unimplemented  {vsli.32 d27, d1, #0x1b}

sub_868ba: 
	unimplemented  {vcvt.U32.F32 d27, d7, #5}

sub_86ae2: 
	unimplemented  {vcvt.F32.U32 d25, d23, #5}
	unimplemented  {vshr.U32 d28, d7, #5}

sub_86aec: 
	unimplemented  {vrecpe.f32.F32 q13, q2}

sub_86b5c: 
	unimplemented  {vcvt.U32.F32 d25, d31, #5}

sub_86cd4: 
	unimplemented  {stcl p15, c15, [r1, #0x78]}

sub_87028: 
	unimplemented  {vrecpe.f32.F32 q13, q8}

sub_878c4: 
	unimplemented  {vqshlu.S32 d25, d8, #0x1b}
	unimplemented  {vqshl.U32 d26, d0, #0x1b}
	unimplemented  {vqshrn.U64 d25, q3, #5}

sub_87900: 
	unimplemented  {vcvt.U32.F32 q13, q0, #5}
	unimplemented  {vrsra.U64 d26, d18, #5}
	unimplemented  {vsli.32 d25, d26, #0x1b}
	unimplemented  {vrecpe.f32.F32 d26, d23}

sub_87918: 
	unimplemented  {vshr.U32 d27, d3, #5}

sub_86448: 
	unimplemented  {vld1.8 {}, [r2], r0}
	unimplemented  {vld1.8 {}, [r0]}
	unimplemented  {vld1.8 {}, [r2]}
	unimplemented  {vst1.8 {}, [r0]}

sub_879fc: 
	unimplemented  {vldmia r0, {d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15}}

sub_87a0c: 
	unimplemented  {vldmia r0, {}}

sub_87a2c: 
	unimplemented  {vstmia r0, {d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11, d12, d13, d14, d15}}

sub_87a3c: 
	unimplemented  {vstmia r0, {}}

Metadata

Metadata

Assignees

Labels

Arch: ARM/ThumbIssues with the ARM/Thumb architecture pluginComponent: ArchitectureIssue needs changes to an architecture pluginEffort: MediumIssue should take < 1 monthImpact: MediumIssue is impactful with a bad, or no, workaroundLiftingissues related to LLIL lifting

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions