https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70024
Bug ID: 70024 Summary: [5/6 Regression] libffi ABI change w/o SONAME bump Product: gcc Version: 5.3.0 Status: UNCONFIRMED Keywords: ABI Severity: normal Priority: P3 Component: libffi Assignee: unassigned at gcc dot gnu.org Reporter: rguenth at gcc dot gnu.org Target Milestone: --- Target: aarch64* ../../gcc-4_8-branch/libffi/src/aarch64/ffitarget.h:#define FFI_TRAMPOLINE_SIZE 36 ../../gcc-4_9-branch/libffi/src/aarch64/ffitarget.h:#define FFI_TRAMPOLINE_SIZE 36 ... ../../gcc-5-branch/libffi/src/aarch64/ffitarget.h:#define FFI_TRAMPOLINE_SIZE 24 ../../trunk3/libffi/src/aarch64/ffitarget.h:#define FFI_TRAMPOLINE_SIZE 24 and typedef struct { #if @FFI_EXEC_TRAMPOLINE_TABLE@ void *trampoline_table; void *trampoline_table_entry; #else char tramp[FFI_TRAMPOLINE_SIZE]; #endif ffi_cif *cif; void (*fun)(ffi_cif*,void*,void**,void*); void *user_data; #ifdef __GNUC__ } ffi_closure __attribute__((aligned (8))); so sizeof ffi_closure changed as well as offset of fun and user_data members. This breaks (at least) python-cffi (built against old FFI and run against new).