* class.c: Include Retargetable spec in assembly name.
authorGert Driesen <drieseng@users.sourceforge.net>
Sun, 10 Feb 2008 17:50:54 +0000 (17:50 -0000)
committerGert Driesen <drieseng@users.sourceforge.net>
Sun, 10 Feb 2008 17:50:54 +0000 (17:50 -0000)
* assembly.c: Always include PublicKeyToken spec in assembly name
(with value "null" if assembly is not signed), and include
Retargetable spec.
* icall-def.h: Added icall for Assembly.get_fullname.
* icall.c: Added icall returning the fullname of an assembly.

svn path=/trunk/mono/; revision=95390

mono/metadata/ChangeLog
mono/metadata/assembly.c
mono/metadata/class.c
mono/metadata/icall-def.h
mono/metadata/icall.c

index 9ad0ffbe75757bb58449ce9f3ed65decc47e3599..11e7cc8e74152028b2ba2d823729cc88ef8147dd 100644 (file)
@@ -1,3 +1,12 @@
+2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
+
+       * class.c: Include Retargetable spec in assembly name.
+       * assembly.c: Always include PublicKeyToken spec in assembly name
+       (with value "null" if assembly is not signed), and include
+       Retargetable spec.
+       * icall-def.h: Added icall for Assembly.get_fullname.
+       * icall.c: Added icall returning the fullname of an assembly.
+
 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
 
        * class.c (mono_class_setup_vtable_general): Add a missing call to
index 45eee483d8ff59232782c6167e77f98113942421..3d35bbab9e8f2c272c8c22e4ad36629477b67635 100644 (file)
@@ -695,12 +695,12 @@ char*
 mono_stringify_assembly_name (MonoAssemblyName *aname)
 {
        return g_strdup_printf (
-               "%s, Version=%d.%d.%d.%d, Culture=%s%s%s",
+               "%s, Version=%d.%d.%d.%d, Culture=%s, PublicKeyToken=%s%s",
                aname->name,
                aname->major, aname->minor, aname->build, aname->revision,
                aname->culture && *aname->culture? aname->culture: "neutral",
-               aname->public_key_token [0] ? ", PublicKeyToken=" : "",
-               aname->public_key_token [0] ? (char *)aname->public_key_token : "");
+               aname->public_key_token [0] ? (char *)aname->public_key_token : "null",
+               (aname->flags & ASSEMBLYREF_RETARGETABLE_FLAG) ? ", Retargetable=Yes" : "");
 }
 
 static gchar*
index ce926bbfc0c7029d9f48d3d1a4fae262a4612aad..43fa2c7ece7a14b13ba7418dd039c365f03662eb 100644 (file)
@@ -181,11 +181,12 @@ _mono_type_get_assembly_name (MonoClass *klass, GString *str)
        MonoAssembly *ta = klass->image->assembly;
 
        g_string_append_printf (
-               str, ", %s, Version=%d.%d.%d.%d, Culture=%s, PublicKeyToken=%s",
+               str, ", %s, Version=%d.%d.%d.%d, Culture=%s, PublicKeyToken=%s%s",
                ta->aname.name,
                ta->aname.major, ta->aname.minor, ta->aname.build, ta->aname.revision,
                ta->aname.culture && *ta->aname.culture? ta->aname.culture: "neutral",
-               ta->aname.public_key_token [0] ? (char *)ta->aname.public_key_token : "null");
+               ta->aname.public_key_token [0] ? (char *)ta->aname.public_key_token : "null",
+               (ta->aname.flags & ASSEMBLYREF_RETARGETABLE_FLAG) ? ", Retargetable=Yes" : "");
 }
 
 static inline void
index af5d6ecb9ab72f2ff83627521d8e6c0e3db6d158..e942b8619c6b1a03900bd2fde18a80973c36d20a 100644 (file)
@@ -428,9 +428,10 @@ ICALL(ASSEM_19, "MonoDebugger_GetMethodToken", ves_icall_MonoDebugger_GetMethodT
 ICALL(ASSEM_20, "get_EntryPoint", ves_icall_System_Reflection_Assembly_get_EntryPoint)
 ICALL(ASSEM_21, "get_ReflectionOnly", ves_icall_System_Reflection_Assembly_get_ReflectionOnly)
 ICALL(ASSEM_22, "get_code_base", ves_icall_System_Reflection_Assembly_get_code_base)
-ICALL(ASSEM_23, "get_global_assembly_cache", ves_icall_System_Reflection_Assembly_get_global_assembly_cache)
-ICALL(ASSEM_24, "get_location", ves_icall_System_Reflection_Assembly_get_location)
-ICALL(ASSEM_25, "load_with_partial_name", ves_icall_System_Reflection_Assembly_load_with_partial_name)
+ICALL(ASSEM_23, "get_fullname", ves_icall_System_Reflection_Assembly_get_fullName)
+ICALL(ASSEM_24, "get_global_assembly_cache", ves_icall_System_Reflection_Assembly_get_global_assembly_cache)
+ICALL(ASSEM_25, "get_location", ves_icall_System_Reflection_Assembly_get_location)
+ICALL(ASSEM_26, "load_with_partial_name", ves_icall_System_Reflection_Assembly_load_with_partial_name)
 
 ICALL_TYPE(ASSEMN, "System.Reflection.AssemblyName", ASSEMN_1)
 ICALL(ASSEMN_1, "ParseName", ves_icall_System_Reflection_AssemblyName_ParseName)
index 3c738d32047f7b11d3c7f32b35080d98d7b03321..0aacf15f3d063849e7aa96c2d8a7705558e5825b 100644 (file)
@@ -4782,6 +4782,28 @@ fill_reflection_assembly_name (MonoDomain *domain, MonoReflectionAssemblyName *a
        }
 }
 
+static MonoString *
+ves_icall_System_Reflection_Assembly_get_fullName (MonoReflectionAssembly *assembly)
+{
+       MonoDomain *domain = mono_object_domain (assembly); 
+       MonoAssembly *mass = assembly->assembly;
+       MonoString *res;
+       gchar *name;
+
+       name = g_strdup_printf (
+               "%s, Version=%d.%d.%d.%d, Culture=%s, PublicKeyToken=%s%s",
+               mass->aname.name,
+               mass->aname.major, mass->aname.minor, mass->aname.build, mass->aname.revision,
+               mass->aname.culture && *mass->aname.culture? mass->aname.culture: "neutral",
+               mass->aname.public_key_token [0] ? (char *)mass->aname.public_key_token : "null",
+               (mass->aname.flags & ASSEMBLYREF_RETARGETABLE_FLAG) ? ", Retargetable=Yes" : "");
+
+       res = mono_string_new (domain, name);
+       g_free (name);
+
+       return res;
+}
+
 static void
 ves_icall_System_Reflection_Assembly_FillName (MonoReflectionAssembly *assembly, MonoReflectionAssemblyName *aname)
 {