Array indexing pattern unrecognized on ARM when array contents referenced via literal pool #4915
Labels
Arch: ARM/Thumb
Issues with the ARM/Thumb architecture plugin
Component: Architecture
Issue needs changes to an architecture plugin
Core: LLIL
Issue involves Low Level IL
Core: MLIL
Issue involves Medium Level IL
Effort: Trivial
Issue should take < 1 day
Milestone
Version and Platform (required):
3.6 on MacOS
Bug Description:
Binja has all the information it needs to produce the array indexing pattern, but it doesn't.
Steps To Reproduce:
Open test.o from the following archive: test.o.zip and go to
_start
:Now go to 0x3C (array) and set its type to
uint32_t[2]
:Back at 0x14 in
_start
, it should show an array access, but it doesn't:Select the
0x3C
in the line*(0x3c + (index << 2)) = r0
and make it a pointer (hotkey "o") and you get:Expected Behavior:
Binja should show the array indexing pattern once the type of the base of the access is set to an array type. It should not require users to additionally hint the base address is a pointer.
Screenshots:
(see above)
Additional Information:
I think this is due to the 2-step indirection of retrieving the array base for literal pool loads:
The first load is from
[pc, #0x18]
within pool, which resolves to address 0x28, which contains the pointer to the array contents at 0x3C.The text was updated successfully, but these errors were encountered: