Skip to content

include: Define __imp_aux symbols in __ASM_DEFINE_IMPORT macro on ARM64EC.

Imported functions in ARM64EC have two __imp_ symbols:

  • The usual __imp_ symbol, which is guaranteed to be directly callable from ARM64 code and is used when calling the function (this may be a thunk if the imported function is x86_64).
  • The __imp_aux_ symbol, which is the exact pointer as returned by GetProcAddress (it could point to an x86_64 function or the export thunk of an ARM64EC function).

When C code retrieves the address of a function, it uses __imp_aux_ instead of __imp_. This is reflected in __ASM_DEFINE_IMPORT by defining __imp_ to the mangled function name and __imp_aux_ to the demangled one.

We currently don't depend on it in Wine itself, but it makes the whole thing more correct. Tested by adding trace("%p\n", exp2); to msvcrt tests.

Merge request reports

Loading