Skip to content

Lifting for PC-relative vldr instruction does not align PC when calculating address #6947

Open
@whitequark

Description

@whitequark

Version and Platform (required):

  • Binary Ninja Version: 5.1.7598-test Ultimate (0e5168d7)
  • Edition: Ultimate
  • OS: Debian Linux
  • OS Version: 13
  • CPU Architecture: x86_64

Bug Description:
This vldr instruction:

Image

Loads from 802808a:

Image

However, consulting the ARM ARM for VLDR, it's clear that the base address is word aligned when PC is the base register:

Image

Since the address expression is [pc, 0x58], where the displacement is a multiple of 4, the instruction cannot be loading anything from an address ending in ...a.

Steps To Reproduce:

  1. Open attached BNDB

Expected Behavior:
Load from the correct address.

Binary:
bug_vfp.zip

Metadata

Metadata

Assignees

Labels

Arch: ARM64Issues with the AArch64 architecture pluginComponent: ArchitectureIssue needs changes to an architecture pluginEffort: TrivialIssue should take < 1 dayImpact: MediumIssue is impactful with a bad, or no, workaround

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions