-
Notifications
You must be signed in to change notification settings - Fork 126
Description
Stack trace:
Fatal error in IL Linker
Unhandled exception. System.NotImplementedException: switch
at Mono.Linker.Steps.UnreachableBlocksOptimizer.BodyReducer.IsConstantBranch(OpCode opCode, Int32 operand)
at Mono.Linker.Steps.UnreachableBlocksOptimizer.BodyReducer.RemoveConditions()
at Mono.Linker.Steps.UnreachableBlocksOptimizer.BodyReducer.RewriteBody()
at Mono.Linker.Steps.UnreachableBlocksOptimizer.ProcessMethod(MethodDefinition method)
at Mono.Linker.Steps.MarkStep.ProcessMethod(MethodDefinition method, DependencyInfo& reason, MessageOrigin& origin)
at Mono.Linker.Steps.MarkStep.ProcessQueue()
at Mono.Linker.Steps.MarkStep.ProcessPrimaryQueue()
at Mono.Linker.Steps.MarkStep.Process()
at Mono.Linker.Steps.MarkStep.Process(LinkContext context)
at Mono.Linker.Pipeline.ProcessStep(LinkContext context, IStep step)
at Mono.Linker.Pipeline.Process(LinkContext context)
at Mono.Linker.Driver.Run(ILogger customLogger)
at Mono.Linker.Driver.Main(String[] args)
It looks like the problematic method might be ComputeDefaultOptions which looks like
public static void ComputeDefaultOptions(out TargetOS os, out TargetArchitecture arch)
{
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
os = TargetOS.Windows;
else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
os = TargetOS.Linux;
else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
os = TargetOS.OSX;
else if (RuntimeInformation.IsOSPlatform(OSPlatform.FreeBSD))
os = TargetOS.FreeBSD;
else
throw new NotImplementedException();
switch (RuntimeInformation.ProcessArchitecture)
{
case Architecture.X86:
arch = TargetArchitecture.X86;
break;
case Architecture.X64:
arch = TargetArchitecture.X64;
break;
case Architecture.Arm:
arch = TargetArchitecture.ARM;
break;
case Architecture.Arm64:
arch = TargetArchitecture.ARM64;
break;
default:
throw new NotImplementedException();
}
}