New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support for __vectorcall calling convention #500
Comments
@weltling Could you please have a look at this? |
@lisachenko Please let me know is it related to verifying the functionality of FFI for PHP7.4.0. As we know that to enable the FFI extension, PHP has to be configured with --with-ffi. |
@lisachenko As we go through the latest libffi sources, unable to find an abi related to vectorcall convention. |
Yes, so support of |
I believe php has a fork of libffi with basic support for vectorcall See this thread: Would be nice to get this upstreamed, it's fairly important |
@cmb69 for upstreaming :) |
Thanks for the ping, @weltling! Even "basic support" is somewhat exaggerated; see the commit message for some details. The problem is that float/double would need to be supported for the general case in libffi (such parameters are not used by PHP APIs, so the minimal patch for PHP is okay-ish), what is not trivial (contrary to the existing fake implementation). |
@cmb69 CPython use libffi and supports vectorcall by default https://www.python.org/dev/peps/pep-0590/ |
CPython's vectorcall is something completely different from Windows' __vectorcall. |
oh OK my bad |
System Details
Windows x64, testing FFI with PHP7.4.0 alpha2-nts
Problems Description
I'm trying to import a function with FFI, but when I use DLL Export Viewer I can see that function name suffixed with double @@ and following number like some_func@@16 which is used for __vectorcall calling convention.
I am not sure why I couldn't import this function with FFI from x64 library, because all markers should be ignored for x64 platform as far as I know.
Is libffi supports importing of such functions or not?
The text was updated successfully, but these errors were encountered: