From adc9d0a0b9023566dff4a8a4d6f69e3640d49c89 Mon Sep 17 00:00:00 2001 From: EgorBo Date: Thu, 19 Mar 2020 16:33:22 +0000 Subject: [PATCH] [mono] return false for AdvSimd.IsSupported and friends Fixes StackOverflow in https://github.com/dotnet/runtime/pull/33749#issuecomment-601271356 Intrinsify all `get_IsSupported` under `System.Runtime.Intrinsics*` to just `false` (except the sets we support, see mono_emit_simd_intrinsics). --- mono/mini/intrinsics.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mono/mini/intrinsics.c b/mono/mini/intrinsics.c index aa593298d3ac..38b7150b77d7 100644 --- a/mono/mini/intrinsics.c +++ b/mono/mini/intrinsics.c @@ -1927,10 +1927,10 @@ mini_emit_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSign } #ifdef ENABLE_NETCORE - // Return false for IsSupported for all types in System.Runtime.Intrinsics.X86 - // as we don't support them now + // Return false for IsSupported for all types in System.Runtime.Intrinsics.* + // if it's not handled in mono_emit_simd_intrinsics if (in_corlib && - !strcmp ("System.Runtime.Intrinsics.X86", cmethod_klass_name_space) && + !strncmp ("System.Runtime.Intrinsics", cmethod_klass_name_space, 25) && !strcmp (cmethod->name, "get_IsSupported")) { EMIT_NEW_ICONST (cfg, ins, 0); ins->type = STACK_I4;