Imported Upstream version 5.14.0.78

Former-commit-id: 3494343bcc9ddb42b36b82dd9ae7b69e85e0229f
This commit is contained in:
Xamarin Public Jenkins (auto-signing)
2018-05-10 08:37:03 +00:00
parent 74b74abd9f
commit 19234507ba
1776 changed files with 67755 additions and 31107 deletions

View File

@@ -28,6 +28,7 @@ namespace Mono.Cecil.PE {
public string RuntimeVersion;
public TargetArchitecture Architecture;
public ModuleCharacteristics Characteristics;
public ushort LinkerVersion;
public ImageDebugHeader DebugHeader;

View File

@@ -81,8 +81,8 @@ namespace Mono.Cecil.PE {
// Characteristics 2
ushort characteristics = ReadUInt16 ();
ushort subsystem, dll_characteristics;
ReadOptionalHeaders (out subsystem, out dll_characteristics);
ushort subsystem, dll_characteristics, linker_version;
ReadOptionalHeaders (out subsystem, out dll_characteristics, out linker_version);
ReadSections (sections);
ReadCLIHeader ();
ReadMetadata ();
@@ -90,6 +90,7 @@ namespace Mono.Cecil.PE {
image.Kind = GetModuleKind (characteristics, subsystem);
image.Characteristics = (ModuleCharacteristics) dll_characteristics;
image.LinkerVersion = linker_version;
}
TargetArchitecture ReadArchitecture ()
@@ -108,7 +109,7 @@ namespace Mono.Cecil.PE {
return ModuleKind.Console;
}
void ReadOptionalHeaders (out ushort subsystem, out ushort dll_characteristics)
void ReadOptionalHeaders (out ushort subsystem, out ushort dll_characteristics, out ushort linker)
{
// - PEOptionalHeader
// - StandardFieldsHeader
@@ -118,8 +119,7 @@ namespace Mono.Cecil.PE {
// pe32 || pe64
// LMajor 1
// LMinor 1
linker = ReadUInt16 ();
// CodeSize 4
// InitializedDataSize 4
// UninitializedDataSize4
@@ -142,7 +142,7 @@ namespace Mono.Cecil.PE {
// ImageSize 4
// HeaderSize 4
// FileChecksum 4
Advance (66);
Advance (64);
// SubSystem 2
subsystem = ReadUInt16 ();

View File

@@ -218,9 +218,8 @@ namespace Mono.Cecil.PE {
void WriteOptionalHeaders ()
{
WriteUInt16 ((ushort) (!pe64 ? 0x10b : 0x20b)); // Magic
WriteByte (8); // LMajor
WriteByte (0); // LMinor
WriteUInt16 ((ushort) (!pe64 ? 0x10b : 0x20b)); // Magic
WriteUInt16 (module.linker_version);
WriteUInt32 (text.SizeOfRawData); // CodeSize
WriteUInt32 ((reloc != null ? reloc.SizeOfRawData : 0)
+ (rsrc != null ? rsrc.SizeOfRawData : 0)); // InitializedDataSize