From: Milos Kotlar Date: Mon, 5 Dec 2022 08:20:45 +0000 (+0100) Subject: [mono][tests] Using a literal field with stdsfld/ldsfld should trigger a MissingField... X-Git-Tag: accepted/tizen/unified/riscv/20231226.055536~5181 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1a37caf773a3b857ccff49a31be3333d4fdc491f;p=platform%2Fupstream%2Fdotnet%2Fruntime.git [mono][tests] Using a literal field with stdsfld/ldsfld should trigger a MissingFieldException (#79160) --- diff --git a/src/mono/mono/mini/interp/transform.c b/src/mono/mono/mini/interp/transform.c index b45cd93..d5c7068 100644 --- a/src/mono/mono/mini/interp/transform.c +++ b/src/mono/mono/mini/interp/transform.c @@ -4154,6 +4154,12 @@ interp_emit_sfld_access (TransformData *td, MonoClassField *field, MonoClass *fi MonoVTable *vtable = mono_class_vtable_checked (m_field_get_parent (field), error); return_if_nok (error); + MonoType *ftype = mono_field_get_type_internal (field); + if (ftype->attrs & FIELD_ATTRIBUTE_LITERAL) { + mono_error_set_generic_error (error, "System", "MissingFieldException", "Using static instructions with literal field"); + return; + } + if (mono_class_field_is_special_static (field)) { guint32 offset = GPOINTER_TO_UINT (mono_special_static_field_get_offset (field, error)); mono_error_assert_ok (error); @@ -4191,7 +4197,6 @@ interp_emit_sfld_access (TransformData *td, MonoClassField *field, MonoClass *fi if (mt == MINT_TYPE_VT) size = mono_class_value_size (field_class, NULL); if (is_load) { - MonoType *ftype = mono_field_get_type_internal (field); if (ftype->attrs & FIELD_ATTRIBUTE_INIT_ONLY && vtable->initialized) { if (interp_emit_load_const (td, field_addr, mt)) return; diff --git a/src/tests/issues.targets b/src/tests/issues.targets index 537f6c3..07db2c1 100644 --- a/src/tests/issues.targets +++ b/src/tests/issues.targets @@ -2213,9 +2213,6 @@ https://github.com/dotnet/runtime/issues/54396 - - https://github.com/dotnet/runtime/issues/54560 - needs triage