Browse Source

Fix #787: Incorrect display assembly Architecture for Managed C++

pull/1347/head
Siegfried Pammer 7 years ago
parent
commit
6d99ab1494
  1. 12
      ILSpy/Languages/Language.cs

12
ILSpy/Languages/Language.cs

@ -497,15 +497,17 @@ namespace ICSharpCode.ILSpy @@ -497,15 +497,17 @@ namespace ICSharpCode.ILSpy
public static string GetPlatformDisplayName(PEFile module)
{
var architecture = module.Reader.PEHeaders.CoffHeader.Machine;
var flags = module.Reader.PEHeaders.CorHeader.Flags;
var characteristics = module.Reader.PEHeaders.CoffHeader.Characteristics;
var corflags = module.Reader.PEHeaders.CorHeader.Flags;
switch (architecture) {
case Machine.I386:
if ((flags & CorFlags.Prefers32Bit) != 0)
if ((corflags & CorFlags.Prefers32Bit) != 0)
return "AnyCPU (32-bit preferred)";
else if ((flags & CorFlags.Requires32Bit) != 0)
// According to ECMA-335, II.25.3.3.1 CorFlags.Requires32Bit and Characteristics.Bit32Machine must be in sync
// for assemblies containing managed code. However, this is not true for C++/CLI assemblies.
if ((corflags & CorFlags.Requires32Bit) != 0 || (characteristics & Characteristics.Bit32Machine) != 0)
return "x86";
else
return "AnyCPU (64-bit preferred)";
return "AnyCPU (64-bit preferred)";
case Machine.Amd64:
return "x64";
case Machine.IA64:

Loading…
Cancel
Save