Merge pull request #890 from xoofx/master
authorAlex Rønne Petersen <alex@lycus.org>
Wed, 11 Jun 2014 07:22:29 +0000 (09:22 +0200)
committerAlex Rønne Petersen <alex@lycus.org>
Wed, 11 Jun 2014 07:22:29 +0000 (09:22 +0200)
[Mono.Linker] Add support for <Module> with static method and pre-mark t...

mcs/tools/linker/Mono.Linker.Steps/MarkStep.cs
mcs/tools/linker/Mono.Linker/LinkContext.cs

index 30b7779f586d2534a89a3f9e72b4cb7c64cd0bc1..430f2c2c8851e6cc7a0d08e6c6ea532e8bc87ae1 100644 (file)
@@ -290,12 +290,28 @@ namespace Mono.Linker.Steps {
                        if (CheckProcessed (assembly))
                                return;
 
+                       ProcessModule (assembly);
+
                        MarkCustomAttributes (assembly);
 
                        foreach (ModuleDefinition module in assembly.Modules)
                                MarkCustomAttributes (module);
                }
 
+               void ProcessModule (AssemblyDefinition assembly)
+               {
+                       // Pre-mark <Module> if there is any methods as they need to be executed 
+                       // at assembly load time
+                       foreach (TypeDefinition type in assembly.MainModule.Types)
+                       {
+                               if (type.Name == "<Module>" && type.HasMethods)
+                               {
+                                       MarkType (type);
+                                       break;
+                               }
+                       }
+               }
+
                protected void MarkField (FieldReference reference)
                {
 //                     if (IgnoreScope (reference.DeclaringType.Scope))
index 8d97f8dc1504b62d710c91111c05e999ed479cab..c4d71083cd531805cb93116ea521ac956623fff0 100644 (file)
@@ -217,6 +217,14 @@ namespace Mono.Linker {
                        case "mscorlib":
                        case "Accessibility":
                        case "Mono.Security":
+                               // WPF
+                       case "PresentationFramework":
+                       case "PresentationCore":
+                       case "WindowsBase":
+                       case "UIAutomationProvider":
+                       case "UIAutomationTypes":
+                       case "PresentationUI":
+                       case "ReachFramework":
                                return true;
                        default:
                                return name.Name.StartsWith ("System")