[mono][tests] Using a literal field with stdsfld/ldsfld should trigger a MissingField...
authorMilos Kotlar <kotlarmilos@gmail.com>
Mon, 5 Dec 2022 08:20:45 +0000 (09:20 +0100)
committerGitHub <noreply@github.com>
Mon, 5 Dec 2022 08:20:45 +0000 (09:20 +0100)
src/mono/mono/mini/interp/transform.c
src/tests/issues.targets

index b45cd93..d5c7068 100644 (file)
@@ -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;
index 537f6c3..07db2c1 100644 (file)
         <ExcludeList Include = "$(XunitTestBinBase)/JIT/jit64/verif/sniff/fg/ver_fg_13/**">
             <Issue>https://github.com/dotnet/runtime/issues/54396</Issue>
         </ExcludeList>
-        <ExcludeList Include = "$(XunitTestBinBase)/Loader/classloader/Statics/Misc/LiteralStatic/**">
-            <Issue>https://github.com/dotnet/runtime/issues/54560</Issue>
-        </ExcludeList>
         <ExcludeList Include = "$(XunitTestBinBase)/JIT/Regression/CLR-x86-JIT/V1-M12-Beta2/b59952/b59952/**">
             <Issue>needs triage</Issue>
         </ExcludeList>