Handle ABIs that pass and return floating point values split across multiple integer registers #5900
Labels
Component: Core
Issue needs changes to the core
Component: Type Parser
Issue needs changes to Clang/CoreTypeParser
Effort: High
Issue should take > 1 month
Impact: High
Issue adds or blocks important functionality
Type: Enhancement
Issue is a small enhancement to existing functionality
The ARM EABI specifies that floating point values be passed and returned in integer registers. Single precision (
float
orfloat32
) values fit into single registers, but double precision (double
orfloat64
) values must be placed in pairs of 32-bit integer registers.Thus a function like
atan2
, with this signature in C:double atan2(double, double)
, would look in the binary like it wasint32 atan2(int32, int32, int32, int32)
.Ideally, Binary Ninja should support this syntax to capture its true semantics:
There are (at least) two parts to adding support for this:
The text was updated successfully, but these errors were encountered: