Skip to content

Commit eeb49c4

Browse files
authored
Reverting: Set AssemblyName.ProcessorArchitecture for compatibility (#80581) (#84028)
* Reverting #80581 * Adjust the test. * keep new version of CalculateProcArch (do not revert)
1 parent ad8031c commit eeb49c4

File tree

2 files changed

+1
-43
lines changed

2 files changed

+1
-43
lines changed

src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/MetadataReader.netstandard.cs

Lines changed: 0 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -85,12 +85,6 @@ public static unsafe AssemblyName GetAssemblyName(string assemblyFile)
8585
peReader = new PEReader((byte*)safeBuffer.DangerousGetHandle(), (int)safeBuffer.ByteLength);
8686
MetadataReader mdReader = peReader.GetMetadataReader(MetadataReaderOptions.None);
8787
AssemblyName assemblyName = mdReader.GetAssemblyDefinition().GetAssemblyName();
88-
89-
AssemblyFlags aFlags = mdReader.AssemblyTable.GetFlags();
90-
#pragma warning disable SYSLIB0037 // AssemblyName.ProcessorArchitecture is obsolete
91-
assemblyName.ProcessorArchitecture = CalculateProcArch(peReader, aFlags);
92-
#pragma warning restore SYSLIB0037
93-
9488
return assemblyName;
9589
}
9690
finally
@@ -107,42 +101,6 @@ public static unsafe AssemblyName GetAssemblyName(string assemblyFile)
107101
}
108102
}
109103

110-
private static ProcessorArchitecture CalculateProcArch(PEReader peReader, AssemblyFlags aFlags)
111-
{
112-
// 0x70 specifies "reference assembly".
113-
// For these, CLR wants to return None as arch so they can be always loaded, regardless of process type.
114-
if (((uint)aFlags & 0xF0) == 0x70)
115-
return ProcessorArchitecture.None;
116-
117-
PEHeaders peHeaders = peReader.PEHeaders;
118-
switch (peHeaders.CoffHeader.Machine)
119-
{
120-
case Machine.IA64:
121-
return ProcessorArchitecture.IA64;
122-
case Machine.Arm:
123-
return ProcessorArchitecture.Arm;
124-
case Machine.Amd64:
125-
return ProcessorArchitecture.Amd64;
126-
case Machine.I386:
127-
{
128-
CorFlags flags = peHeaders.CorHeader!.Flags;
129-
if ((flags & CorFlags.ILOnly) != 0 &&
130-
(flags & CorFlags.Requires32Bit) == 0)
131-
{
132-
// platform neutral.
133-
return ProcessorArchitecture.MSIL;
134-
}
135-
136-
// requires x86
137-
return ProcessorArchitecture.X86;
138-
}
139-
}
140-
141-
// ProcessorArchitecture is a legacy API and does not cover other Machine kinds.
142-
// For example ARM64 is not expressible
143-
return ProcessorArchitecture.None;
144-
}
145-
146104
private static AssemblyNameFlags GetAssemblyNameFlags(AssemblyFlags flags)
147105
{
148106
AssemblyNameFlags assemblyNameFlags = AssemblyNameFlags.None;

src/libraries/System.Reflection.Metadata/tests/Metadata/MetadataReaderTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3095,7 +3095,7 @@ public void GetAssemblyName()
30953095
Assert.Equal(new AssemblyName(a.FullName).ToString(), name.ToString());
30963096

30973097
#pragma warning disable SYSLIB0037 // AssemblyName.ProcessorArchitecture is obsolete
3098-
Assert.Equal(ProcessorArchitecture.MSIL, name.ProcessorArchitecture);
3098+
Assert.Equal(ProcessorArchitecture.None, name.ProcessorArchitecture);
30993099
#pragma warning restore SYSLIB0037
31003100
}
31013101
}

0 commit comments

Comments
 (0)