Change in libffi behaviour -- large struct args
Kaz Kylheku
kaz@kylheku.com
Tue May 31 16:55:51 GMT 2022
On 2022-05-31 09:47, dancol@dancol.org wrote:
> On May 31, 2022 11:53:56 DJ Delorie via Libffi-discuss <libffi-discuss@sourceware.org> wrote:
>
>> While this is technically an ABI change, if the "old" ABI never worked,
>> I can't see how this would break anything by changing.
>>
>> I will add that passing structs is likely more complex than you think ;-)
>
> The problem is that whether the old API was broken or not, changing it can break working code. What do the libffi people think about using symbol versioning?
ELF symbol versioning keeps old binaries working.
Newly recompiled programs will break in cases when recompilation
alone doesn't fix the issue.
Versioning works really well for things like new members being added to
a structure, where newly recompiled code picks up the new declaration
and so recompiling == fixing.
It won't work in a situation where some FFI-using code has worked around
for some libffi behavior and expects that not to be moving target;
then someone has to fix the code. People recompile code all the time without
fixing anything in it.
More information about the Libffi-discuss
mailing list