Skip to content

ARM64 ABI breaks calling convention for variadic functions.

Hi Daniel,

I finally tried ECL on iOS last weekend, and got it working for armv7, with only several minor fixes. I really enjoyed the moment that ASDF and swank worked. Live coding on iOS through SLIME!

But when testing for arm64, there is a serious issue, arm64 variadic arguments passing ABI has changed that these mismatching signatures would result in unspecified argument values:

typedef cl_object (*cl_objectfn)(cl_narg narg, ...);
cl_object cl_string_equal (cl_narg narg, cl_object string1, cl_object string2, ...);

Actually, arm64 requires that variadic function signatures be exact match. It would probably have the same issue on Android for arm64.

I wonder if a fix would be possible?

A discussion on stackoverflow

Procedure Call Standard for the ARM 64-bit Architecture

Apple AARCH64 calling convention