From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from [87.239.111.99] (localhost [127.0.0.1]) by dev.tarantool.org (Postfix) with ESMTP id A06BE6ECE2; Sat, 30 May 2026 19:04:47 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org A06BE6ECE2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tarantool.org; s=dev; t=1780157087; bh=NDAx6QFn0igSC40W+0SXMOUgbuoO1M7h8Mu/XSJ56EA=; h=To:Date:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:Cc:From; b=qtK14i+SRQJ6Y1ZUrrDoEvm9qhxBKjGyVTSrrFGM07gbJ/M0oAJ+04DiGF0Cs62Ie LasVOyt4x04LtRHFKchprx7y/H6ymg3Uk604/TyijjQtUHEvOUiL0RAyzhg3ECVmQz CsYrUAHJ05i5reMLx9Xc3s4PtfXsq2vmk/Yvixao= Received: from send243.i.mail.ru (send243.i.mail.ru [95.163.59.82]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id 1E2CD6ECCC for ; Sat, 30 May 2026 19:04:46 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 1E2CD6ECCC Received: by exim-smtp-5b85998476-w27zp with esmtpa (envelope-from ) id 1wTMB3-00000000NxS-0UG6; Sat, 30 May 2026 19:04:45 +0300 To: Sergey Bronnikov , Evgeniy Temirgaleev Date: Sat, 30 May 2026 19:04:04 +0300 Message-ID: <20260530160409.4043089-1-skaplun@tarantool.org> X-Mailer: git-send-email 2.54.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Mailru-Src: smtp X-7564579A: 646B95376F6C166E X-77F55803: 4F1203BC0FB41BD9402BF17F4A9A44D6AD82277AB1EF80057AC569570370E8A800894C459B0CD1B93B15D3DF1F19C2B166FA44935DFD4124C046272D880744408063F32B492FEB80E8A5C135F8BDED31 X-7FA49CB5: FF5795518A3D127A4AD6D5ED66289B5278DA827A17800CE76C0A440987CA342DC2099A533E45F2D0395957E7521B51C2CFCAF695D4D8E9FCEA1F7E6F0F101C6759CC434672EE6371C2A783ECEC0211ADC4224003CC836476D5A39DEEDB180909611E41BBFE2FEB2B0BE522BED375AB913AB9A7B28EADB19B0B22F57A1431AC14259306B61C6CCDE99FA2833FD35BB23D9E625A9149C048EE33AC447995A7AD186FD1C55BDD38FC3FD2E47CDBA5A96583BD4B6F7A4D31EC0BC014FD901B82EE079FA2833FD35BB23D27C277FBC8AE2E8BAE9A1BBD95851C5BA471835C12D1D977C4224003CC8364762BB6847A3DEAEFB0F43C7A68FF6260569E8FC8737B5C2249EC8D19AE6D49635B68655334FD4449CB9ECD01F8117BC8BEAAAE862A0553A39223F8577A6DFFEA7CA819EB9AE8EA3DE343847C11F186F3C59DAA53EE0834AAEE X-C1DE0DAB: 0D63561A33F958A529077B530104E94F5002B1117B3ED6966D5284C70AF19A7F7E0012C66AE17B00823CB91A9FED034534781492E4B8EEAD2F8D89FC5850081EC79554A2A72441328621D336A7BC284946AD531847A6065A535571D14F44ED41 X-C8649E89: 1C3962B70DF3F0AD73CAD6646DEDE191716CD42B3DD1D34C77DD89D51EBB774225B6776AC983F447FC0B9F89525902EE6F57B2FD27647F25E66C117BDB76D659B14069BC15EA32FAE35D7D214EA9676E9A198FF5F216DE1440CDFC5993F8A547D694E8ED60F248F4B8341EE9D5BE9A0A0A53FABAC7FD4FC94EEFE4E6A881BF0036F1CA714941E859C7CEAA0681F5848F4C41F94D744909CECFA6C6B0C050A61A8CAF69B82BA93681CD72808BE417F3B9E0E7457915DAA85F X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu53w8ahmwBjZKM/YPHZyZHvz5uv+WouB9+ObcCpyrx6l7KImUglyhkEat/+ysWwi0gdhEs0JGjl6ggRWTy1haxBpVdbIX1nthFXMZebaIdHP2ghjoIc/363UZI6Kf1ptIMVRI2994ruhLUODHK5b7un74= X-DA7885C5: 13857D450C638342F255D290C0D534F98D92DAB44F4ECB6A584DDF524B0B65067DFDC20E7497F5975B1A4C17EAA7BC4BEF2421ABFA55128DAF83EF9164C44C7E X-Mailru-Sender: 689FA8AB762F7393520AF17B8A65FDE21303CC4278704DE308715E8504D67BFAE4DFE9AF2B4E7F8CE49D44BB4BD9522A059A1ED8796F048DB274557F927329BE89D5A3BC2B10C37545BD1C3CC395C826B4A721A3011E896F X-Mras: Ok Subject: [Tarantool-patches] [PATCH luajit 0/5] Various FFI ABI calling conventions fixes X-BeenThere: tarantool-patches@dev.tarantool.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Sergey Kaplun via Tarantool-patches Reply-To: Sergey Kaplun Cc: tarantool-patches@dev.tarantool.org Errors-To: tarantool-patches-bounces@dev.tarantool.org Sender: "Tarantool-patches" This patch set provides the various improvements to the FFI interface. The first two patches add support for OSX calling conventions for varargs functions and fix the JIT-compiled code for varargs functions on macOS arm64. The next patch adds handling for HFA structures with an array in them. The fourth patch adds many fixups for x64/arm64 calling conventions. The last one patch is a follow-up to it to fix the macOS regression introduced in the fourth patch. Branch: https://github.com/tarantool/luajit/tree/skaplun/ffi-c-call-conventions Related issues: * https://github.com/tarantool/tarantool/issues/12480 * https://github.com/tarantool/tarantool/issues/6097 * https://github.com/LuaJIT/LuaJIT/issues/205 * https://github.com/LuaJIT/LuaJIT/issues/1357 * https://github.com/LuaJIT/LuaJIT/issues/1455 Mike Pall (5): FFI: Unify stack setup for C calls in interpreter. FFI/ARM64/OSX: Handle non-standard OSX C calling conventions. ARM64: Fix pass-by-value struct calling conventions. FFI: Various ABI and calling convention fixes. FFI/MacOS: Fix calling convention for enums. src/lj_asm_arm64.h | 75 +- src/lj_ccall.c | 133 ++-- src/lj_ccall.h | 13 +- src/lj_cparse.c | 9 +- src/lj_crecord.c | 27 + src/lj_ctype.h | 2 +- src/vm_arm.dasc | 8 +- src/vm_arm64.dasc | 8 +- src/vm_mips.dasc | 1 - src/vm_mips64.dasc | 1 - src/vm_ppc.dasc | 3 +- src/vm_x64.dasc | 8 +- src/vm_x86.dasc | 22 +- .../ffi-call-empty-struct.test.lua | 47 ++ test/tarantool-tests/ffi-ccall/CMakeLists.txt | 13 +- test/tarantool-tests/ffi-ccall/libfficcall.c | 650 ++++++++++++++++++ .../ffi-vector-arguments.test.lua | 62 ++ .../gh-6097-arm64-osx-ffi-vararg.test.lua | 43 ++ ...57-arm64-struct-array-pass-by-val.test.lua | 23 + .../lj-1455-arm64-ffi-ccall-hfa.test.lua | 82 +++ .../lj-1455-bitfield0-a16.test.lua | 27 + .../lj-1455-ffi-conventions.test.lua | 441 ++++++++++++ .../lj-205-arm64-osx-ffi-enum-arg.test.lua | 63 ++ .../lj-205-arm64-osx-ffi-small-arg.test.lua | 29 + 24 files changed, 1703 insertions(+), 87 deletions(-) create mode 100644 test/tarantool-tests/ffi-call-empty-struct.test.lua create mode 100644 test/tarantool-tests/ffi-vector-arguments.test.lua create mode 100644 test/tarantool-tests/gh-6097-arm64-osx-ffi-vararg.test.lua create mode 100644 test/tarantool-tests/lj-1357-arm64-struct-array-pass-by-val.test.lua create mode 100644 test/tarantool-tests/lj-1455-arm64-ffi-ccall-hfa.test.lua create mode 100644 test/tarantool-tests/lj-1455-bitfield0-a16.test.lua create mode 100644 test/tarantool-tests/lj-1455-ffi-conventions.test.lua create mode 100644 test/tarantool-tests/lj-205-arm64-osx-ffi-enum-arg.test.lua create mode 100644 test/tarantool-tests/lj-205-arm64-osx-ffi-small-arg.test.lua -- 2.54.0