From 11f38b88642385926baeb20a486c0c00155862f1 Mon Sep 17 00:00:00 2001 From: Tobiasz Laskowski Date: Sun, 2 Aug 2026 01:56:16 +0100 Subject: [PATCH 1/3] Expose Array offset helpers only for cppia jit This is technically a breaking change, so show them for older api levels --- include/Array.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include/Array.h b/include/Array.h index fc101bf98..e3d218b40 100644 --- a/include/Array.h +++ b/include/Array.h @@ -393,10 +393,14 @@ class HXCPP_EXTERN_CLASS_ATTRIBUTES ArrayBase : public ArrayCommon mutable int length; +#if (HXCPP_API_LEVEL < 500) || defined(CPPIA_JIT) + static inline int baseOffset() { return (int)offsetof(ArrayBase,mBase); } static inline int allocOffset() { return (int)offsetof(ArrayBase,mAlloc); } static inline int lengthOffset() { return (int)offsetof(ArrayBase,length); } +#endif + protected: mutable int mAlloc; mutable char *mBase; From def61627e731e201609f38aceb7ffc1db6ee5286 Mon Sep 17 00:00:00 2001 From: Tobiasz Laskowski Date: Sun, 2 Aug 2026 02:03:33 +0100 Subject: [PATCH 2/3] Disable invalid-offsetof only for offending code Rather than disabling it globally in the build tool, we can just mark the offending lines. --- include/Array.h | 9 +++++++++ toolchain/android-toolchain-clang.xml | 1 - toolchain/android-toolchain-gcc.xml | 1 - toolchain/appletvos-toolchain.xml | 1 - toolchain/appletvsim-toolchain.xml | 1 - toolchain/common-defines.xml | 1 - toolchain/emscripten-toolchain.xml | 1 - toolchain/gcw0-toolchain.xml | 1 - toolchain/iphoneos-toolchain.xml | 1 - toolchain/iphonesim-toolchain.xml | 1 - toolchain/linux-toolchain.xml | 1 - toolchain/mac-toolchain.xml | 1 - toolchain/mingw-toolchain.xml | 1 - toolchain/watchos-toolchain.xml | 1 - toolchain/watchsimulator-toolchain.xml | 1 - 15 files changed, 9 insertions(+), 14 deletions(-) diff --git a/include/Array.h b/include/Array.h index e3d218b40..542a84f71 100644 --- a/include/Array.h +++ b/include/Array.h @@ -395,10 +395,19 @@ class HXCPP_EXTERN_CLASS_ATTRIBUTES ArrayBase : public ArrayCommon #if (HXCPP_API_LEVEL < 500) || defined(CPPIA_JIT) + #if defined(__GNUC__) || defined(__clang__) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Winvalid-offsetof" + #endif + static inline int baseOffset() { return (int)offsetof(ArrayBase,mBase); } static inline int allocOffset() { return (int)offsetof(ArrayBase,mAlloc); } static inline int lengthOffset() { return (int)offsetof(ArrayBase,length); } + #if defined(__GNUC__) || defined(__clang__) + #pragma GCC diagnostic pop + #endif + #endif protected: diff --git a/toolchain/android-toolchain-clang.xml b/toolchain/android-toolchain-clang.xml index 349d09d5a..ca8706118 100644 --- a/toolchain/android-toolchain-clang.xml +++ b/toolchain/android-toolchain-clang.xml @@ -72,7 +72,6 @@ - diff --git a/toolchain/android-toolchain-gcc.xml b/toolchain/android-toolchain-gcc.xml index 2e2f50007..647ab12e7 100644 --- a/toolchain/android-toolchain-gcc.xml +++ b/toolchain/android-toolchain-gcc.xml @@ -89,7 +89,6 @@ - diff --git a/toolchain/appletvos-toolchain.xml b/toolchain/appletvos-toolchain.xml index fae1448da..395356324 100644 --- a/toolchain/appletvos-toolchain.xml +++ b/toolchain/appletvos-toolchain.xml @@ -37,7 +37,6 @@ - diff --git a/toolchain/appletvsim-toolchain.xml b/toolchain/appletvsim-toolchain.xml index a7d853d7b..0f8868f88 100644 --- a/toolchain/appletvsim-toolchain.xml +++ b/toolchain/appletvsim-toolchain.xml @@ -27,7 +27,6 @@ - diff --git a/toolchain/common-defines.xml b/toolchain/common-defines.xml index 3d14752d4..caea5aecc 100644 --- a/toolchain/common-defines.xml +++ b/toolchain/common-defines.xml @@ -52,6 +52,5 @@ - diff --git a/toolchain/emscripten-toolchain.xml b/toolchain/emscripten-toolchain.xml index 3a5a61142..01d39c407 100644 --- a/toolchain/emscripten-toolchain.xml +++ b/toolchain/emscripten-toolchain.xml @@ -102,7 +102,6 @@ - diff --git a/toolchain/gcw0-toolchain.xml b/toolchain/gcw0-toolchain.xml index ddbb5295c..697377b35 100644 --- a/toolchain/gcw0-toolchain.xml +++ b/toolchain/gcw0-toolchain.xml @@ -30,7 +30,6 @@ - diff --git a/toolchain/iphoneos-toolchain.xml b/toolchain/iphoneos-toolchain.xml index 2f335127a..9b221a3c2 100644 --- a/toolchain/iphoneos-toolchain.xml +++ b/toolchain/iphoneos-toolchain.xml @@ -51,7 +51,6 @@ - diff --git a/toolchain/iphonesim-toolchain.xml b/toolchain/iphonesim-toolchain.xml index e9d443e5b..8a0e7a592 100644 --- a/toolchain/iphonesim-toolchain.xml +++ b/toolchain/iphonesim-toolchain.xml @@ -28,7 +28,6 @@ - diff --git a/toolchain/linux-toolchain.xml b/toolchain/linux-toolchain.xml index 6fd3347fa..f436883b5 100644 --- a/toolchain/linux-toolchain.xml +++ b/toolchain/linux-toolchain.xml @@ -44,7 +44,6 @@ - diff --git a/toolchain/mac-toolchain.xml b/toolchain/mac-toolchain.xml index 01e9ada69..6d57f535d 100644 --- a/toolchain/mac-toolchain.xml +++ b/toolchain/mac-toolchain.xml @@ -40,7 +40,6 @@ - diff --git a/toolchain/mingw-toolchain.xml b/toolchain/mingw-toolchain.xml index c7a11fa43..6a7f86059 100644 --- a/toolchain/mingw-toolchain.xml +++ b/toolchain/mingw-toolchain.xml @@ -34,7 +34,6 @@ - diff --git a/toolchain/watchos-toolchain.xml b/toolchain/watchos-toolchain.xml index e64b425b2..9fa0b663a 100644 --- a/toolchain/watchos-toolchain.xml +++ b/toolchain/watchos-toolchain.xml @@ -37,7 +37,6 @@ - diff --git a/toolchain/watchsimulator-toolchain.xml b/toolchain/watchsimulator-toolchain.xml index 125265c33..3daa30066 100644 --- a/toolchain/watchsimulator-toolchain.xml +++ b/toolchain/watchsimulator-toolchain.xml @@ -37,7 +37,6 @@ - From 9240a7e514bb198e7d9d270ffb02fd0f6a6fdd9e Mon Sep 17 00:00:00 2001 From: Tobiasz Laskowski Date: Mon, 3 Aug 2026 19:39:23 +0100 Subject: [PATCH 3/3] Avoid disabling return-type-c-linkage globally --- src/hx/CFFI.cpp | 9 +++++++++ toolchain/android-toolchain-clang.xml | 1 - toolchain/emscripten-toolchain.xml | 1 - toolchain/iphoneos-toolchain.xml | 2 -- toolchain/iphonesim-toolchain.xml | 2 -- toolchain/mac-toolchain.xml | 2 -- 6 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/hx/CFFI.cpp b/src/hx/CFFI.cpp index 264447c82..641da616c 100644 --- a/src/hx/CFFI.cpp +++ b/src/hx/CFFI.cpp @@ -1007,6 +1007,11 @@ value query_root(gcroot) { return 0; } void destroy_root(gcroot) { } +#if defined(__clang__) +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wreturn-type-c-linkage" +#endif + String alloc_hxs_wchar(const wchar_t *ptr,int size) { return String::create(ptr,size); @@ -1022,6 +1027,10 @@ String alloc_hxs_utf8(const char *ptr,int size) return String::create(ptr,size); } +#if defined(__clang__) +# pragma clang diagnostic pop +#endif + const char * hxs_utf8(const String &string,hx::IStringAlloc *alloc) { return string.utf8_str(alloc); diff --git a/toolchain/android-toolchain-clang.xml b/toolchain/android-toolchain-clang.xml index ca8706118..33d909eac 100644 --- a/toolchain/android-toolchain-clang.xml +++ b/toolchain/android-toolchain-clang.xml @@ -72,7 +72,6 @@ - diff --git a/toolchain/emscripten-toolchain.xml b/toolchain/emscripten-toolchain.xml index 01d39c407..ee0820283 100644 --- a/toolchain/emscripten-toolchain.xml +++ b/toolchain/emscripten-toolchain.xml @@ -102,7 +102,6 @@ - diff --git a/toolchain/iphoneos-toolchain.xml b/toolchain/iphoneos-toolchain.xml index 9b221a3c2..22df54b35 100644 --- a/toolchain/iphoneos-toolchain.xml +++ b/toolchain/iphoneos-toolchain.xml @@ -51,8 +51,6 @@ - - diff --git a/toolchain/iphonesim-toolchain.xml b/toolchain/iphonesim-toolchain.xml index 8a0e7a592..406544097 100644 --- a/toolchain/iphonesim-toolchain.xml +++ b/toolchain/iphonesim-toolchain.xml @@ -28,8 +28,6 @@ - - diff --git a/toolchain/mac-toolchain.xml b/toolchain/mac-toolchain.xml index 6d57f535d..08ca25e31 100644 --- a/toolchain/mac-toolchain.xml +++ b/toolchain/mac-toolchain.xml @@ -40,8 +40,6 @@ - -