You've already forked linux-packaging-mono
Imported Upstream version 5.4.0.167
Former-commit-id: 5624ac747d633e885131e8349322922b6a59baaa
This commit is contained in:
parent
e49d6f06c0
commit
536cd135cc
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<linker>
|
||||
<assembly fullname="Mono.Posix">
|
||||
<type fullname="Mono.Posix.UnixEndPoint" />
|
||||
</assembly>
|
||||
</linker>
|
||||
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<linker>
|
||||
<assembly fullname="System.Core">
|
||||
<type fullname="System.Runtime.CompilerServices.CallSiteOps" preserve="methods" feature="dynamic" />
|
||||
</assembly>
|
||||
</linker>
|
||||
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<linker>
|
||||
<assembly fullname="System.Drawing">
|
||||
<type fullname="System.Drawing.Imaging.BitmapData" preserve="fields" />
|
||||
</assembly>
|
||||
</linker>
|
||||
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<linker>
|
||||
<assembly fullname="System.Web">
|
||||
<type fullname="System.Web.Util.ICalls" />
|
||||
</assembly>
|
||||
</linker>
|
||||
20
external/linker/linker/Descriptors/System.xml
vendored
20
external/linker/linker/Descriptors/System.xml
vendored
@@ -1,20 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<linker>
|
||||
<assembly fullname="System">
|
||||
<type fullname="System.Configuration.DefaultConfig" />
|
||||
<type fullname="System.Diagnostics.DefaultTraceListener" />
|
||||
<type fullname="System.Diagnostics.FileVersionInfo" />
|
||||
<type fullname="System.Diagnostics.Process" />
|
||||
<type fullname="System.Diagnostics.ProcessModule" />
|
||||
<type fullname="System.IO.FAMWatcher" />
|
||||
<type fullname="System.IO.FileSystemWatcher" />
|
||||
<type fullname="System.IO.InotifyWatcher" />
|
||||
<type fullname="System.Net.Dns" />
|
||||
<type fullname="System.Net.SocketAddress" />
|
||||
<type fullname="System.Net.Sockets.LingerOption" />
|
||||
<type fullname="System.Net.Sockets.Socket" />
|
||||
<type fullname="System.Net.Sockets.MulticastOption" preserve="fields" />
|
||||
<type fullname="System.Net.Sockets.Socket/SocketAsyncResult" preserve="fields" />
|
||||
<type fullname="System.Net.Sockets.SocketException" />
|
||||
</assembly>
|
||||
</linker>
|
||||
405
external/linker/linker/Descriptors/mscorlib.xml
vendored
405
external/linker/linker/Descriptors/mscorlib.xml
vendored
@@ -1,405 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<linker>
|
||||
<assembly fullname="mscorlib">
|
||||
|
||||
<type fullname="System.AppDomain" preserve="fields">
|
||||
<method name="DoDomainUnload" />
|
||||
<method name="DoTypeResolve" />
|
||||
<method name="DoAssemblyResolve" />
|
||||
<method name="DoAssemblyLoad" />
|
||||
<method name="DoDomainUnload" />
|
||||
<method name="InternalSetContext" />
|
||||
</type>
|
||||
|
||||
<type fullname="System.AppDomainSetup" preserve="fields" />
|
||||
<type fullname="System.AppDomainUnloadedException" />
|
||||
<type fullname="System.ApplicationException" />
|
||||
<type fullname="System.ArgIterator" />
|
||||
<type fullname="System.ArgumentException" />
|
||||
<type fullname="System.ArgumentNullException" />
|
||||
<type fullname="System.ArgumentOutOfRangeException" />
|
||||
<type fullname="System.ArithmeticException" />
|
||||
<type fullname="System.Array">
|
||||
<method name="InternalArray__ICollection_get_Count" />
|
||||
<method name="InternalArray__ICollection_get_IsReadOnly" />
|
||||
<method name="InternalArray__IEnumerable_GetEnumerator" />
|
||||
<method name="InternalArray__ICollection_Clear" />
|
||||
<method name="InternalArray__ICollection_Add" />
|
||||
<method name="InternalArray__ICollection_Remove" />
|
||||
<method name="InternalArray__ICollection_Contains" />
|
||||
<method name="InternalArray__ICollection_CopyTo" />
|
||||
<method name="InternalArray__Insert" />
|
||||
<method name="InternalArray__RemoveAt" />
|
||||
<method name="InternalArray__IndexOf" />
|
||||
<method name="InternalArray__get_Item" />
|
||||
<method name="InternalArray__set_Item" />
|
||||
<method name="InternalArray__IReadOnlyList_get_Item" />
|
||||
<method name="InternalArray__IReadOnlyCollection_get_Count" />
|
||||
</type>
|
||||
<type fullname="System.ArrayTypeMismatchException" />
|
||||
<type fullname="System.Attribute" />
|
||||
<type fullname="System.BadImageFormatException" />
|
||||
<type fullname="System.Boolean" preserve="fields" />
|
||||
<type fullname="System.Byte" preserve="fields" />
|
||||
<type fullname="System.CannotUnloadAppDomainException" />
|
||||
<type fullname="System.Char" preserve="fields" />
|
||||
<type fullname="System.Console" preserve="fields" />
|
||||
<type fullname="System.ConsoleDriver" preserve="fields" />
|
||||
<type fullname="System.ContextBoundObject" preserve="fields" />
|
||||
<!-- <type fullname="System.Convert" /> -->
|
||||
<type fullname="System.CurrentSystemTimeZone" />
|
||||
<type fullname="System.DateTime" preserve="fields" />
|
||||
<type fullname="System.DBNull" preserve="fields" />
|
||||
<type fullname="System.Decimal" preserve="fields" />
|
||||
<type fullname="System.Delegate" preserve="fields" />
|
||||
<type fullname="System.Diagnostics.StackFrame" />
|
||||
<type fullname="System.Diagnostics.StackTrace" />
|
||||
<type fullname="System.DivideByZeroException" />
|
||||
<!-- debugger-agent.c: create_event_list -->
|
||||
<type fullname="System.Diagnostics.DebuggerNonUserCodeAttribute"/>
|
||||
<type fullname="System.Diagnostics.DebuggerHiddenAttribute"/>
|
||||
<type fullname="System.Diagnostics.DebuggerStepThroughAttribute"/>
|
||||
|
||||
<type fullname="System.DllNotFoundException" />
|
||||
<type fullname="System.Double" preserve="fields" />
|
||||
<type fullname="System.Enum" preserve="fields">
|
||||
<method name="GetValues" />
|
||||
</type>
|
||||
<type fullname="System.EntryPointNotFoundException" />
|
||||
<type fullname="System.Environment">
|
||||
<field name="mono_corlib_version" />
|
||||
<method name="get_StackTrace" />
|
||||
</type>
|
||||
<type fullname="System.Exception" />
|
||||
<type fullname="System.ExecutionEngineException" />
|
||||
<type fullname="System.FieldAccessException" />
|
||||
<type fullname="System.FormatException" />
|
||||
<type fullname="System.GC" />
|
||||
<type fullname="System.IndexOutOfRangeException" />
|
||||
<type fullname="System.Int16" preserve="fields" />
|
||||
<type fullname="System.Int32" preserve="fields" />
|
||||
<type fullname="System.Int64" preserve="fields" />
|
||||
<type fullname="System.IntPtr" preserve="fields" />
|
||||
<type fullname="System.InvalidCastException" />
|
||||
<type fullname="System.InvalidOperationException" />
|
||||
<type fullname="System.InvalidProgramException" />
|
||||
<type fullname="System.MarshalByRefObject" preserve="fields" feature="remoting" />
|
||||
<type fullname="System.MethodAccessException" />
|
||||
<type fullname="System.Missing" preserve="fields" />
|
||||
<type fullname="System.MissingFieldException" />
|
||||
<type fullname="System.MissingMethodException" />
|
||||
<type fullname="System.MonoAsyncCall" preserve="fields" />
|
||||
<type fullname="System.MonoCustomAttrs" preserve="fields" />
|
||||
<type fullname="System.MonoCustomAttrs/AttributeInfo" preserve="fields" />
|
||||
<type fullname="System.MonoCQItem" preserve="all" />
|
||||
<type fullname="System.MonoEnumInfo" preserve="fields" />
|
||||
<type fullname="System.MonoListItem" preserve="fields" />
|
||||
<type fullname="System.MonoType" preserve="fields" />
|
||||
<type fullname="System.MulticastDelegate" preserve="fields" />
|
||||
<type fullname="System.NotImplementedException" />
|
||||
<type fullname="System.NotSupportedException" />
|
||||
<type fullname="System.NullReferenceException" />
|
||||
<type fullname="System.Nullable`1" preserve="fields">
|
||||
<method name="Box" />
|
||||
<method name="Unbox" />
|
||||
</type>
|
||||
<type fullname="System.Object" />
|
||||
<type fullname="System.OutOfMemoryException" />
|
||||
<type fullname="System.RuntimeArgumentHandle" preserve="fields" />
|
||||
<type fullname="System.RuntimeFieldHandle" preserve="fields" />
|
||||
<type fullname="System.RuntimeMethodHandle" preserve="fields" />
|
||||
<type fullname="System.RuntimeTypeHandle" preserve="fields" />
|
||||
<type fullname="System.SByte" preserve="fields" />
|
||||
<type fullname="System.Single" preserve="fields" />
|
||||
<type fullname="System.StackOverflowException" />
|
||||
<type fullname="System.STAThreadAttribute" />
|
||||
<type fullname="System.String" preserve="fields">
|
||||
<method name="CreateString" />
|
||||
<method name="InternalAllocateStr" />
|
||||
<method name="FastAllocateString" />
|
||||
<method name="memcpy" />
|
||||
<method name="memset" />
|
||||
<method name="bzero" />
|
||||
<method name="bzero_aligned_1" />
|
||||
<method name="bzero_aligned_2" />
|
||||
<method name="bzero_aligned_4" />
|
||||
<method name="bzero_aligned_8" />
|
||||
<method name="memcpy_aligned_1" />
|
||||
<method name="memcpy_aligned_2" />
|
||||
<method name="memcpy_aligned_4" />
|
||||
<method name="memcpy_aligned_8" />
|
||||
</type>
|
||||
<type fullname="System.SystemException" />
|
||||
<type fullname="System.Type" preserve="fields">
|
||||
<method name="GetTypeFromHandle" />
|
||||
</type>
|
||||
<type fullname="System.TypeInitializationException" />
|
||||
<type fullname="System.TypeLoadException" />
|
||||
<type fullname="System.TypedReference" preserve="fields" />
|
||||
<type fullname="System.UInt16" preserve="fields" />
|
||||
<type fullname="System.UInt32" preserve="fields" />
|
||||
<type fullname="System.UInt64" preserve="fields" />
|
||||
<type fullname="System.UIntPtr" preserve="fields" />
|
||||
<type fullname="System.UnhandledExceptionEventArgs" />
|
||||
<type fullname="System.ValueType" preserve="fields" />
|
||||
<type fullname="System.Variant" preserve="fields" feature="com">
|
||||
<method name="Clear" />
|
||||
</type>
|
||||
<type fullname="System.Version">
|
||||
<method signature="System.Void .ctor(System.Int32,System.Int32,System.Int32,System.Int32)" />
|
||||
</type>
|
||||
<type fullname="System.Void" />
|
||||
<type fullname="System.__ComObject" feature="com" />
|
||||
|
||||
<type fullname="System.Collections.Generic.ICollection`1" />
|
||||
<type fullname="System.Collections.Generic.IEnumerable`1" />
|
||||
<type fullname="System.Collections.Generic.IList`1" />
|
||||
<type fullname="System.Collections.Generic.GenericEqualityComparer`1">
|
||||
<method name=".ctor" />
|
||||
</type>
|
||||
<type fullname="System.Collections.Generic.GenericComparer`1">
|
||||
<method name=".ctor" />
|
||||
</type>
|
||||
|
||||
<type fullname="System.Globalization.DateTimeFormatInfo" preserve="fields" />
|
||||
<type fullname="System.Globalization.CompareInfo" preserve="fields" />
|
||||
<type fullname="System.Globalization.CultureInfo" preserve="fields">
|
||||
<method name="CreateCulture" />
|
||||
</type>
|
||||
<type fullname="System.Globalization.NumberFormatInfo" preserve="fields" />
|
||||
<type fullname="System.Globalization.RegionInfo" preserve="fields" />
|
||||
<type fullname="System.Globalization.SortKey" preserve="fields" />
|
||||
|
||||
<!--
|
||||
<type fullname="System.IO.FileMode" />
|
||||
<type fullname="System.IO.FileNotFoundException" />
|
||||
<type fullname="System.IO.FileLoadException" />
|
||||
<type fullname="System.IO.FileStreamAsyncResult" />
|
||||
<type fullname="System.IO.IOException" />
|
||||
<type fullname="System.IO.MonoIO" preserve="fields" />
|
||||
<type fullname="System.IO.Path" />
|
||||
<type fullname="System.IO.StreamReader" />
|
||||
-->
|
||||
|
||||
<type fullname="System.Reflection.MonoAssembly">
|
||||
<method name=".ctor" />
|
||||
</type>
|
||||
<type fullname="System.Reflection.MonoModule">
|
||||
<method name=".ctor" />
|
||||
</type>
|
||||
|
||||
<type fullname="System.Reflection.Assembly" preserve="fields">
|
||||
<method name="MonoDebugger_GetMethodToken" feature="sre" />
|
||||
<method name="GetNamespaces" feature="sre" />
|
||||
</type>
|
||||
<type fullname="System.Reflection.AssemblyName" preserve="fields" />
|
||||
<type fullname="System.Reflection.ConstructorInfo" preserve="fields" />
|
||||
<type fullname="System.Reflection.CustomAttributeData" preserve="fields">
|
||||
<method signature="System.Void .ctor(System.Reflection.ConstructorInfo,System.Reflection.Assembly,System.IntPtr,System.UInt32)" />
|
||||
</type>
|
||||
<type fullname="System.Reflection.CustomAttributeNamedArgument" preserve="fields" />
|
||||
<type fullname="System.Reflection.CustomAttributeTypedArgument" preserve="fields" />
|
||||
<type fullname="System.Reflection.EventInfo" preserve="fields">
|
||||
<method name="AddEventFrame" />
|
||||
<method name="StaticAddEventAdapterFrame" />
|
||||
</type>
|
||||
<type fullname="System.Reflection.ExceptionHandlingClause" preserve="fields" />
|
||||
<type fullname="System.Reflection.FieldInfo" preserve="fields" />
|
||||
<type fullname="System.Reflection.LocalVariableInfo" preserve="fields" />
|
||||
<type fullname="System.Reflection.ManifestResourceInfo" preserve="fields" />
|
||||
<type fullname="System.Reflection.MethodBase" preserve="fields" />
|
||||
<type fullname="System.Reflection.MethodBody" preserve="fields" />
|
||||
<type fullname="System.Reflection.MethodInfo" preserve="fields" />
|
||||
<type fullname="System.Reflection.Module" preserve="fields">
|
||||
<method name="Mono_GetGuid" feature="sre" />
|
||||
</type>
|
||||
<type fullname="System.Reflection.MonoArrayMethod" preserve="fields" />
|
||||
<type fullname="System.Reflection.MonoCMethod" preserve="fields" />
|
||||
<type fullname="System.Reflection.MonoEvent" preserve="fields" />
|
||||
<type fullname="System.Reflection.MonoEventInfo" preserve="fields" />
|
||||
<type fullname="System.Reflection.MonoField" preserve="fields" />
|
||||
<type fullname="System.Reflection.MonoGenericClass" preserve="fields" />
|
||||
<type fullname="System.Reflection.MonoMethod" preserve="fields" />
|
||||
<type fullname="System.Reflection.MonoMethodInfo" preserve="fields" />
|
||||
<type fullname="System.Reflection.MonoPropertyInfo" preserve="fields" />
|
||||
<type fullname="System.Reflection.MonoProperty" preserve="fields">
|
||||
<method name="GetterAdapterFrame" />
|
||||
<method name="StaticGetterAdapterFrame" />
|
||||
</type>
|
||||
<type fullname="System.Reflection.ParameterInfo" preserve="fields" />
|
||||
<!-- reflection.c: ves_icall_get_parameter_info -->
|
||||
<type fullname="System.Reflection.MonoParameterInfo" preserve="fields" />
|
||||
|
||||
<type fullname="System.Reflection.PropertyInfo" preserve="fields" />
|
||||
<type fullname="System.Reflection.ReflectionTypeLoadException" />
|
||||
<type fullname="System.Reflection.TargetException" />
|
||||
<type fullname="System.Reflection.TargetParameterCountException" />
|
||||
|
||||
<type fullname="System.Reflection.Emit.AssemblyBuilder" preserve="fields">
|
||||
<method name="AddPermissionRequests" />
|
||||
<method name="AddModule" />
|
||||
<method name="DefineIconResource" />
|
||||
<method name="AddTypeForwarder" />
|
||||
<method name="EmbedResourceFile" />
|
||||
</type>
|
||||
<type fullname="System.Reflection.Emit.ConstructorBuilder" preserve="fields" />
|
||||
<type fullname="System.Reflection.Emit.CustomAttributeBuilder" preserve="fields" />
|
||||
<type fullname="System.Reflection.Emit.DynamicMethod" preserve="fields" />
|
||||
<type fullname="System.Reflection.Emit.EnumBuilder" preserve="fields" />
|
||||
<type fullname="System.Reflection.Emit.EventBuilder" preserve="fields" />
|
||||
<type fullname="System.Reflection.Emit.FieldBuilder" preserve="fields" />
|
||||
<type fullname="System.Reflection.Emit.GenericTypeParameterBuilder" preserve="fields" />
|
||||
<type fullname="System.Reflection.Emit.ILExceptionBlock" preserve="fields" />
|
||||
<type fullname="System.Reflection.Emit.ILExceptionInfo" preserve="fields" />
|
||||
<type fullname="System.Reflection.Emit.ILGenerator" preserve="fields">
|
||||
<method name="Mono_GetCurrentOffset" />
|
||||
</type>
|
||||
<type fullname="System.Reflection.Emit.LocalBuilder" preserve="fields">
|
||||
<method name="Mono_GetLocalIndex" />
|
||||
</type>
|
||||
<type fullname="System.Reflection.Emit.MethodBuilder" preserve="fields" />
|
||||
<type fullname="System.Reflection.Emit.ModuleBuilder" preserve="fields">
|
||||
<method name="Mono_GetGuid" />
|
||||
<method name="RuntimeResolve" />
|
||||
</type>
|
||||
<type fullname="System.Reflection.Emit.MonoResource" preserve="fields" />
|
||||
<type fullname="System.Reflection.Emit.MonoWin32Resource" preserve="fields" />
|
||||
<type fullname="System.Reflection.Emit.ParameterBuilder" preserve="fields" />
|
||||
<type fullname="System.Reflection.Emit.PropertyBuilder" preserve="fields" />
|
||||
<type fullname="System.Reflection.Emit.SignatureHelper" preserve="fields" />
|
||||
<type fullname="System.Reflection.Emit.TypeBuilder" preserve="fields">
|
||||
<method name="SetCharSet" />
|
||||
</type>
|
||||
<type fullname="System.Reflection.Emit.UnmanagedMarshal" preserve="fields">
|
||||
<method name="DefineCustom" />
|
||||
<method name="DefineLPArrayInternal" />
|
||||
</type>
|
||||
|
||||
<!--
|
||||
<type fullname="System.Runtime.CompilerServices.CallConvCdecl" />
|
||||
<type fullname="System.Runtime.CompilerServices.CallConvStdcall" />
|
||||
<type fullname="System.Runtime.CompilerServices.CallConvFastcall" />
|
||||
<type fullname="System.Runtime.CompilerServices.CallConvThiscall" />
|
||||
-->
|
||||
|
||||
<type fullname="System.Runtime.CompilerServices.InternalsVisibleToAttribute" />
|
||||
<type fullname="System.Runtime.CompilerServices.RuntimeWrappedException">
|
||||
<method signature="System.Void .ctor(System.Object)" />
|
||||
</type>
|
||||
<!-- <type fullname="System.Runtime.CompilerServices.RequiredAttributeAttribute" />
|
||||
<type fullname="System.Runtime.CompilerServices.RuntimeHelpers" />
|
||||
<type fullname="System.Runtime.CompilerServices.TypeForwardedToAttribute" /> -->
|
||||
|
||||
<!-- <type fullname="System.Runtime.InteropServices.DllImportAttribute" /> -->
|
||||
<type fullname="System.Runtime.InteropServices.GCHandle" />
|
||||
<!-- <type fullname="System.Runtime.InteropServices.GuidAttribute" /> -->
|
||||
<type fullname="System.Runtime.InteropServices.HandleRef" />
|
||||
<type fullname="System.Runtime.InteropServices.ICustomMarshaler" />
|
||||
<!--<type fullname="System.Runtime.InteropServices.InterfaceTypeAttribute" /> -->
|
||||
<type fullname="System.Runtime.InteropServices.Marshal" />
|
||||
<!-- <type fullname="System.Runtime.InteropServices.MarshalDirectiveException" />
|
||||
<type fullname="System.Runtime.InteropServices.SafeHandle" />
|
||||
<type fullname="System.Runtime.InteropServices.StructLayoutAttribute" />
|
||||
<type fullname="System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute" />-->
|
||||
|
||||
<!-- <type fullname="System.Runtime.Remoting.Activation.ActivationServices" /> -->
|
||||
<type fullname="System.Runtime.Remoting.Contexts.Context" preserve="fields">
|
||||
<method name="get_NeedsContextSink" />
|
||||
</type>
|
||||
<type fullname="System.Runtime.Remoting.Channels.CrossAppDomainSink" />
|
||||
<type fullname="System.Runtime.Remoting.IRemotingTypeInfo">
|
||||
<method name="CanCastTo" />
|
||||
</type>
|
||||
<type fullname="System.Runtime.Remoting.Messaging.AsyncResult" preserve="fields" />
|
||||
<type fullname="System.Runtime.Remoting.Messaging.CallContext">
|
||||
<method name="SetCurrentCallContext" />
|
||||
</type>
|
||||
<type fullname="System.Runtime.Remoting.Messaging.MonoMethodMessage" preserve="fields">
|
||||
<method name="InitMessage" />
|
||||
</type>
|
||||
<type fullname="System.Runtime.Remoting.Proxies.RealProxy" preserve="fields">
|
||||
<method name="PrivateInvoke" />
|
||||
<method name="GetAppDomainTarget" />
|
||||
</type>
|
||||
<type fullname="System.Runtime.Remoting.Proxies.TransparentProxy" preserve="fields">
|
||||
<method name="LoadRemoteFieldNew" />
|
||||
<method name="StoreRemoteField" />
|
||||
</type>
|
||||
<type fullname="System.Runtime.Remoting.RemotingServices">
|
||||
<method name="SerializeCallData" />
|
||||
<method name="DeserializeCallData" />
|
||||
<method name="SerializeExceptionData" />
|
||||
</type>
|
||||
|
||||
<!--
|
||||
<type fullname="System.Runtime.Serialization.ISerializable" />
|
||||
<type fullname="System.Runtime.Serialization.SerializationException" />
|
||||
<type fullname="System.Runtime.Serialization.SerializationInfo" />
|
||||
<type fullname="System.Runtime.Serialization.StreamingContext" />
|
||||
-->
|
||||
|
||||
<type fullname="System.Threading.ExecutionContext" />
|
||||
<type fullname="System.Threading.Interlocked">
|
||||
<method name="CompareExchange" />
|
||||
<method name="Exchange" />
|
||||
</type>
|
||||
<type fullname="System.Threading.Monitor">
|
||||
<method name="Enter" />
|
||||
<method name="Exit" />
|
||||
<method name="enter_with_atomic_var" />
|
||||
</type>
|
||||
|
||||
<!--
|
||||
<type fullname="System.Threading.Mutex" />
|
||||
<type fullname="System.Threading.NativeEventCalls" />
|
||||
<type fullname="System.Threading.Semaphore" />
|
||||
-->
|
||||
|
||||
<type fullname="System.Threading.SynchronisationLockException" />
|
||||
<type fullname="System.Threading.Thread" preserve="fields">
|
||||
<method name="get_CurrentContext" />
|
||||
</type>
|
||||
<type fullname="System.Threading.InternalThread" preserve="fields" />
|
||||
<type fullname="System.Threading.ThreadAbortException" />
|
||||
<type fullname="System.Threading.ThreadInterruptedException" />
|
||||
<!--<type fullname="System.Threading.ThreadPool" />-->
|
||||
<type fullname="System.Threading.ThreadState" preserve="fields" />
|
||||
<type fullname="System.Threading.ThreadStateException" />
|
||||
<type fullname="System.Threading.WaitHandle" preserve="fields">
|
||||
<method name="set_Handle" />
|
||||
</type>
|
||||
<type fullname="System.Threading._ThreadPoolWaitCallback">
|
||||
<method name="PerformWaitCallback"/>
|
||||
</type>
|
||||
|
||||
<type fullname="System.Text.StringBuilder" preserve="fields" />
|
||||
|
||||
<type fullname="System.Security.AllowPartiallyTrustedCallersAttribute" />
|
||||
<type fullname="System.Security.Policy.Evidence" />
|
||||
<!--
|
||||
<type fullname="System.Security.Principal.WindowsIdentity" />
|
||||
<type fullname="System.Security.Principal.WindowsImpersonationContext" />
|
||||
<type fullname="System.Security.Principal.WindowsPrincipal" />
|
||||
<type fullname="System.Security.RuntimeSecurityFrame" />
|
||||
<type fullname="System.Security.SecurityCriticalAttribute" />
|
||||
<type fullname="System.Security.SecurityException" />
|
||||
-->
|
||||
<type fullname="System.Security.SecurityManager" />
|
||||
<!--
|
||||
<type fullname="System.Security.SuppressUnmanagedCodeSecurityAttribute" />
|
||||
<type fullname="System.Security.VerificationException" />
|
||||
-->
|
||||
|
||||
<namespace fullname="System.Security.Cryptography" feature="crypto" />
|
||||
|
||||
<type fullname="Mono.Interop.ComInteropProxy" feature="com" />
|
||||
<type fullname="Mono.Interop.IDispatch" feature="com" />
|
||||
<type fullname="Mono.Interop.IUnknown" feature="com"/>
|
||||
|
||||
<!-- by convention (and see #34671) -->
|
||||
<type fullname="Mono.Runtime" />
|
||||
|
||||
<type fullname="Mono.RuntimeStructs/HandleStackMark" />
|
||||
<type fullname="Mono.RuntimeStructs/MonoError" />
|
||||
</assembly>
|
||||
</linker>
|
||||
@@ -1,4 +1,4 @@
|
||||
//
|
||||
//
|
||||
// CleanStep.cs
|
||||
//
|
||||
// Author:
|
||||
@@ -26,8 +26,6 @@
|
||||
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
|
||||
using System.Collections;
|
||||
|
||||
using Mono.Cecil;
|
||||
|
||||
namespace Mono.Linker.Steps {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//
|
||||
//
|
||||
// LoadReferencesStep.cs
|
||||
//
|
||||
// Author:
|
||||
@@ -27,15 +27,15 @@
|
||||
//
|
||||
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using Mono.Cecil;
|
||||
|
||||
namespace Mono.Linker.Steps {
|
||||
|
||||
public class LoadReferencesStep : BaseStep {
|
||||
|
||||
IDictionary _references = new Hashtable ();
|
||||
|
||||
readonly Dictionary<AssemblyNameDefinition, AssemblyDefinition> _references = new Dictionary<AssemblyNameDefinition, AssemblyDefinition> ();
|
||||
|
||||
protected override void ProcessAssembly (AssemblyDefinition assembly)
|
||||
{
|
||||
@@ -44,7 +44,7 @@ namespace Mono.Linker.Steps {
|
||||
|
||||
void ProcessReferences (AssemblyDefinition assembly)
|
||||
{
|
||||
if (_references.Contains (assembly.Name))
|
||||
if (_references.ContainsKey (assembly.Name))
|
||||
return;
|
||||
|
||||
_references.Add (assembly.Name, assembly);
|
||||
|
||||
263
external/linker/linker/Mono.Linker.Steps/MarkStep.cs
vendored
263
external/linker/linker/Mono.Linker.Steps/MarkStep.cs
vendored
File diff suppressed because it is too large
Load Diff
@@ -27,15 +27,47 @@
|
||||
//
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
|
||||
using Mono.Cecil;
|
||||
using Mono.Cecil.Cil;
|
||||
using Mono.Cecil.PE;
|
||||
|
||||
namespace Mono.Linker.Steps {
|
||||
|
||||
public class OutputStep : BaseStep {
|
||||
|
||||
private static Dictionary<UInt16, TargetArchitecture> architectureMap;
|
||||
|
||||
private enum NativeOSOverride {
|
||||
Apple = 0x4644,
|
||||
FreeBSD = 0xadc4,
|
||||
Linux = 0x7b79,
|
||||
NetBSD = 0x1993,
|
||||
Default = 0
|
||||
}
|
||||
|
||||
static TargetArchitecture CalculateArchitecture (TargetArchitecture readyToRunArch)
|
||||
{
|
||||
if (architectureMap == null) {
|
||||
architectureMap = new Dictionary<UInt16, TargetArchitecture> ();
|
||||
foreach (var os in Enum.GetValues (typeof (NativeOSOverride))) {
|
||||
ushort osVal = (ushort) (NativeOSOverride) os;
|
||||
foreach (var arch in Enum.GetValues (typeof (TargetArchitecture))) {
|
||||
ushort archVal = (ushort) (TargetArchitecture)arch;
|
||||
architectureMap.Add ((ushort) (archVal ^ osVal), (TargetArchitecture) arch);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TargetArchitecture pureILArch;
|
||||
if (architectureMap.TryGetValue ((ushort) readyToRunArch, out pureILArch)) {
|
||||
return pureILArch;
|
||||
}
|
||||
throw new BadImageFormatException ("unrecognized module attributes");
|
||||
}
|
||||
|
||||
protected override void Process ()
|
||||
{
|
||||
CheckOutputDirectory ();
|
||||
@@ -55,6 +87,26 @@ namespace Mono.Linker.Steps {
|
||||
OutputAssembly (assembly);
|
||||
}
|
||||
|
||||
static bool IsReadyToRun (ModuleDefinition module)
|
||||
{
|
||||
return (module.Attributes & ModuleAttributes.ILOnly) == 0 &&
|
||||
(module.Attributes & (ModuleAttributes) 0x04) != 0;
|
||||
}
|
||||
|
||||
void WriteAssembly (AssemblyDefinition assembly, string directory)
|
||||
{
|
||||
foreach (var module in assembly.Modules) {
|
||||
// Write back pure IL even for R2R assemblies
|
||||
if (IsReadyToRun (module)) {
|
||||
module.Attributes |= ModuleAttributes.ILOnly;
|
||||
module.Attributes ^= (ModuleAttributes) (uint) 0x04;
|
||||
module.Architecture = CalculateArchitecture (module.Architecture);
|
||||
}
|
||||
}
|
||||
|
||||
assembly.Write (GetAssemblyFileName (assembly, directory), SaveSymbols (assembly));
|
||||
}
|
||||
|
||||
void OutputAssembly (AssemblyDefinition assembly)
|
||||
{
|
||||
string directory = Context.OutputDirectory;
|
||||
@@ -65,7 +117,7 @@ namespace Mono.Linker.Steps {
|
||||
case AssemblyAction.Save:
|
||||
case AssemblyAction.Link:
|
||||
Context.Annotations.AddDependency (assembly);
|
||||
assembly.Write (GetAssemblyFileName (assembly, directory), SaveSymbols (assembly));
|
||||
WriteAssembly (assembly, directory);
|
||||
break;
|
||||
case AssemblyAction.Copy:
|
||||
Context.Annotations.AddDependency (assembly);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//
|
||||
//
|
||||
// ResolveFromAssemblyStep.cs
|
||||
//
|
||||
// Author:
|
||||
@@ -26,13 +26,14 @@
|
||||
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
|
||||
using System;
|
||||
using System.Collections;
|
||||
using Mono.Cecil;
|
||||
using Mono.Collections.Generic;
|
||||
|
||||
namespace Mono.Linker.Steps {
|
||||
namespace Mono.Linker.Steps
|
||||
{
|
||||
|
||||
public class ResolveFromAssemblyStep : ResolveStep {
|
||||
public class ResolveFromAssemblyStep : ResolveStep
|
||||
{
|
||||
|
||||
AssemblyDefinition _assembly;
|
||||
string _file;
|
||||
@@ -70,7 +71,7 @@ namespace Mono.Linker.Steps {
|
||||
|
||||
switch (assembly.MainModule.Kind) {
|
||||
case ModuleKind.Dll:
|
||||
ProcessLibrary (Context, assembly, _rootVisibility);
|
||||
ProcessLibrary (assembly);
|
||||
break;
|
||||
default:
|
||||
ProcessExecutable (assembly);
|
||||
@@ -78,7 +79,7 @@ namespace Mono.Linker.Steps {
|
||||
}
|
||||
}
|
||||
|
||||
static void SetAction (LinkContext context, AssemblyDefinition assembly, AssemblyAction action)
|
||||
protected static void SetAction (LinkContext context, AssemblyDefinition assembly, AssemblyAction action)
|
||||
{
|
||||
TryReadSymbols (context, assembly);
|
||||
|
||||
@@ -90,6 +91,11 @@ namespace Mono.Linker.Steps {
|
||||
context.SafeReadSymbols (assembly);
|
||||
}
|
||||
|
||||
protected virtual void ProcessLibrary (AssemblyDefinition assembly)
|
||||
{
|
||||
ProcessLibrary (Context, assembly, _rootVisibility);
|
||||
}
|
||||
|
||||
public static void ProcessLibrary (LinkContext context, AssemblyDefinition assembly, RootVisibility rootVisibility = RootVisibility.Any)
|
||||
{
|
||||
var action = rootVisibility == RootVisibility.Any ? AssemblyAction.Copy : AssemblyAction.Link;
|
||||
@@ -114,8 +120,7 @@ namespace Mono.Linker.Steps {
|
||||
TypeDefinition resolvedExportedType = null;
|
||||
try {
|
||||
resolvedExportedType = exported.Resolve ();
|
||||
}
|
||||
catch (AssemblyResolutionException) {
|
||||
} catch (AssemblyResolutionException) {
|
||||
continue;
|
||||
}
|
||||
context.Resolve (resolvedExportedType.Scope);
|
||||
@@ -134,17 +139,17 @@ namespace Mono.Linker.Steps {
|
||||
{
|
||||
bool markType;
|
||||
switch (rootVisibility) {
|
||||
default:
|
||||
markType = true;
|
||||
break;
|
||||
default:
|
||||
markType = true;
|
||||
break;
|
||||
|
||||
case RootVisibility.PublicAndFamilyAndAssembly:
|
||||
markType = !type.IsNestedPrivate;
|
||||
break;
|
||||
case RootVisibility.PublicAndFamilyAndAssembly:
|
||||
markType = !type.IsNestedPrivate;
|
||||
break;
|
||||
|
||||
case RootVisibility.PublicAndFamily:
|
||||
markType = type.IsPublic || type.IsNestedPublic || type.IsNestedFamily || type.IsNestedFamilyOrAssembly;
|
||||
break;
|
||||
case RootVisibility.PublicAndFamily:
|
||||
markType = type.IsPublic || type.IsNestedPublic || type.IsNestedFamily || type.IsNestedFamilyOrAssembly;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!markType) {
|
||||
@@ -179,22 +184,22 @@ namespace Mono.Linker.Steps {
|
||||
Annotations.Pop ();
|
||||
}
|
||||
|
||||
static void MarkFields (LinkContext context, ICollection fields, RootVisibility rootVisibility)
|
||||
static void MarkFields (LinkContext context, Collection<FieldDefinition> fields, RootVisibility rootVisibility)
|
||||
{
|
||||
foreach (FieldDefinition field in fields) {
|
||||
bool markField;
|
||||
switch (rootVisibility) {
|
||||
default:
|
||||
markField = true;
|
||||
break;
|
||||
default:
|
||||
markField = true;
|
||||
break;
|
||||
|
||||
case RootVisibility.PublicAndFamily:
|
||||
markField = field.IsPublic || field.IsFamily || field.IsFamilyOrAssembly;
|
||||
break;
|
||||
case RootVisibility.PublicAndFamily:
|
||||
markField = field.IsPublic || field.IsFamily || field.IsFamilyOrAssembly;
|
||||
break;
|
||||
|
||||
case RootVisibility.PublicAndFamilyAndAssembly:
|
||||
markField = field.IsPublic || field.IsFamily || field.IsFamilyOrAssembly || field.IsAssembly || field.IsFamilyAndAssembly;
|
||||
break;
|
||||
case RootVisibility.PublicAndFamilyAndAssembly:
|
||||
markField = field.IsPublic || field.IsFamily || field.IsFamilyOrAssembly || field.IsAssembly || field.IsFamilyAndAssembly;
|
||||
break;
|
||||
}
|
||||
if (markField) {
|
||||
context.Annotations.Mark (field);
|
||||
@@ -202,7 +207,7 @@ namespace Mono.Linker.Steps {
|
||||
}
|
||||
}
|
||||
|
||||
static void MarkMethods (LinkContext context, ICollection methods, RootVisibility rootVisibility)
|
||||
static void MarkMethods (LinkContext context, Collection<MethodDefinition> methods, RootVisibility rootVisibility)
|
||||
{
|
||||
foreach (MethodDefinition method in methods)
|
||||
MarkMethod (context, method, MethodAction.ForceParse, rootVisibility);
|
||||
@@ -212,17 +217,17 @@ namespace Mono.Linker.Steps {
|
||||
{
|
||||
bool markMethod;
|
||||
switch (rootVisibility) {
|
||||
default:
|
||||
markMethod = true;
|
||||
break;
|
||||
default:
|
||||
markMethod = true;
|
||||
break;
|
||||
|
||||
case RootVisibility.PublicAndFamily:
|
||||
markMethod = method.IsPublic || method.IsFamily || method.IsFamilyOrAssembly;
|
||||
break;
|
||||
case RootVisibility.PublicAndFamily:
|
||||
markMethod = method.IsPublic || method.IsFamily || method.IsFamilyOrAssembly;
|
||||
break;
|
||||
|
||||
case RootVisibility.PublicAndFamilyAndAssembly:
|
||||
markMethod = method.IsPublic || method.IsFamily || method.IsFamilyOrAssembly || method.IsAssembly || method.IsFamilyAndAssembly;
|
||||
break;
|
||||
case RootVisibility.PublicAndFamilyAndAssembly:
|
||||
markMethod = method.IsPublic || method.IsFamily || method.IsFamilyOrAssembly || method.IsAssembly || method.IsFamilyAndAssembly;
|
||||
break;
|
||||
}
|
||||
|
||||
if (markMethod) {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//
|
||||
//
|
||||
// ResolveFromXApiStep.cs
|
||||
//
|
||||
// Author:
|
||||
@@ -28,13 +28,13 @@
|
||||
|
||||
using System.Xml.XPath;
|
||||
|
||||
using Mono.Linker;
|
||||
|
||||
using Mono.Cecil;
|
||||
|
||||
namespace Mono.Linker.Steps {
|
||||
namespace Mono.Linker.Steps
|
||||
{
|
||||
|
||||
public class ResolveFromXApiStep : ResolveStep, IXApiVisitor {
|
||||
public class ResolveFromXApiStep : ResolveStep, IXApiVisitor
|
||||
{
|
||||
|
||||
static readonly string _name = "name";
|
||||
static readonly string _ns = string.Empty;
|
||||
|
||||
@@ -83,8 +83,13 @@ namespace Mono.Linker.Steps {
|
||||
{
|
||||
while (iterator.MoveNext ()) {
|
||||
AssemblyDefinition assembly = GetAssembly (context, GetFullName (iterator.Current));
|
||||
ProcessTypes (assembly, iterator.Current.SelectChildren ("type", _ns));
|
||||
ProcessNamespaces (assembly, iterator.Current.SelectChildren ("namespace", _ns));
|
||||
if (GetTypePreserve (iterator.Current) == TypePreserve.All) {
|
||||
foreach (var type in assembly.MainModule.Types)
|
||||
MarkAndPreserveAll (type);
|
||||
} else {
|
||||
ProcessTypes (assembly, iterator.Current.SelectChildren ("type", _ns));
|
||||
ProcessNamespaces (assembly, iterator.Current.SelectChildren ("namespace", _ns));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -223,15 +228,8 @@ namespace Mono.Linker.Steps {
|
||||
}
|
||||
}
|
||||
|
||||
switch (preserve) {
|
||||
case TypePreserve.Nothing:
|
||||
if (!nav.HasChildren)
|
||||
Annotations.SetPreserve (type, TypePreserve.All);
|
||||
break;
|
||||
default:
|
||||
if (preserve != TypePreserve.Nothing)
|
||||
Annotations.SetPreserve (type, preserve);
|
||||
break;
|
||||
}
|
||||
|
||||
if (nav.HasChildren) {
|
||||
MarkSelectedFields (nav, type);
|
||||
@@ -261,7 +259,7 @@ namespace Mono.Linker.Steps {
|
||||
{
|
||||
string attribute = GetAttribute (nav, _preserve);
|
||||
if (attribute == null || attribute.Length == 0)
|
||||
return TypePreserve.Nothing;
|
||||
return nav.HasChildren ? TypePreserve.Nothing : TypePreserve.All;
|
||||
|
||||
try {
|
||||
return (TypePreserve) Enum.Parse (typeof (TypePreserve), attribute, true);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//
|
||||
//
|
||||
// ResolveStep.cs
|
||||
//
|
||||
// Author:
|
||||
@@ -26,17 +26,17 @@
|
||||
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
|
||||
namespace Mono.Linker.Steps {
|
||||
using System.Collections.Generic;
|
||||
|
||||
using System.Collections;
|
||||
namespace Mono.Linker.Steps {
|
||||
|
||||
public abstract class ResolveStep : BaseStep {
|
||||
|
||||
ArrayList _unResolved;
|
||||
readonly List<string> _unResolved;
|
||||
|
||||
protected ResolveStep ()
|
||||
{
|
||||
_unResolved = new ArrayList ();
|
||||
_unResolved = new List<string> ();
|
||||
}
|
||||
|
||||
public bool AllMarkerResolved
|
||||
@@ -46,7 +46,7 @@ namespace Mono.Linker.Steps {
|
||||
|
||||
public string [] GetUnresolvedMarkers ()
|
||||
{
|
||||
return _unResolved.ToArray (typeof (string)) as string [];
|
||||
return _unResolved.ToArray ();
|
||||
}
|
||||
|
||||
protected void AddUnresolveMarker (string signature)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//
|
||||
//
|
||||
// SweepStep.cs
|
||||
//
|
||||
// Author:
|
||||
@@ -27,7 +27,6 @@
|
||||
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Mono.Cecil;
|
||||
@@ -95,6 +94,8 @@ namespace Mono.Linker.Steps {
|
||||
|
||||
if (type.Name == "<Module>")
|
||||
types.Add (type);
|
||||
else
|
||||
ElementRemoved (type);
|
||||
}
|
||||
|
||||
assembly.MainModule.Types.Clear ();
|
||||
@@ -138,6 +139,7 @@ namespace Mono.Linker.Steps {
|
||||
if (!AreSameReference (r.Name, target.Name))
|
||||
continue;
|
||||
|
||||
ReferenceRemoved (assembly, references [i]);
|
||||
references.RemoveAt (i);
|
||||
// Removing the reference does not mean it will be saved back to disk!
|
||||
// That depends on the AssemblyAction set for the `assembly`
|
||||
@@ -176,6 +178,8 @@ namespace Mono.Linker.Steps {
|
||||
foreach (TypeReference tr in assembly.MainModule.GetTypeReferences ()) {
|
||||
if (hash.ContainsKey (tr))
|
||||
continue;
|
||||
if (tr.IsWindowsRuntimeProjection)
|
||||
continue;
|
||||
var td = tr.Resolve ();
|
||||
IMetadataScope scope = tr.Scope;
|
||||
// at this stage reference might include things that can't be resolved
|
||||
@@ -229,6 +233,7 @@ namespace Mono.Linker.Steps {
|
||||
if (Annotations.IsMarked (nested)) {
|
||||
SweepType (nested);
|
||||
} else {
|
||||
ElementRemoved (type.NestedTypes [i]);
|
||||
type.NestedTypes.RemoveAt (i--);
|
||||
}
|
||||
}
|
||||
@@ -286,11 +291,13 @@ namespace Mono.Linker.Steps {
|
||||
}
|
||||
}
|
||||
|
||||
protected void SweepCollection (IList list)
|
||||
protected void SweepCollection<T> (IList<T> list) where T : IMetadataTokenProvider
|
||||
{
|
||||
for (int i = 0; i < list.Count; i++)
|
||||
if (!Annotations.IsMarked ((IMetadataTokenProvider) list [i]))
|
||||
if (!Annotations.IsMarked (list [i])) {
|
||||
ElementRemoved (list [i]);
|
||||
list.RemoveAt (i--);
|
||||
}
|
||||
}
|
||||
|
||||
static bool AreSameReference (AssemblyNameReference a, AssemblyNameReference b)
|
||||
@@ -306,5 +313,13 @@ namespace Mono.Linker.Steps {
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
protected virtual void ElementRemoved (IMetadataTokenProvider element)
|
||||
{
|
||||
}
|
||||
|
||||
protected virtual void ReferenceRemoved (AssemblyDefinition assembly, AssemblyNameReference reference)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//
|
||||
//
|
||||
// TypeMapStep.cs
|
||||
//
|
||||
// Author:
|
||||
@@ -26,8 +26,6 @@
|
||||
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using Mono.Cecil;
|
||||
@@ -72,7 +70,7 @@ namespace Mono.Linker.Steps {
|
||||
if (@base == null)
|
||||
continue;
|
||||
|
||||
Annotations.AddPreservedMethod (type, @base);
|
||||
AnnotateMethods (method, @base);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -138,13 +136,13 @@ namespace Mono.Linker.Steps {
|
||||
|
||||
static MethodDefinition GetBaseMethodInTypeHierarchy (TypeDefinition type, MethodDefinition method)
|
||||
{
|
||||
TypeDefinition @base = GetBaseType (type);
|
||||
TypeReference @base = type.GetInflatedBaseType ();
|
||||
while (@base != null) {
|
||||
MethodDefinition base_method = TryMatchMethod (@base, method);
|
||||
if (base_method != null)
|
||||
return base_method;
|
||||
|
||||
@base = GetBaseType (@base);
|
||||
@base = @base.GetInflatedBaseType ();
|
||||
}
|
||||
|
||||
return null;
|
||||
@@ -155,16 +153,9 @@ namespace Mono.Linker.Steps {
|
||||
return GetBaseMethodsInInterfaceHierarchy (method.DeclaringType, method);
|
||||
}
|
||||
|
||||
static IEnumerable<MethodDefinition> GetBaseMethodsInInterfaceHierarchy (TypeDefinition type, MethodDefinition method)
|
||||
static IEnumerable<MethodDefinition> GetBaseMethodsInInterfaceHierarchy (TypeReference type, MethodDefinition method)
|
||||
{
|
||||
if (!type.HasInterfaces)
|
||||
yield break;
|
||||
|
||||
foreach (var interface_ref in type.Interfaces) {
|
||||
TypeDefinition @interface = interface_ref.InterfaceType.Resolve ();
|
||||
if (@interface == null)
|
||||
continue;
|
||||
|
||||
foreach (TypeReference @interface in type.GetInflatedInterfaces ()) {
|
||||
MethodDefinition base_method = TryMatchMethod (@interface, method);
|
||||
if (base_method != null)
|
||||
yield return base_method;
|
||||
@@ -174,25 +165,21 @@ namespace Mono.Linker.Steps {
|
||||
}
|
||||
}
|
||||
|
||||
static MethodDefinition TryMatchMethod (TypeDefinition type, MethodDefinition method)
|
||||
static MethodDefinition TryMatchMethod (TypeReference type, MethodDefinition method)
|
||||
{
|
||||
if (!type.HasMethods)
|
||||
return null;
|
||||
|
||||
Dictionary<string,string> gp = null;
|
||||
foreach (MethodDefinition candidate in type.Methods) {
|
||||
if (MethodMatch (candidate, method, ref gp))
|
||||
return candidate;
|
||||
if (gp != null)
|
||||
gp.Clear ();
|
||||
foreach (var candidate in type.GetMethods ()) {
|
||||
if (MethodMatch (candidate, method))
|
||||
return candidate.Resolve ();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
static bool MethodMatch (MethodDefinition candidate, MethodDefinition method, ref Dictionary<string,string> genericParameters)
|
||||
static bool MethodMatch (MethodReference candidate, MethodDefinition method)
|
||||
{
|
||||
if (!candidate.IsVirtual)
|
||||
var candidateDef = candidate.Resolve ();
|
||||
|
||||
if (!candidateDef.IsVirtual)
|
||||
return false;
|
||||
|
||||
if (candidate.HasParameters != method.HasParameters)
|
||||
@@ -206,7 +193,7 @@ namespace Mono.Linker.Steps {
|
||||
|
||||
// we need to track what the generic parameter represent - as we cannot allow it to
|
||||
// differ between the return type or any parameter
|
||||
if (!TypeMatch (candidate.ReturnType, method.ReturnType, ref genericParameters))
|
||||
if (!TypeMatch (candidate.GetReturnType (), method.GetReturnType ()))
|
||||
return false;
|
||||
|
||||
if (!candidate.HasParameters)
|
||||
@@ -217,38 +204,41 @@ namespace Mono.Linker.Steps {
|
||||
if (cp.Count != mp.Count)
|
||||
return false;
|
||||
|
||||
if (candidate.GenericParameters.Count != method.GenericParameters.Count)
|
||||
return false;
|
||||
|
||||
for (int i = 0; i < cp.Count; i++) {
|
||||
if (!TypeMatch (cp [i].ParameterType, mp [i].ParameterType, ref genericParameters))
|
||||
if (!TypeMatch (candidate.GetParameterType (i), method.GetParameterType (i)))
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool TypeMatch (IModifierType a, IModifierType b, ref Dictionary<string,string> gp)
|
||||
static bool TypeMatch (IModifierType a, IModifierType b)
|
||||
{
|
||||
if (!TypeMatch (a.ModifierType, b.ModifierType, ref gp))
|
||||
if (!TypeMatch (a.ModifierType, b.ModifierType))
|
||||
return false;
|
||||
|
||||
return TypeMatch (a.ElementType, b.ElementType, ref gp);
|
||||
return TypeMatch (a.ElementType, b.ElementType);
|
||||
}
|
||||
|
||||
static bool TypeMatch (TypeSpecification a, TypeSpecification b, ref Dictionary<string,string> gp)
|
||||
static bool TypeMatch (TypeSpecification a, TypeSpecification b)
|
||||
{
|
||||
var gita = a as GenericInstanceType;
|
||||
if (gita != null)
|
||||
return TypeMatch (gita, (GenericInstanceType) b, ref gp);
|
||||
return TypeMatch (gita, (GenericInstanceType) b);
|
||||
|
||||
var mta = a as IModifierType;
|
||||
if (mta != null)
|
||||
return TypeMatch (mta, (IModifierType) b, ref gp);
|
||||
return TypeMatch (mta, (IModifierType) b);
|
||||
|
||||
return TypeMatch (a.ElementType, b.ElementType, ref gp);
|
||||
return TypeMatch (a.ElementType, b.ElementType);
|
||||
}
|
||||
|
||||
static bool TypeMatch (GenericInstanceType a, GenericInstanceType b, ref Dictionary<string,string> gp)
|
||||
static bool TypeMatch (GenericInstanceType a, GenericInstanceType b)
|
||||
{
|
||||
if (!TypeMatch (a.ElementType, b.ElementType, ref gp))
|
||||
if (!TypeMatch (a.ElementType, b.ElementType))
|
||||
return false;
|
||||
|
||||
if (a.HasGenericArguments != b.HasGenericArguments)
|
||||
@@ -263,45 +253,37 @@ namespace Mono.Linker.Steps {
|
||||
return false;
|
||||
|
||||
for (int i = 0; i < gaa.Count; i++) {
|
||||
if (!TypeMatch (gaa [i], gab [i], ref gp))
|
||||
if (!TypeMatch (gaa [i], gab [i]))
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool TypeMatch (TypeReference a, TypeReference b, ref Dictionary<string,string> gp)
|
||||
static bool TypeMatch (GenericParameter a, GenericParameter b)
|
||||
{
|
||||
var gpa = a as GenericParameter;
|
||||
if (gpa != null) {
|
||||
if (gp == null)
|
||||
gp = new Dictionary<string, string> ();
|
||||
string match;
|
||||
if (!gp.TryGetValue (gpa.FullName, out match)) {
|
||||
// first use, we assume it will always be used this way
|
||||
gp.Add (gpa.FullName, b.ToString ());
|
||||
return true;
|
||||
}
|
||||
// re-use, it should match the previous usage
|
||||
return match == b.ToString ();
|
||||
}
|
||||
if (a.Position != b.Position)
|
||||
return false;
|
||||
|
||||
if (a.Type != b.Type)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool TypeMatch (TypeReference a, TypeReference b)
|
||||
{
|
||||
if (a is TypeSpecification || b is TypeSpecification) {
|
||||
if (a.GetType () != b.GetType ())
|
||||
return false;
|
||||
|
||||
return TypeMatch ((TypeSpecification) a, (TypeSpecification) b, ref gp);
|
||||
return TypeMatch ((TypeSpecification) a, (TypeSpecification) b);
|
||||
}
|
||||
|
||||
if (a is GenericParameter && b is GenericParameter)
|
||||
return TypeMatch ((GenericParameter)a, (GenericParameter)b);
|
||||
|
||||
return a.FullName == b.FullName;
|
||||
}
|
||||
|
||||
static TypeDefinition GetBaseType (TypeDefinition type)
|
||||
{
|
||||
if (type == null || type.BaseType == null)
|
||||
return null;
|
||||
|
||||
return type.BaseType.Resolve ();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
33
external/linker/linker/Mono.Linker.csproj
vendored
33
external/linker/linker/Mono.Linker.csproj
vendored
@@ -12,6 +12,7 @@
|
||||
<PropertyGroup>
|
||||
<NetCoreBuild Condition=" $(Configuration.StartsWith('netcore')) Or '$(NuGetRestoreTargets)' != '' ">true</NetCoreBuild>
|
||||
<NetCoreBuild Condition=" '$(NetCoreBuild)' == '' ">false</NetCoreBuild>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<Import Project="NetCore.props" Condition=" $(NetCoreBuild) " />
|
||||
<PropertyGroup>
|
||||
@@ -25,7 +26,7 @@
|
||||
<RootNamespace>Mono.Linker</RootNamespace>
|
||||
<AssemblyName Condition=" ! $(NetCoreBuild) ">monolinker</AssemblyName>
|
||||
<AssemblyName Condition=" $(NetCoreBuild) ">illink</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>True</DebugSymbols>
|
||||
@@ -52,7 +53,7 @@
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
<ItemGroup Condition=" ! $(Configuration.StartsWith('netcore')) ">
|
||||
<ItemGroup Condition=" ! $(NetCoreBuild) ">
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml" />
|
||||
@@ -84,35 +85,15 @@
|
||||
<Compile Include="Mono.Linker\LoadException.cs" />
|
||||
<Compile Include="Mono.Linker\MarkException.cs" />
|
||||
<Compile Include="Mono.Linker\MethodAction.cs" />
|
||||
<Compile Include="Mono.Linker\MethodReferenceExtensions.cs" />
|
||||
<Compile Include="Mono.Linker\Pipeline.cs" />
|
||||
<Compile Include="Mono.Linker\TypePreserve.cs" />
|
||||
<Compile Include="Mono.Linker\TypeReferenceExtensions.cs" />
|
||||
<Compile Include="Mono.Linker\XApiReader.cs" />
|
||||
<Compile Include="Mono.Linker.Steps\TypeMapStep.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" '$(DoNotEmbedDescriptors)' == '' AND ! $(NetCoreBuild) ">
|
||||
<EmbeddedResource Include="Descriptors\mscorlib.xml">
|
||||
<LogicalName>mscorlib.xml</LogicalName>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Descriptors\System.Web.xml">
|
||||
<LogicalName>System.web.xml</LogicalName>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Descriptors\System.xml">
|
||||
<LogicalName>System.xml</LogicalName>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Descriptors\Mono.Posix.xml">
|
||||
<LogicalName>Mono.Posix.xml</LogicalName>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Descriptors\System.Drawing.xml">
|
||||
<LogicalName>System.Drawing.xml</LogicalName>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Descriptors\System.Core.xml">
|
||||
<LogicalName>System.Core.xml</LogicalName>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="Makefile" />
|
||||
<None Include="app.config" />
|
||||
<None Include="README" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
@@ -122,8 +103,6 @@
|
||||
<Project>{D68133BD-1E63-496E-9EDE-4FBDBF77B486}</Project>
|
||||
<Name>Mono.Cecil</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition=" $(NetCoreBuild) ">
|
||||
<ProjectReference Include="..\cecil\symbols\pdb\Mono.Cecil.Pdb.csproj">
|
||||
<SetConfiguration Condition=" '$(Configuration)' == 'netcore_Debug' ">Configuration=netstandard_Debug</SetConfiguration>
|
||||
<SetConfiguration Condition=" '$(Configuration)' == 'netcore_Release' ">Configuration=netstandard_Release</SetConfiguration>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//
|
||||
//
|
||||
// Annotations.cs
|
||||
//
|
||||
// Author:
|
||||
@@ -27,7 +27,6 @@
|
||||
//
|
||||
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.IO.Compression;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
//
|
||||
//
|
||||
// AssemblyResolver.cs
|
||||
//
|
||||
// Author:
|
||||
@@ -27,7 +27,6 @@
|
||||
//
|
||||
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using Mono.Cecil;
|
||||
@@ -40,9 +39,9 @@ namespace Mono.Linker {
|
||||
public class AssemblyResolver : BaseAssemblyResolver {
|
||||
#endif
|
||||
|
||||
IDictionary _assemblies;
|
||||
readonly Dictionary<string, AssemblyDefinition> _assemblies;
|
||||
|
||||
public IDictionary AssemblyCache {
|
||||
public IDictionary<string, AssemblyDefinition> AssemblyCache {
|
||||
get { return _assemblies; }
|
||||
}
|
||||
|
||||
@@ -51,15 +50,15 @@ namespace Mono.Linker {
|
||||
{
|
||||
}
|
||||
|
||||
public AssemblyResolver (IDictionary assembly_cache)
|
||||
public AssemblyResolver (Dictionary<string, AssemblyDefinition> assembly_cache)
|
||||
{
|
||||
_assemblies = assembly_cache;
|
||||
}
|
||||
|
||||
public override AssemblyDefinition Resolve (AssemblyNameReference name, ReaderParameters parameters)
|
||||
{
|
||||
AssemblyDefinition asm = (AssemblyDefinition) _assemblies [name.Name];
|
||||
if (asm == null) {
|
||||
AssemblyDefinition asm;
|
||||
if (!_assemblies.TryGetValue (name.Name, out asm)) {
|
||||
asm = base.Resolve (name, parameters);
|
||||
_assemblies [asm.Name.Name] = asm;
|
||||
}
|
||||
@@ -67,10 +66,20 @@ namespace Mono.Linker {
|
||||
return asm;
|
||||
}
|
||||
|
||||
public void CacheAssembly (AssemblyDefinition assembly)
|
||||
public virtual AssemblyDefinition CacheAssembly (AssemblyDefinition assembly)
|
||||
{
|
||||
_assemblies [assembly.Name.Name] = assembly;
|
||||
base.AddSearchDirectory (Path.GetDirectoryName (assembly.MainModule.FileName));
|
||||
return assembly;
|
||||
}
|
||||
|
||||
protected override void Dispose (bool disposing)
|
||||
{
|
||||
foreach (var asm in _assemblies.Values) {
|
||||
asm.Dispose ();
|
||||
}
|
||||
|
||||
_assemblies.Clear ();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
203
external/linker/linker/Mono.Linker/Driver.cs
vendored
203
external/linker/linker/Mono.Linker/Driver.cs
vendored
@@ -1,4 +1,4 @@
|
||||
//
|
||||
//
|
||||
// Driver.cs
|
||||
//
|
||||
// Author:
|
||||
@@ -27,9 +27,8 @@
|
||||
//
|
||||
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.IO;
|
||||
using SR = System.Reflection;
|
||||
using System.Collections.Generic;
|
||||
using System.Xml.XPath;
|
||||
|
||||
using Mono.Linker.Steps;
|
||||
@@ -63,11 +62,11 @@ namespace Mono.Linker {
|
||||
return 0;
|
||||
}
|
||||
|
||||
Queue _queue;
|
||||
Queue<string> _queue;
|
||||
|
||||
public Driver (string [] args)
|
||||
{
|
||||
_queue = new Queue (args);
|
||||
_queue = new Queue<string> (args);
|
||||
}
|
||||
|
||||
bool HaveMoreTokens ()
|
||||
@@ -78,109 +77,114 @@ namespace Mono.Linker {
|
||||
void Run ()
|
||||
{
|
||||
Pipeline p = GetStandardPipeline ();
|
||||
LinkContext context = GetDefaultContext (p);
|
||||
I18nAssemblies assemblies = I18nAssemblies.All;
|
||||
ArrayList custom_steps = new ArrayList ();
|
||||
using (LinkContext context = GetDefaultContext (p)) {
|
||||
I18nAssemblies assemblies = I18nAssemblies.All;
|
||||
var custom_steps = new List<string> ();
|
||||
|
||||
bool resolver = false;
|
||||
while (HaveMoreTokens ()) {
|
||||
string token = GetParam ();
|
||||
if (token.Length < 2)
|
||||
Usage ("Option is too short");
|
||||
|
||||
if (! (token [0] == '-' || token [1] == '/'))
|
||||
Usage ("Expecting an option, got instead: " + token);
|
||||
|
||||
if (token [0] == '-' && token [1] == '-') {
|
||||
|
||||
if (token.Length < 3)
|
||||
bool resolver = false;
|
||||
while (HaveMoreTokens ()) {
|
||||
string token = GetParam ();
|
||||
if (token.Length < 2)
|
||||
Usage ("Option is too short");
|
||||
|
||||
switch (token [2]) {
|
||||
case 'v':
|
||||
Version ();
|
||||
if (!(token [0] == '-' || token [1] == '/'))
|
||||
Usage ("Expecting an option, got instead: " + token);
|
||||
|
||||
if (token [0] == '-' && token [1] == '-') {
|
||||
|
||||
if (token.Length < 3)
|
||||
Usage ("Option is too short");
|
||||
|
||||
switch (token [2]) {
|
||||
case 'v':
|
||||
Version ();
|
||||
break;
|
||||
case 'a':
|
||||
About ();
|
||||
break;
|
||||
default:
|
||||
Usage (null);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
switch (token [1]) {
|
||||
case 'd': {
|
||||
DirectoryInfo info = new DirectoryInfo (GetParam ());
|
||||
context.Resolver.AddSearchDirectory (info.FullName);
|
||||
break;
|
||||
}
|
||||
case 'o':
|
||||
context.OutputDirectory = GetParam ();
|
||||
break;
|
||||
case 'c':
|
||||
context.CoreAction = ParseAssemblyAction (GetParam ());
|
||||
break;
|
||||
case 'p':
|
||||
AssemblyAction action = ParseAssemblyAction (GetParam ());
|
||||
context.Actions [GetParam ()] = action;
|
||||
break;
|
||||
case 's':
|
||||
custom_steps.Add (GetParam ());
|
||||
break;
|
||||
case 't':
|
||||
context.KeepTypeForwarderOnlyAssemblies = true;
|
||||
break;
|
||||
case 'x':
|
||||
foreach (string file in GetFiles (GetParam ()))
|
||||
p.PrependStep (new ResolveFromXmlStep (new XPathDocument (file)));
|
||||
resolver = true;
|
||||
break;
|
||||
case 'r':
|
||||
case 'a':
|
||||
About ();
|
||||
var rootVisibility = (token [1] == 'r')
|
||||
? ResolveFromAssemblyStep.RootVisibility.PublicAndFamily
|
||||
: ResolveFromAssemblyStep.RootVisibility.Any;
|
||||
foreach (string file in GetFiles (GetParam ()))
|
||||
p.PrependStep (new ResolveFromAssemblyStep (file, rootVisibility));
|
||||
resolver = true;
|
||||
break;
|
||||
case 'i':
|
||||
foreach (string file in GetFiles (GetParam ()))
|
||||
p.PrependStep (new ResolveFromXApiStep (new XPathDocument (file)));
|
||||
resolver = true;
|
||||
break;
|
||||
case 'l':
|
||||
assemblies = ParseI18n (GetParam ());
|
||||
break;
|
||||
case 'm':
|
||||
context.SetParameter (GetParam (), GetParam ());
|
||||
break;
|
||||
case 'b':
|
||||
context.LinkSymbols = bool.Parse (GetParam ());
|
||||
break;
|
||||
case 'g':
|
||||
if (!bool.Parse (GetParam ()))
|
||||
p.RemoveStep (typeof (RegenerateGuidStep));
|
||||
break;
|
||||
case 'z':
|
||||
if (!bool.Parse (GetParam ()))
|
||||
p.RemoveStep (typeof (BlacklistStep));
|
||||
break;
|
||||
case 'v':
|
||||
context.KeepMembersForDebuggerAttributes = bool.Parse (GetParam ());
|
||||
break;
|
||||
default:
|
||||
Usage (null);
|
||||
Usage ("Unknown option: `" + token [1] + "'");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
switch (token [1]) {
|
||||
case 'd': {
|
||||
DirectoryInfo info = new DirectoryInfo (GetParam ());
|
||||
context.Resolver.AddSearchDirectory (info.FullName);
|
||||
break;
|
||||
}
|
||||
case 'o':
|
||||
context.OutputDirectory = GetParam ();
|
||||
break;
|
||||
case 'c':
|
||||
context.CoreAction = ParseAssemblyAction (GetParam ());
|
||||
break;
|
||||
case 'p':
|
||||
AssemblyAction action = ParseAssemblyAction (GetParam ());
|
||||
context.Actions [GetParam ()] = action;
|
||||
break;
|
||||
case 's':
|
||||
custom_steps.Add (GetParam ());
|
||||
break;
|
||||
case 't':
|
||||
context.KeepTypeForwarderOnlyAssemblies = true;
|
||||
break;
|
||||
case 'x':
|
||||
foreach (string file in GetFiles (GetParam ()))
|
||||
p.PrependStep (new ResolveFromXmlStep (new XPathDocument (file)));
|
||||
resolver = true;
|
||||
break;
|
||||
case 'r':
|
||||
case 'a':
|
||||
var rootVisibility = (token[1] == 'r')
|
||||
? ResolveFromAssemblyStep.RootVisibility.PublicAndFamily
|
||||
: ResolveFromAssemblyStep.RootVisibility.Any;
|
||||
foreach (string file in GetFiles (GetParam ()))
|
||||
p.PrependStep (new ResolveFromAssemblyStep (file, rootVisibility));
|
||||
resolver = true;
|
||||
break;
|
||||
case 'i':
|
||||
foreach (string file in GetFiles (GetParam ()))
|
||||
p.PrependStep (new ResolveFromXApiStep (new XPathDocument (file)));
|
||||
resolver = true;
|
||||
break;
|
||||
case 'l':
|
||||
assemblies = ParseI18n (GetParam ());
|
||||
break;
|
||||
case 'm':
|
||||
context.SetParameter (GetParam (), GetParam ());
|
||||
break;
|
||||
case 'b':
|
||||
context.LinkSymbols = bool.Parse (GetParam ());
|
||||
break;
|
||||
case 'g':
|
||||
if (!bool.Parse (GetParam ()))
|
||||
p.RemoveStep (typeof (RegenerateGuidStep));
|
||||
break;
|
||||
case 'v':
|
||||
context.KeepMembersForDebuggerAttributes = bool.Parse (GetParam ());
|
||||
break;
|
||||
default:
|
||||
Usage ("Unknown option: `" + token [1] + "'");
|
||||
break;
|
||||
}
|
||||
if (!resolver)
|
||||
Usage ("No resolver was created (use -x, -a or -i)");
|
||||
|
||||
foreach (string custom_step in custom_steps)
|
||||
AddCustomStep (p, custom_step);
|
||||
|
||||
p.AddStepAfter (typeof (LoadReferencesStep), new LoadI18nAssemblies (assemblies));
|
||||
|
||||
p.Process (context);
|
||||
}
|
||||
|
||||
if (!resolver)
|
||||
Usage ("No resolver was created (use -x, -a or -i)");
|
||||
|
||||
foreach (string custom_step in custom_steps)
|
||||
AddCustomStep (p, custom_step);
|
||||
|
||||
p.AddStepAfter (typeof (LoadReferencesStep), new LoadI18nAssemblies (assemblies));
|
||||
|
||||
p.Process (context);
|
||||
}
|
||||
|
||||
protected static void AddCustomStep (Pipeline pipeline, string arg)
|
||||
@@ -235,13 +239,13 @@ namespace Mono.Linker {
|
||||
|
||||
static string [] ReadLines (string file)
|
||||
{
|
||||
ArrayList lines = new ArrayList ();
|
||||
var lines = new List<string> ();
|
||||
using (StreamReader reader = new StreamReader (file)) {
|
||||
string line;
|
||||
while ((line = reader.ReadLine ()) != null)
|
||||
lines.Add (line);
|
||||
}
|
||||
return (string []) lines.ToArray (typeof (string));
|
||||
return lines.ToArray ();
|
||||
}
|
||||
|
||||
protected static I18nAssemblies ParseI18n (string str)
|
||||
@@ -264,7 +268,7 @@ namespace Mono.Linker {
|
||||
if (_queue.Count == 0)
|
||||
Usage ("Expecting a parameter");
|
||||
|
||||
return (string) _queue.Dequeue ();
|
||||
return _queue.Dequeue ();
|
||||
}
|
||||
|
||||
static LinkContext GetDefaultContext (Pipeline pipeline)
|
||||
@@ -304,6 +308,7 @@ namespace Mono.Linker {
|
||||
Console.WriteLine (" -a Link from a list of assemblies");
|
||||
Console.WriteLine (" -r Link from a list of assemblies using roots visible outside of the assembly");
|
||||
Console.WriteLine (" -i Link from an mono-api-info descriptor");
|
||||
Console.WriteLine (" -z Include default preservations (true or false), default to true");
|
||||
Console.WriteLine ("");
|
||||
|
||||
Environment.Exit (1);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user