I tried to load an arm elf binary into Angr framework, but it failed to decode function sub_000005D8.
.text:000005D8 F0 B5 PUSH {R4-R7,LR}
.text:000005DA 03 AF ADD R7, SP, #0xC
.text:000005DC 2D E9 00 0F PUSH.W {R8-R11}
.text:000005E0 B1 B0 SUB SP, SP, #0xC4
.text:000005E2 4F F4 D6 71 MOV.W R1, #0x1AC
.text:000005E6 46 F6 CB 33 MOVW R3, #0x6BCB
I spent a few time investigating the issue and found out that it was caused by a really common thumb mode prolog b"\xf0\xb5\x03\xaf" missing in arch_arm.py.
I added it to thumb_prologs defiend in arch_arm.py, and then Angr works well.
thumb_prologs = {
br"[\x00-\xff]\xb5[\x80-\xff]\xb0", # push {??, ??, ..., ??, lr}; sub sp, sp, #??
br"\x80\xb4[\x80-\xff]\xb0", # push {r7}; sub sp, sp, #??
br"[\x00-\xff]\xb4\x00\xb5[\x80-\xff]\xb0", # push {r?, r?}; push {lr}; sub sp, sp, #??
br"[\x80-\xff]\xb0[\x00-\xff]\x90", # sub sp, sp, #??; str r0, [sp, ?]
br"[\x00-\xff]\xb5[\x00-\xff]\x4c\xa5\x44", # push {??, ..., ??, lr}; ldr r4, [pc, #??]; add sp, r4
+ br"\xf0\xb5\x03\xaf" # push {r4-r7, lr}; add r7, sp, #0xc
}