mono: fix build with Apple Clang 21

Signed-off-by: Paul Guyot <pguyot@kallisys.net>
This commit is contained in:
Paul Guyot
2026-05-03 10:03:33 +02:00
committed by Renee Otten
parent c69cde54b8
commit db25278f15
2 changed files with 78 additions and 0 deletions
+2
View File
@@ -28,6 +28,8 @@ checksums rmd160 917021fc3fd08cad611d46aa7a9c19a19a64d094 \
patchfiles-append patch-aot-compiler.c.diff \
dynamic_lookup-11.patch \
patch-xcode_14.diff
# https://github.com/dotnet/runtime/pull/91808
patchfiles-append patch-icall-_Bool.diff
# autoreconf is needed just for the arm64 until upstream fixes the tooling
use_autoreconf yes
+76
View File
@@ -0,0 +1,76 @@
Fix build with C11 compilers where bool is a keyword, causing ICALL_SIG_TYPE_ ## bool
to token-paste into ICALL_SIG_TYPE__Bool which is not a declared enum member.
https://github.com/dotnet/runtime/issues/91779
https://github.com/dotnet/runtime/pull/91808
--- mono/metadata/icall-signatures.h.orig
+++ mono/metadata/icall-signatures.h
@@ -57,7 +57,7 @@
// mono_icall_sig_void_int32
// mono_icall_sig_void_object
// mono_icall_sig_void_ptr
-// mono_icall_sig_bool_ptr_ptrref
+// mono_icall_sig_boolean_ptr_ptrref
// mono_icall_sig_double_double_double
// mono_icall_sig_float_float_float
// mono_icall_sig_int_obj_ptr
@@ -94,7 +94,7 @@
// mono_icall_sig_void_ptr_ptr
// mono_icall_sig_void_ptr_ptrref
// mono_icall_sig_void_uint32_ptrref
-// mono_icall_sig_bool_ptr_int32_ptrref
+// mono_icall_sig_boolean_ptr_int32_ptrref
// mono_icall_sig_int32_int32_ptr_ptrref
// mono_icall_sig_int32_ptr_int32_ptr
// mono_icall_sig_int32_ptr_int32_ptrref
@@ -182,7 +182,7 @@
ICALL_SIG (2, (void, int32)) \
ICALL_SIG (2, (void, object)) \
ICALL_SIG (2, (void, ptr)) \
-ICALL_SIG (3, (bool, ptr, ptrref)) \
+ICALL_SIG (3, (boolean, ptr, ptrref)) \
ICALL_SIG (3, (double, double, double)) \
ICALL_SIG (3, (float, float, float)) \
ICALL_SIG (3, (int, obj, ptr)) \
@@ -219,7 +219,7 @@
ICALL_SIG (3, (void, ptr, ptr)) \
ICALL_SIG (3, (void, ptr, ptrref)) \
ICALL_SIG (3, (void, uint32, ptrref)) \
-ICALL_SIG (4, (bool, ptr, int32, ptrref)) \
+ICALL_SIG (4, (boolean, ptr, int32, ptrref)) \
ICALL_SIG (4, (int32, int32, ptr, ptrref)) \
ICALL_SIG (4, (int32, ptr, int32, ptr)) \
ICALL_SIG (4, (int32, ptr, int32, ptrref)) \
--- mono/metadata/icall.c.orig
+++ mono/metadata/icall.c
@@ -9418,8 +9418,7 @@
// mono_create_icall_signatures depends on this order. Handle with care.
// It is alphabetical.
typedef enum ICallSigType {
- ICALL_SIG_TYPE_bool = 0x00,
- ICALL_SIG_TYPE_boolean = ICALL_SIG_TYPE_bool,
+ ICALL_SIG_TYPE_boolean = 0x00,
ICALL_SIG_TYPE_double = 0x01,
ICALL_SIG_TYPE_float = 0x02,
ICALL_SIG_TYPE_int = 0x03,
@@ -9496,7 +9495,7 @@
typedef gsize G_MAY_ALIAS gsize_a;
MonoType * const lookup [ ] = {
- m_class_get_byval_arg (mono_defaults.boolean_class), // ICALL_SIG_TYPE_bool
+ m_class_get_byval_arg (mono_defaults.boolean_class), // ICALL_SIG_TYPE_boolean
m_class_get_byval_arg (mono_defaults.double_class), // ICALL_SIG_TYPE_double
m_class_get_byval_arg (mono_defaults.single_class), // ICALL_SIG_TYPE_float
m_class_get_byval_arg (mono_defaults.int_class), // ICALL_SIG_TYPE_int
--- mono/mini/aot-compiler.c.orig
+++ mono/mini/aot-compiler.c
@@ -13507,8 +13507,8 @@
#ifndef MONO_ARCH_HAVE_INTERP_ENTRY_TRAMPOLINE
static MonoMethodSignature * const * const interp_in_static_sigs [] = {
- &mono_icall_sig_bool_ptr_int32_ptrref,
- &mono_icall_sig_bool_ptr_ptrref,
+ &mono_icall_sig_boolean_ptr_int32_ptrref,
+ &mono_icall_sig_boolean_ptr_ptrref,
&mono_icall_sig_int32_int32_ptrref,
&mono_icall_sig_int32_int32_ptr_ptrref,
&mono_icall_sig_int32_ptr_int32_ptr,