From: Amy Date: Wed, 18 Jul 2018 19:26:36 +0000 (-0700) Subject: R2RDump - Test infrastructure (dotnet/coreclr#18745) X-Git-Tag: submit/tizen/20210909.063632~11030^2~4342 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=10c32092f8df46c23433a2d13aee6d0f50641b91;p=platform%2Fupstream%2Fdotnet%2Fruntime.git R2RDump - Test infrastructure (dotnet/coreclr#18745) * Test infrastructure for R2RDump, compare xml and output diff * Add R2RDumpTest to build-tests * Fix errors causing tests to fail * Create XUnitWrapper for R2RDumpTest * Generate readytorun binaries from source code, copy expected xml output files to executable's directory * Test R2RDump through commandline instead of calling R2RDump functions * Fix errors * Prevent duplicate xml tags * Read test xml from string instead of file * Fix test bugs * Call dotnet r2rdump from msbuild * Fix errors * Use right slash for paths in bash * Use different expected xml for different architectures * R2RDumpTests for non-Windows * Add more test cases * Fix errors * Supress warnings, avoid error when parsing x86 images * Add license headers Commit migrated from https://github.com/dotnet/coreclr/commit/eb622bef3851f8858db8d365454f1345e270dcd8 --- diff --git a/src/coreclr/build.sh b/src/coreclr/build.sh index 2c7004f..091d622 100755 --- a/src/coreclr/build.sh +++ b/src/coreclr/build.sh @@ -448,6 +448,11 @@ build_CoreLib() __ExtraBuildArgs="$__ExtraBuildArgs -OptimizationDataDir=\"$__PackagesDir/optimization.$__BuildOS-$__BuildArch.IBC.CoreCLR/$__IbcOptDataVersion/data/\"" __ExtraBuildArgs="$__ExtraBuildArgs -EnableProfileGuidedOptimization=true" fi + + if [[ "$__BuildManagedTools" -eq "1" ]]; then + __ExtraBuildArgs="$__ExtraBuildArgs -BuildManagedTools=true" + fi + $__ProjectRoot/run.sh build -Project=$__ProjectDir/build.proj -MsBuildEventLogging="/l:BinClashLogger,Tools/Microsoft.DotNet.Build.Tasks.dll;LogFile=binclash.log" -MsBuildLog="/flp:Verbosity=normal;LogFile=$__LogsDir/System.Private.CoreLib_$__BuildOS__$__BuildArch__$__BuildType.log" -BuildTarget -__IntermediatesDir=$__IntermediatesDir -__RootBinDir=$__RootBinDir -BuildNugetPackage=false -UseSharedCompilation=false $__RunArgs $__ExtraBuildArgs $__UnprocessedBuildArgs if [ $? -ne 0 ]; then @@ -643,6 +648,7 @@ __PortableBuild=1 __msbuildonunsupportedplatform=0 __PgoOptDataVersion="" __IbcOptDataVersion="" +__BuildManagedTools=1 # Get the number of processors available to the scheduler # Other techniques such as `nproc` only get the number of diff --git a/src/coreclr/src/build.proj b/src/coreclr/src/build.proj index 42f157c..4f34707 100644 --- a/src/coreclr/src/build.proj +++ b/src/coreclr/src/build.proj @@ -26,10 +26,8 @@ $(BinDir)System.Private.CoreLib.pdb - - - + diff --git a/src/coreclr/src/tools/r2rdump/Amd64/UnwindInfo.cs b/src/coreclr/src/tools/r2rdump/Amd64/UnwindInfo.cs index 00c55bb..4f7bb45 100644 --- a/src/coreclr/src/tools/r2rdump/Amd64/UnwindInfo.cs +++ b/src/coreclr/src/tools/r2rdump/Amd64/UnwindInfo.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System.Text; +using System.Xml.Serialization; namespace R2RDump.Amd64 { @@ -32,6 +33,9 @@ namespace R2RDump.Amd64 public struct UnwindCode { + [XmlAttribute("Index")] + public int Index { get; set; } + public byte CodeOffset { get; set; } public UnwindOpCodes UnwindOp { get; set; } //4 bits public byte OpInfo { get; set; } //4 bits @@ -41,8 +45,10 @@ namespace R2RDump.Amd64 public uint FrameOffset { get; set; } - public UnwindCode(byte[] image, ref int offset) + public UnwindCode(byte[] image, int index, ref int offset) { + Index = index; + int off = offset; CodeOffset = NativeReader.ReadByte(image, ref off); byte op = NativeReader.ReadByte(image, ref off); @@ -85,7 +91,7 @@ namespace R2RDump.Amd64 UnwindCode = new UnwindCode[CountOfUnwindCodes]; for (int i = 0; i < CountOfUnwindCodes; i++) { - UnwindCode[i] = new UnwindCode(image, ref offset); + UnwindCode[i] = new UnwindCode(image, i, ref offset); } PersonalityRoutineRVA = NativeReader.ReadUInt32(image, ref offset); diff --git a/src/coreclr/src/tools/r2rdump/CoreDisTools.cs b/src/coreclr/src/tools/r2rdump/CoreDisTools.cs index a84046d..194b449 100644 --- a/src/coreclr/src/tools/r2rdump/CoreDisTools.cs +++ b/src/coreclr/src/tools/r2rdump/CoreDisTools.cs @@ -10,7 +10,7 @@ using System.Text; namespace R2RDump { - class CoreDisTools + public class CoreDisTools { private const string _dll = "coredistools.dll"; diff --git a/src/coreclr/src/tools/r2rdump/GCInfo.cs b/src/coreclr/src/tools/r2rdump/GCInfo.cs index c423eab..a940634 100644 --- a/src/coreclr/src/tools/r2rdump/GCInfo.cs +++ b/src/coreclr/src/tools/r2rdump/GCInfo.cs @@ -34,10 +34,13 @@ namespace R2RDump public struct InterruptibleRange { + [XmlAttribute("Index")] + public uint Index { get; set; } public uint StartOffset { get; set; } public uint StopOffset { get; set; } - public InterruptibleRange(uint start, uint stop) + public InterruptibleRange(uint index, uint start, uint stop) { + Index = index; StartOffset = start; StopOffset = stop; } @@ -45,6 +48,7 @@ namespace R2RDump public class GcTransition { + [XmlAttribute("Index")] public int CodeOffset { get; set; } public int SlotId { get; set; } public bool IsLive { get; set; } @@ -90,6 +94,18 @@ namespace R2RDump } } + public struct SafePointOffset + { + [XmlAttribute("Index")] + public int Index { get; set; } + public uint Value { get; set; } + public SafePointOffset(int index, uint value) + { + Index = index; + Value = value; + } + } + private const int GCINFO_VERSION = 2; private const int MIN_GCINFO_VERSION_WITH_RETURN_KIND = 2; private const int MIN_GCINFO_VERSION_WITH_REV_PINVOKE_FRAME = 2; @@ -122,7 +138,7 @@ namespace R2RDump public uint SizeOfStackOutgoingAndScratchArea { get; set; } public uint NumSafePoints { get; set; } public uint NumInterruptibleRanges { get; set; } - public List SafePointOffsets { get; set; } + public List SafePointOffsets { get; set; } public List InterruptibleRanges { get; set; } public GcSlotTable SlotTable { get; set; } public int Size { get; set; } @@ -294,9 +310,9 @@ namespace R2RDump sb.AppendLine($"\tNumSafePoints: {NumSafePoints}"); sb.AppendLine($"\tNumInterruptibleRanges: {NumInterruptibleRanges}"); sb.AppendLine($"\tSafePointOffsets:"); - foreach (uint offset in SafePointOffsets) + foreach (SafePointOffset offset in SafePointOffsets) { - sb.AppendLine($"\t\t{offset}"); + sb.AppendLine($"\t\t{offset.Value}"); } sb.AppendLine($"\tInterruptibleRanges:"); foreach (InterruptibleRange range in InterruptibleRanges) @@ -342,14 +358,14 @@ namespace R2RDump _wantsReportOnlyLeaf = ((headerFlags & GcInfoHeaderFlags.GC_INFO_WANTS_REPORT_ONLY_LEAF) != 0); } - private List EnumerateSafePoints(byte[] image, ref int bitOffset) + private List EnumerateSafePoints(byte[] image, ref int bitOffset) { - List safePoints = new List(); + List safePoints = new List(); uint numBitsPerOffset = GcInfoTypes.CeilOfLog2(CodeLength); for (int i = 0; i < NumSafePoints; i++) { uint normOffset = (uint)NativeReader.ReadBits(image, (int)numBitsPerOffset, ref bitOffset); - safePoints.Add(normOffset); + safePoints.Add(new SafePointOffset(i, normOffset)); } return safePoints; } @@ -366,7 +382,7 @@ namespace R2RDump uint rangeStartOffset = lastinterruptibleRangeStopOffset + normStartDelta; uint rangeStopOffset = rangeStartOffset + normStopDelta; - ranges.Add(new InterruptibleRange(rangeStartOffset, rangeStopOffset)); + ranges.Add(new InterruptibleRange(i, rangeStartOffset, rangeStopOffset)); lastinterruptibleRangeStopOffset = rangeStopOffset; } diff --git a/src/coreclr/src/tools/r2rdump/GCSlotTable.cs b/src/coreclr/src/tools/r2rdump/GCSlotTable.cs index d788f4d..3be9a3b 100644 --- a/src/coreclr/src/tools/r2rdump/GCSlotTable.cs +++ b/src/coreclr/src/tools/r2rdump/GCSlotTable.cs @@ -6,6 +6,7 @@ using System; using System.Collections.Generic; using System.Reflection.PortableExecutable; using System.Text; +using System.Xml.Serialization; namespace R2RDump { @@ -13,12 +14,15 @@ namespace R2RDump { public struct GcSlot { + [XmlAttribute("Index")] + public int Index { get; set; } public int RegisterNumber { get; set; } public GcStackSlot StackSlot { get; set; } public GcSlotFlags Flags { get; set; } - public GcSlot(int registerNumber, GcStackSlot stack, GcSlotFlags flags, bool isUntracked = false) + public GcSlot(int index, int registerNumber, GcStackSlot stack, GcSlotFlags flags, bool isUntracked = false) { + Index = index; RegisterNumber = registerNumber; StackSlot = stack; if (isUntracked) @@ -107,7 +111,7 @@ namespace R2RDump // We certainly predecode the first register uint regNum = NativeReader.DecodeVarLengthUnsigned(image, gcInfoTypes.REGISTER_ENCBASE, ref bitOffset); GcSlotFlags flags = (GcSlotFlags)NativeReader.ReadBits(image, 2, ref bitOffset); - GcSlots.Add(new GcSlot((int)regNum, null, flags)); + GcSlots.Add(new GcSlot(GcSlots.Count, (int)regNum, null, flags)); for (int i = 1; i < NumRegisters; i++) { @@ -121,7 +125,7 @@ namespace R2RDump uint regDelta = NativeReader.DecodeVarLengthUnsigned(image, gcInfoTypes.REGISTER_DELTA_ENCBASE, ref bitOffset) + 1; regNum += regDelta; } - GcSlots.Add(new GcSlot((int)regNum, null, flags)); + GcSlots.Add(new GcSlot(GcSlots.Count, (int)regNum, null, flags)); } } @@ -132,7 +136,7 @@ namespace R2RDump int normSpOffset = NativeReader.DecodeVarLengthSigned(image, gcInfoTypes.STACK_SLOT_ENCBASE, ref bitOffset); int spOffset = gcInfoTypes.DenormalizeStackSlot(normSpOffset); GcSlotFlags flags = (GcSlotFlags)NativeReader.ReadBits(image, 2, ref bitOffset); - GcSlots.Add(new GcSlot(-1, new GcStackSlot(spOffset, spBase), flags, isUntracked)); + GcSlots.Add(new GcSlot(GcSlots.Count, -1, new GcStackSlot(spOffset, spBase), flags, isUntracked)); for (int i = 1; i < nSlots; i++) { @@ -149,7 +153,7 @@ namespace R2RDump normSpOffset += normSpOffsetDelta; spOffset = gcInfoTypes.DenormalizeStackSlot(normSpOffset); } - GcSlots.Add(new GcSlot(-1, new GcStackSlot(spOffset, spBase), flags, isUntracked)); + GcSlots.Add(new GcSlot(GcSlots.Count, -1, new GcStackSlot(spOffset, spBase), flags, isUntracked)); } } } diff --git a/src/coreclr/src/tools/r2rdump/R2RDump.cs b/src/coreclr/src/tools/r2rdump/R2RDump.cs index 659bc31..aa94131 100644 --- a/src/coreclr/src/tools/r2rdump/R2RDump.cs +++ b/src/coreclr/src/tools/r2rdump/R2RDump.cs @@ -12,7 +12,7 @@ using System.Xml.Serialization; namespace R2RDump { - abstract class Dumper + public abstract class Dumper { internal R2RReader _r2r; internal bool _raw; @@ -95,13 +95,14 @@ namespace R2RDump if (verbose) { - _raw = true; _disasm = true; _unwind = true; _gc = true; _sectionContents = true; } + _disasm = false; // TODO: this requires the coredistools nuget package with the most recent changes + return argSyntax; } @@ -368,11 +369,11 @@ namespace R2RDump return 0; } - if (_inputFilenames.Count == 0) - throw new ArgumentException("Input filename must be specified (--in )"); - try { + if (_inputFilenames.Count == 0) + throw new ArgumentException("Input filename must be specified (--in )"); + foreach (string filename in _inputFilenames) { R2RReader r2r = new R2RReader(filename); @@ -402,6 +403,22 @@ namespace R2RDump catch (Exception e) { Console.WriteLine("Error: " + e.ToString()); + if (e is ArgumentException) + { + Console.WriteLine(); + Console.WriteLine(syntax.GetHelpText()); + } + if (_xml) + { + XmlDocument document = new XmlDocument(); + XmlNode node = document.CreateNode("element", "Error", ""); + node.InnerText = e.Message; + document.AppendChild(node); + if (_writer != null) + { + document.Save(_writer); + } + } return 1; } finally diff --git a/src/coreclr/src/tools/r2rdump/R2RDump.csproj b/src/coreclr/src/tools/r2rdump/R2RDump.csproj index 47625f4..b0ad5a3 100644 --- a/src/coreclr/src/tools/r2rdump/R2RDump.csproj +++ b/src/coreclr/src/tools/r2rdump/R2RDump.csproj @@ -10,7 +10,10 @@ Open true netcoreapp2.0 - .NETCoreApp + 2.0.0 + .NETCoreApp + false + 8002,NU1701 diff --git a/src/coreclr/src/tools/r2rdump/R2RImportSection.cs b/src/coreclr/src/tools/r2rdump/R2RImportSection.cs index 981501b..bf7a056 100644 --- a/src/coreclr/src/tools/r2rdump/R2RImportSection.cs +++ b/src/coreclr/src/tools/r2rdump/R2RImportSection.cs @@ -6,6 +6,7 @@ using System; using System.Collections.Generic; using System.Reflection.PortableExecutable; using System.Text; +using System.Xml.Serialization; namespace R2RDump { @@ -34,6 +35,7 @@ namespace R2RDump { public int StartOffset { get; set; } public long Section { get; set; } + [XmlAttribute("Index")] public uint SignatureRVA { get; set; } public byte[] SignatureSample { get; set; } public ImportSectionEntry(int startOffset, long section, uint signatureRVA, byte[] signatureSample) @@ -60,6 +62,7 @@ namespace R2RDump /// /// Section containing values to be fixed up /// + [XmlAttribute("Index")] public int SectionRVA { get; set; } public int SectionSize { get; set; } diff --git a/src/coreclr/src/tools/r2rdump/R2RMethod.cs b/src/coreclr/src/tools/r2rdump/R2RMethod.cs index a051e90..5cd8c3a 100644 --- a/src/coreclr/src/tools/r2rdump/R2RMethod.cs +++ b/src/coreclr/src/tools/r2rdump/R2RMethod.cs @@ -23,6 +23,7 @@ namespace R2RDump /// /// The index of the runtime function /// + [XmlAttribute("Index")] public int Id { get; set; } /// @@ -128,6 +129,7 @@ namespace R2RDump /// /// The row id of the method /// + [XmlAttribute("Index")] public uint Rid { get; set; } /// diff --git a/src/coreclr/src/tools/r2rdump/R2RReader.cs b/src/coreclr/src/tools/r2rdump/R2RReader.cs index a2f2a97..9b2940d 100644 --- a/src/coreclr/src/tools/r2rdump/R2RReader.cs +++ b/src/coreclr/src/tools/r2rdump/R2RReader.cs @@ -128,13 +128,18 @@ namespace R2RDump IntPtr ptr = (IntPtr)p; _peReader = new PEReader(p, Image.Length); - IsR2R = (_peReader.PEHeaders.CorHeader.Flags == CorFlags.ILLibrary); + IsR2R = ((_peReader.PEHeaders.CorHeader.Flags & CorFlags.ILLibrary) != 0); if (!IsR2R) { throw new BadImageFormatException("The file is not a ReadyToRun image"); } Machine = _peReader.PEHeaders.CoffHeader.Machine; + if (!Machine.IsDefined(typeof(Machine), Machine)) + { + Machine = Machine.Amd64; + R2RDump.WriteWarning($"Invalid Machine: {Machine}"); + } ImageBase = _peReader.PEHeaders.PEHeader.ImageBase; // initialize R2RHeader diff --git a/src/coreclr/src/tools/r2rdump/R2RSection.cs b/src/coreclr/src/tools/r2rdump/R2RSection.cs index 77cf24d..ff39c81 100644 --- a/src/coreclr/src/tools/r2rdump/R2RSection.cs +++ b/src/coreclr/src/tools/r2rdump/R2RSection.cs @@ -5,6 +5,7 @@ using System; using System.Collections.Generic; using System.Text; +using System.Xml.Serialization; namespace R2RDump { @@ -28,6 +29,7 @@ namespace R2RDump /// /// The ReadyToRun section type /// + [XmlAttribute("Index")] public SectionType Type { get; set; } /// diff --git a/src/coreclr/src/tools/r2rdump/TextDumper.cs b/src/coreclr/src/tools/r2rdump/TextDumper.cs index e393220..a1c6905 100644 --- a/src/coreclr/src/tools/r2rdump/TextDumper.cs +++ b/src/coreclr/src/tools/r2rdump/TextDumper.cs @@ -171,17 +171,15 @@ namespace R2RDump { int rtfOffset = 0; int codeOffset = rtf.CodeOffset; - Dictionary transitions = rtf.Method.GcInfo.Transitions; - GcSlotTable slotTable = rtf.Method.GcInfo.SlotTable; while (rtfOffset < rtf.Size) { string instr; int instrSize = CoreDisTools.GetInstruction(Disasm, rtf, imageOffset, rtfOffset, image, out instr); _writer.Write(instr); - if (transitions.ContainsKey(codeOffset)) + if (rtf.Method.GcInfo != null && rtf.Method.GcInfo.Transitions.ContainsKey(codeOffset)) { - _writer.WriteLine($"\t\t\t\t{transitions[codeOffset].GetSlotState(slotTable)}"); + _writer.WriteLine($"\t\t\t\t{rtf.Method.GcInfo.Transitions[codeOffset].GetSlotState(rtf.Method.GcInfo.SlotTable)}"); } CoreDisTools.ClearOutputBuffer(); diff --git a/src/coreclr/src/tools/r2rdump/XmlDumper.cs b/src/coreclr/src/tools/r2rdump/XmlDumper.cs index c10ae7c..913a8be 100644 --- a/src/coreclr/src/tools/r2rdump/XmlDumper.cs +++ b/src/coreclr/src/tools/r2rdump/XmlDumper.cs @@ -7,16 +7,16 @@ using System.Xml.Serialization; namespace R2RDump { - class XmlDumper : Dumper + public class XmlDumper : Dumper { - private XmlDocument _xmlDocument; + public XmlDocument XmlDocument { get; } private XmlNode _rootNode; public XmlDumper(R2RReader r2r, TextWriter writer, bool raw, bool header, bool disasm, IntPtr disassembler, bool unwind, bool gc, bool sectionContents) { _r2r = r2r; _writer = writer; - _xmlDocument = new XmlDocument(); + XmlDocument = new XmlDocument(); _raw = raw; _header = header; @@ -27,15 +27,26 @@ namespace R2RDump _sectionContents = sectionContents; } + public XmlDocument GetXmlDocument() + { + Begin(); + DumpHeader(true); + DumpAllMethods(); + return XmlDocument; + } + internal override void Begin() { - _rootNode = _xmlDocument.CreateNode("element", "R2RDump", ""); - _xmlDocument.AppendChild(_rootNode); + _rootNode = XmlDocument.CreateNode("element", "R2RDump", ""); + XmlDocument.AppendChild(_rootNode); Serialize(_r2r, _rootNode); } internal override void End() { - _xmlDocument.Save(_writer); + if (_writer != null) + { + XmlDocument.Save(_writer); + } } internal override void WriteDivider(string title) @@ -55,7 +66,7 @@ namespace R2RDump /// internal override void DumpHeader(bool dumpSections) { - XmlNode headerNode = _xmlDocument.CreateNode("element", "Header", ""); + XmlNode headerNode = XmlDocument.CreateNode("element", "Header", ""); _rootNode.AppendChild(headerNode); Serialize(_r2r.R2RHeader, headerNode); @@ -66,7 +77,7 @@ namespace R2RDump if (dumpSections) { - XmlNode sectionsNode = _xmlDocument.CreateNode("element", "Sections", ""); + XmlNode sectionsNode = XmlDocument.CreateNode("element", "Sections", ""); _rootNode.AppendChild(sectionsNode); AddXMLNode("Count", _r2r.R2RHeader.Sections.Count.ToString(), sectionsNode); @@ -82,7 +93,8 @@ namespace R2RDump /// internal override void DumpSection(R2RSection section, XmlNode parentNode) { - XmlNode sectionNode = _xmlDocument.CreateNode("element", "Section", ""); + XmlNode sectionNode = XmlDocument.CreateNode("element", "Section", ""); + AddIndexAttribute(sectionNode, $"{section.Type}"); parentNode.AppendChild(sectionNode); Serialize(section, sectionNode); @@ -98,7 +110,7 @@ namespace R2RDump internal override void DumpAllMethods() { - XmlNode methodsNode = _xmlDocument.CreateNode("element", "Methods", ""); + XmlNode methodsNode = XmlDocument.CreateNode("element", "Methods", ""); _rootNode.AppendChild(methodsNode); AddXMLNode("Count", _r2r.R2RMethods.Count.ToString(), methodsNode); foreach (R2RMethod method in _r2r.R2RMethods) @@ -112,13 +124,14 @@ namespace R2RDump /// internal override void DumpMethod(R2RMethod method, XmlNode parentNode) { - XmlNode methodNode = _xmlDocument.CreateNode("element", "Method", ""); + XmlNode methodNode = XmlDocument.CreateNode("element", "Method", ""); + AddIndexAttribute(methodNode, $"{method.Rid}"); parentNode.AppendChild(methodNode); Serialize(method, methodNode); - if (_gc) + if (_gc && method.GcInfo != null) { - XmlNode gcNode = _xmlDocument.CreateNode("element", "GcInfo", ""); + XmlNode gcNode = XmlDocument.CreateNode("element", "GcInfo", ""); methodNode.AppendChild(gcNode); Serialize(method.GcInfo, gcNode); @@ -134,7 +147,7 @@ namespace R2RDump } XmlNode rtfsNode = null; - rtfsNode = _xmlDocument.CreateNode("element", "RuntimeFunctions", ""); + rtfsNode = XmlDocument.CreateNode("element", "RuntimeFunctions", ""); methodNode.AppendChild(rtfsNode); foreach (RuntimeFunction runtimeFunction in method.RuntimeFunctions) @@ -148,7 +161,7 @@ namespace R2RDump /// internal override void DumpRuntimeFunction(RuntimeFunction rtf, XmlNode parentNode) { - XmlNode rtfNode = _xmlDocument.CreateNode("element", "RuntimeFunction", ""); + XmlNode rtfNode = XmlDocument.CreateNode("element", "RuntimeFunction", ""); parentNode.AppendChild(rtfNode); AddXMLNode("MethodRid", rtf.Method.Rid.ToString(), rtfNode); Serialize(rtf, rtfNode); @@ -162,10 +175,10 @@ namespace R2RDump { DumpBytes(rtf.StartAddress, (uint)rtf.Size, rtfNode); } - if (_unwind) + if (_unwind && rtf.UnwindInfo != null) { XmlNode unwindNode = null; - unwindNode = _xmlDocument.CreateNode("element", "UnwindInfo", ""); + unwindNode = XmlDocument.CreateNode("element", "UnwindInfo", ""); rtfNode.AppendChild(unwindNode); Serialize(rtf.UnwindInfo, unwindNode); @@ -187,10 +200,10 @@ namespace R2RDump string instr; int instrSize = CoreDisTools.GetInstruction(Disasm, rtf, imageOffset, rtfOffset, image, out instr); - AddXMLNode("offset"+codeOffset, instr, parentNode); + AddXMLNode("offset"+codeOffset, instr, parentNode, $"{codeOffset}"); if (transitions.ContainsKey(codeOffset)) { - AddXMLNode("Transition", transitions[codeOffset].GetSlotState(slotTable), parentNode); + AddXMLNode("Transition", transitions[codeOffset].GetSlotState(slotTable), parentNode, $"{codeOffset}"); } CoreDisTools.ClearOutputBuffer(); @@ -220,23 +233,23 @@ namespace R2RDump { sb.Append($" {_r2r.Image[start + i]:X2}"); } - AddXMLNode(name, sb.ToString(), parentNode); + AddXMLNode(name, sb.ToString(), parentNode, $"{start}"); return; } } internal override void DumpSectionContents(R2RSection section, XmlNode parentNode) { - XmlNode contentsNode = _xmlDocument.CreateNode("element", "Contents", ""); + XmlNode contentsNode = XmlDocument.CreateNode("element", "Contents", ""); parentNode.AppendChild(contentsNode); switch (section.Type) { case R2RSection.SectionType.READYTORUN_SECTION_AVAILABLE_TYPES: - + int availableTypesId = 0; foreach (string name in _r2r.AvailableTypes) { - AddXMLNode("AvailableType", name, contentsNode); + AddXMLNode("AvailableType", name, contentsNode, $"{availableTypesId++}"); } break; case R2RSection.SectionType.READYTORUN_SECTION_RUNTIME_FUNCTIONS: @@ -246,7 +259,7 @@ namespace R2RDump while (rtfOffset < rtfEndOffset) { uint rva = NativeReader.ReadUInt32(_r2r.Image, ref rtfOffset); - AddXMLNode($"id{rtfIndex}", $"0x{rva:X8}", contentsNode); + AddXMLNode($"id{rtfIndex}", $"0x{rva:X8}", contentsNode, $"{rtfIndex}"); rtfIndex++; } break; @@ -283,7 +296,7 @@ namespace R2RDump internal override XmlNode DumpQueryCount(string q, string title, int count) { - XmlNode queryNode = _xmlDocument.CreateNode("element", title, ""); + XmlNode queryNode = XmlDocument.CreateNode("element", title, ""); _rootNode.AppendChild(queryNode); AddXMLNode("Query", q, queryNode); AddXMLNode("Count", count.ToString(), queryNode); @@ -300,12 +313,23 @@ namespace R2RDump } } - private XmlNode AddXMLNode(String name, String contents, XmlNode parentNode) + private XmlNode AddXMLNode(String name, String contents, XmlNode parentNode, string index = "") { - XmlNode node = _xmlDocument.CreateNode("element", name, ""); + XmlNode node = XmlDocument.CreateNode("element", name, ""); + if (!index.Equals("")) + { + AddIndexAttribute(node, index); + } parentNode.AppendChild(node); node.InnerText = contents; return node; } + + private void AddIndexAttribute(XmlNode node, string index) + { + XmlAttribute attr = XmlDocument.CreateAttribute("Index"); + attr.Value = index; + node.Attributes.SetNamedItem(attr); + } } } diff --git a/src/coreclr/tests/src/readytorun/r2rdump/BasicTests.cs b/src/coreclr/tests/src/readytorun/r2rdump/BasicTests.cs new file mode 100644 index 0000000..2acdeee --- /dev/null +++ b/src/coreclr/tests/src/readytorun/r2rdump/BasicTests.cs @@ -0,0 +1,24 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; + +namespace R2RDumpTest +{ + public class BasicTests + { + static int Main(string[] args) + { + Console.WriteLine("Starting the test"); + + TestHelpers.RunTest("HelloWorld"); + TestHelpers.RunTest("MultipleRuntimeFunctions"); + TestHelpers.RunTest("GenericFunctions"); + TestHelpers.RunTest("GcInfoTransitions"); + + Console.WriteLine("PASSED"); + return 100; + } + } +} diff --git a/src/coreclr/tests/src/readytorun/r2rdump/R2RDumpTest.csproj b/src/coreclr/tests/src/readytorun/r2rdump/R2RDumpTest.csproj new file mode 100644 index 0000000..d885ff8 --- /dev/null +++ b/src/coreclr/tests/src/readytorun/r2rdump/R2RDumpTest.csproj @@ -0,0 +1,64 @@ + + + + + Debug + AnyCPU + R2RDumpTest + 2.0 + Exe + false + ..\..\ + ..\..\..\..\..\..\ + $(CoreClrDir)bin\Product\$(BuildOS).$(BuildArch).$(BuildType)\netcoreapp2.0\R2RDump.dll + $(CoreClrDir)Tools\dotnetcli\dotnet + ../../../../../../ + $(BashCoreClrDir)bin/Product/$(BuildOS).$(BuildArch).$(BuildType)/netcoreapp2.0/R2RDump.dll + $(BashCoreClrDir)Tools/dotnetcli/dotnet + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/coreclr/tests/src/readytorun/r2rdump/TestHelpers.cs b/src/coreclr/tests/src/readytorun/r2rdump/TestHelpers.cs new file mode 100644 index 0000000..8e89f8d --- /dev/null +++ b/src/coreclr/tests/src/readytorun/r2rdump/TestHelpers.cs @@ -0,0 +1,116 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Xml; +using Xunit.Abstractions; +using System.Text; +using Xunit; + +namespace R2RDumpTest +{ + class TestHelpers + { + public static void RunTest(string name) + { + List testXmlNodes = ReadXmlNodes($"{name}-test.xml", true).Cast().ToList(); + List expectedXmlNodes = ReadXmlNodes($"{name}.xml", true).Cast().ToList(); + bool identical = XmlDiff(testXmlNodes, expectedXmlNodes); + Assert.True(identical); + } + + public static bool XmlDiff(List testXmlNodes, List expectedXmlNodes) + { + testXmlNodes.RemoveAll(node => !IsLeaf(node)); + expectedXmlNodes.RemoveAll(node => !IsLeaf(node)); + + Dictionary allTest = testXmlNodes.ToDictionary(node => XmlNodeFullName(node)); + Dictionary allExpected = expectedXmlNodes.ToDictionary(node => XmlNodeFullName(node)); + Dictionary diffTest = testXmlNodes.Except(expectedXmlNodes, new XElementEqualityComparer()).ToDictionary(node => XmlNodeFullName(node)); + Dictionary diffExpected = expectedXmlNodes.Except(testXmlNodes, new XElementEqualityComparer()).ToDictionary(node => XmlNodeFullName(node)); + + foreach (KeyValuePair diff in diffExpected) + { + XmlNode expectedNode = diff.Value; + Console.WriteLine("Expected:"); + Console.WriteLine("\t" + XmlNodeFullName(expectedNode) + ": " + expectedNode.InnerText); + if (allTest.ContainsKey(diff.Key)) + { + XmlNode testNode = allTest[diff.Key]; + Console.WriteLine("Test:"); + Console.WriteLine("\t" + XmlNodeFullName(testNode) + ": " + testNode.InnerText); + } + else + { + Console.WriteLine("Test:"); + Console.WriteLine("\tnone"); + } + Console.WriteLine(""); + } + foreach (KeyValuePair diff in diffTest) + { + if (!allExpected.ContainsKey(diff.Key)) + { + Console.WriteLine("Expected:"); + Console.WriteLine("\tnone"); + Console.WriteLine("Test:"); + Console.WriteLine("\t" + XmlNodeFullName(diff.Value) + ": " + diff.Value.InnerText); + } + Console.WriteLine(""); + } + + return diffExpected.Count == 0 && diffTest.Count == 0; + } + + private class XElementEqualityComparer : IEqualityComparer + { + public bool Equals(XmlNode x, XmlNode y) + { + return XmlNodeFullName(x).Equals(XmlNodeFullName(y)) && x.InnerText.Equals(y.InnerText); + } + public int GetHashCode(XmlNode obj) + { + return 0; + } + } + + private static bool IsLeaf(XmlNode node) + { + return !node.HasChildNodes || node.FirstChild.NodeType == XmlNodeType.Text; + } + + private static string XmlNodeFullName(XmlNode node) + { + string fullName = ""; + XmlNode n = node; + while (node != null && node.NodeType != XmlNodeType.Document) + { + string index = ""; + XmlAttribute indexAttribute = node.Attributes["Index"]; + if (indexAttribute != null) { + index = indexAttribute.Value; + } + fullName = node.Name + index + "." + fullName; + node = node.ParentNode; + } + return fullName; + } + + public static XmlNodeList ReadXmlNodes(string filenameOrXmlString, bool fromFile) + { + XmlDocument expectedXml = new XmlDocument(); + if (fromFile) + { + expectedXml.Load(filenameOrXmlString); + } + else + { + expectedXml.LoadXml(filenameOrXmlString); + } + return expectedXml.SelectNodes("//*"); + } + } +} \ No newline at end of file diff --git a/src/coreclr/tests/src/readytorun/r2rdump/files/GcInfoTransitions.cs b/src/coreclr/tests/src/readytorun/r2rdump/files/GcInfoTransitions.cs new file mode 100644 index 0000000..8fb283b --- /dev/null +++ b/src/coreclr/tests/src/readytorun/r2rdump/files/GcInfoTransitions.cs @@ -0,0 +1,26 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace GcInfoTransitions +{ + class GcInfoTransitions + { + static void abc(string a) + { + + } + + static void Main(string[] args) + { + abc(new string('1',1)); + abc(new string('2', 1)); + abc(new string('3', 1)); + abc(new string('4', 1)); + abc(new string('5', 1)); + abc(new string('6', 1)); + abc(new string('7', 1)); + abc(new string('8', 1)); + } + } +} diff --git a/src/coreclr/tests/src/readytorun/r2rdump/files/GcInfoTransitions.csproj b/src/coreclr/tests/src/readytorun/r2rdump/files/GcInfoTransitions.csproj new file mode 100644 index 0000000..8aaa695 --- /dev/null +++ b/src/coreclr/tests/src/readytorun/r2rdump/files/GcInfoTransitions.csproj @@ -0,0 +1,22 @@ + + + + + Debug + AnyCPU + 2.0 + library + ..\..\..\ + $(DefineConstants);STATIC;CORECLR + SharedLibrary + + + + + + + + + + + \ No newline at end of file diff --git a/src/coreclr/tests/src/readytorun/r2rdump/files/GenericFunctions.cs b/src/coreclr/tests/src/readytorun/r2rdump/files/GenericFunctions.cs new file mode 100644 index 0000000..52679bb --- /dev/null +++ b/src/coreclr/tests/src/readytorun/r2rdump/files/GenericFunctions.cs @@ -0,0 +1,43 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace GenericFunctions +{ + struct UserDefinedStruct + { + int n; + public UserDefinedStruct(int num) + { + n = num; + } + } + + class UserDefinedClass + { + int n; + public UserDefinedClass(int num) + { + n = num; + } + } + + class GenericFunctions + { + static T GenericFunction(T t, S s) + { + return t; + } + + static void Main(string[] args) + { + string str = "hello"; + UserDefinedStruct userDefinedStruct = new UserDefinedStruct(2); + GenericFunction(userDefinedStruct, str); + + int integer = 1; + UserDefinedClass userDefinedClass = new UserDefinedClass(2); + GenericFunction(integer, userDefinedClass); + } + } +} diff --git a/src/coreclr/tests/src/readytorun/r2rdump/files/GenericFunctions.csproj b/src/coreclr/tests/src/readytorun/r2rdump/files/GenericFunctions.csproj new file mode 100644 index 0000000..34f8d12 --- /dev/null +++ b/src/coreclr/tests/src/readytorun/r2rdump/files/GenericFunctions.csproj @@ -0,0 +1,22 @@ + + + + + Debug + AnyCPU + 2.0 + library + ..\..\..\ + $(DefineConstants);STATIC;CORECLR + SharedLibrary + + + + + + + + + + + \ No newline at end of file diff --git a/src/coreclr/tests/src/readytorun/r2rdump/files/HelloWorld.cs b/src/coreclr/tests/src/readytorun/r2rdump/files/HelloWorld.cs new file mode 100644 index 0000000..5f02049 --- /dev/null +++ b/src/coreclr/tests/src/readytorun/r2rdump/files/HelloWorld.cs @@ -0,0 +1,16 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; + +namespace HelloWorld +{ + class HelloWorld + { + static void Main(string[] args) + { + Console.WriteLine("Hello World!"); + } + } +} diff --git a/src/coreclr/tests/src/readytorun/r2rdump/files/HelloWorld.csproj b/src/coreclr/tests/src/readytorun/r2rdump/files/HelloWorld.csproj new file mode 100644 index 0000000..9659cad --- /dev/null +++ b/src/coreclr/tests/src/readytorun/r2rdump/files/HelloWorld.csproj @@ -0,0 +1,22 @@ + + + + + Debug + AnyCPU + 2.0 + library + ..\..\..\ + $(DefineConstants);STATIC;CORECLR + SharedLibrary + + + + + + + + + + + \ No newline at end of file diff --git a/src/coreclr/tests/src/readytorun/r2rdump/files/MultipleRuntimeFunctions.cs b/src/coreclr/tests/src/readytorun/r2rdump/files/MultipleRuntimeFunctions.cs new file mode 100644 index 0000000..a0ec5bf --- /dev/null +++ b/src/coreclr/tests/src/readytorun/r2rdump/files/MultipleRuntimeFunctions.cs @@ -0,0 +1,21 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace MultipleRuntimeFunctions +{ + class MultipleRuntimeFunctions + { + static void Main(string[] args) + { + try + { + + } + finally + { + + } + } + } +} diff --git a/src/coreclr/tests/src/readytorun/r2rdump/files/MultipleRuntimeFunctions.csproj b/src/coreclr/tests/src/readytorun/r2rdump/files/MultipleRuntimeFunctions.csproj new file mode 100644 index 0000000..42d3ce5 --- /dev/null +++ b/src/coreclr/tests/src/readytorun/r2rdump/files/MultipleRuntimeFunctions.csproj @@ -0,0 +1,22 @@ + + + + + Debug + AnyCPU + 2.0 + library + ..\..\..\ + $(DefineConstants);STATIC;CORECLR + SharedLibrary + + + + + + + + + + + \ No newline at end of file diff --git a/src/coreclr/tests/src/readytorun/r2rdump/files/Windows_NT.x64.Checked/GcInfoTransitions.xml b/src/coreclr/tests/src/readytorun/r2rdump/files/Windows_NT.x64.Checked/GcInfoTransitions.xml new file mode 100644 index 0000000..b9d550b --- /dev/null +++ b/src/coreclr/tests/src/readytorun/r2rdump/files/Windows_NT.x64.Checked/GcInfoTransitions.xml @@ -0,0 +1,399 @@ + + + + GcInfoTransitions.ni.dll + true + Amd64 + 6891812028416 + +
+ + 8984 + 124 + RTR + 5395538 + 2 + 2 + 3 + +
+ + 9 +
+ + 9148 + 37 + + + CoreCLR 4.5.30319.0 __BUILDMACHINE__ + +
+
+ + 9108 + 40 + + + + 24 + CORCOMPILE_IMPORT_FLAGS_EAGER + CORCOMPILE_IMPORT_TYPE_UNKNOWN + 0 + 9276 + + + 0 +
0
+ GgEagPAaCP8= +
+
+ 0 +
+ + 0 +
0
+ GgEagPAaCP8= +
+ + 8 + CORCOMPILE_IMPORT_FLAGS_PCODE + CORCOMPILE_IMPORT_TYPE_STUB_DISPATCH + 8 + 9360 + + + 0 +
6891812037717
+ FQQAAAAAAAA= +
+
+ 10528 + + 2 + 0 + RT_Object + 0 + 0 + -1 + -1 + -1 + -1 + 4294967295 + 4294967295 + -1 + 0 + 0 + 0 + + + + 0 + 0 + 0 + 0 + + + 22 + 3360 + +
+ + 0 +
6891812037717
+ FQQAAAAAAAA= +
+
+
+
+ + 9320 + 36 + + + 0x00002810 + 0x00002816 + 0x000028FC + 0x00002820 + 0x000028C3 + 0x00002908 + 0x000028D0 + 0x000028D6 + 0x000028FC + +
+
+ + 10456 + 10 + + +
+
+ + 10544 + 63 + + +
+
+ + 9301 + 16 + + +
+
+ + 10480 + 9 + + + GcInfoTransitions.GcInfoTransitions + .<Module> + +
+
+ + 10466 + 3 + + +
+
+ + 10608 + 22 + + +
+
+ + 3 + + + abc + GcInfoTransitions.GcInfoTransitions.abc(String) + false + GcInfoTransitions.GcInfoTransitions + 100663297 + 0 + + + + 2 + 6 + RT_Scalar + 0 + 0 + -1 + -1 + -1 + -1 + 4294967295 + 4294967295 + -1 + 0 + 0 + 0 + + + + 0 + 0 + 0 + 0 + + + 22 + 3332 + + + + + 1 + + 10256 + 6 + 10492 + 0 + + + + 1 + 3 + 0 + 0 + EAX + 0 + + 9295 + 8 + + + + + + + + Main + GcInfoTransitions.GcInfoTransitions.Main(String[]) + false + GcInfoTransitions.GcInfoTransitions + 100663298 + 1 + + + + 2 + 163 + RT_Scalar + 0 + 0 + -1 + -1 + -1 + -1 + 4294967295 + 4294967295 + -1 + 0 + 8 + 0 + + + 23 + + + 42 + + + 61 + + + 80 + + + 99 + + + 118 + + + 137 + + + 156 + + + + + 0 + 0 + 0 + 0 + + + 153 + 3348 + + + + + 2 + + 10272 + 163 + 10504 + 0 + + + + 1 + 3 + 4 + 1 + EAX + 0 + + + 4 + UWOP_ALLOC_SMALL + 4 + 4 + 4 + 16900 + + + 609157120 + 12 + + + + + + + + .ctor + GcInfoTransitions.GcInfoTransitions..ctor() + false + GcInfoTransitions.GcInfoTransitions + 100663299 + 2 + + + + 2 + 6 + RT_Scalar + 0 + 0 + -1 + -1 + -1 + -1 + 4294967295 + 4294967295 + -1 + 0 + 0 + 0 + + + + 0 + 0 + 0 + 0 + + + 22 + 3332 + + + + + 3 + + 10448 + 6 + 10492 + 0 + + + + 1 + 3 + 0 + 0 + EAX + 0 + + 9295 + 8 + + + + + + +
\ No newline at end of file diff --git a/src/coreclr/tests/src/readytorun/r2rdump/files/Windows_NT.x64.Checked/GenericFunctions.xml b/src/coreclr/tests/src/readytorun/r2rdump/files/Windows_NT.x64.Checked/GenericFunctions.xml new file mode 100644 index 0000000..9085634 --- /dev/null +++ b/src/coreclr/tests/src/readytorun/r2rdump/files/Windows_NT.x64.Checked/GenericFunctions.xml @@ -0,0 +1,494 @@ + + + + GenericFunctions.ni.dll + true + Amd64 + 6891812028416 + +
+ + 8984 + 112 + RTR + 5395538 + 2 + 2 + 3 + +
+ + 8 +
+ + 9156 + 37 + + + CoreCLR 4.5.30319.0 __BUILDMACHINE__ + +
+
+ + 9096 + 60 + + + + 24 + CORCOMPILE_IMPORT_FLAGS_EAGER + CORCOMPILE_IMPORT_TYPE_UNKNOWN + 0 + 9284 + + + 0 +
0
+ GgEagPAaEP8= +
+
+ 0 +
+ + 0 +
0
+ GgEagPAaEP8= +
+ + 8 + CORCOMPILE_IMPORT_FLAGS_PCODE + CORCOMPILE_IMPORT_TYPE_UNKNOWN + 8 + 9392 + + + 0 +
6891812037725
+ HBIMEBEIAAA= +
+
+ 0 +
+ + 0 +
6891812037725
+ HBIMEBEIAAA= +
+ + 8 + CORCOMPILE_IMPORT_FLAGS_UNKNOWN + CORCOMPILE_IMPORT_TYPE_UNKNOWN + 0 + 10672 + + 0 + +
+
+
+ + 9328 + 60 + + + 0x000028E0 + 0x000028E8 + 0x00002970 + 0x000028F0 + 0x000028F9 + 0x0000297C + 0x00002900 + 0x00002909 + 0x00002988 + 0x00002910 + 0x0000292F + 0x00002994 + 0x00002930 + 0x00002936 + 0x000029A4 + +
+
+ + 10552 + 14 + + +
+
+ + 10688 + 87 + + +
+
+ + 10592 + 15 + + + GenericFunctions.GenericFunctions + .<Module> + GenericFunctions.UserDefinedStruct + GenericFunctions.UserDefinedClass + +
+
+ + 10566 + 11 + + +
+
+ + 10776 + 41 + + +
+
+ + 5 + + + .ctor + GenericFunctions.UserDefinedStruct..ctor(Int32) + false + GenericFunctions.UserDefinedStruct + 100663297 + 0 + + + + 2 + 8 + RT_Scalar + 0 + 0 + -1 + -1 + -1 + -1 + 4294967295 + 4294967295 + -1 + 0 + 0 + 0 + + + + 0 + 0 + 0 + 0 + + + 22 + 3448 + + + + + 1 + + 10464 + 8 + 10608 + 0 + + + + 1 + 3 + 0 + 0 + EAX + 0 + + 9303 + 8 + + + + + + + + .ctor + GenericFunctions.UserDefinedClass..ctor(Int32) + false + GenericFunctions.UserDefinedClass + 100663298 + 1 + + + + 2 + 9 + RT_Scalar + 0 + 0 + -1 + -1 + -1 + -1 + 4294967295 + 4294967295 + -1 + 0 + 0 + 0 + + + + 0 + 0 + 0 + 0 + + + 22 + 3460 + + + + + 2 + + 10480 + 9 + 10620 + 0 + + + + 1 + 3 + 0 + 0 + EAX + 0 + + 9303 + 8 + + + + + + + + Main + GenericFunctions.GenericFunctions.Main(String[]) + false + GenericFunctions.GenericFunctions + 100663300 + 3 + + + 2 + 0 + + + + + + 2 + 31 + RT_Scalar + 0 + 0 + -1 + -1 + -1 + -1 + 4294967295 + 4294967295 + -1 + 0 + 1 + 0 + + + 18 + + + + + 0 + 0 + 0 + 0 + + + 32 + 3488 + + + + + 4 + + 10512 + 31 + 10644 + 0 + + + + 1 + 3 + 4 + 1 + EAX + 0 + + + 4 + UWOP_ALLOC_SMALL + 4 + 4 + 4 + 16900 + + + 609681408 + 12 + + + + + + + + .ctor + GenericFunctions.GenericFunctions..ctor() + false + GenericFunctions.GenericFunctions + 100663301 + 4 + + + + 2 + 6 + RT_Scalar + 0 + 0 + -1 + -1 + -1 + -1 + 4294967295 + 4294967295 + -1 + 0 + 0 + 0 + + + + 0 + 0 + 0 + 0 + + + 22 + 3500 + + + + + 5 + + 10544 + 6 + 10660 + 0 + + + + 1 + 3 + 0 + 0 + EAX + 0 + + 9303 + 8 + + + + + + + + GenericFunction + GenericFunctions.GenericFunctions.GenericFunction<__Canon, __Canon>(__Canon, __Canon) + true + GenericFunctions.GenericFunctions + 100663299 + 2 + + + + 2 + 9 + RT_Object + 0 + 0 + -1 + -1 + -1 + -1 + 4294967295 + 4294967295 + -1 + 0 + 0 + 0 + + + + 0 + 0 + 0 + 0 + + + 22 + 3472 + + + + + 3 + + 10496 + 9 + 10632 + 0 + + + + 1 + 3 + 0 + 0 + EAX + 0 + + 9303 + 8 + + + + + + +
\ No newline at end of file diff --git a/src/coreclr/tests/src/readytorun/r2rdump/files/Windows_NT.x64.Checked/HelloWorld.xml b/src/coreclr/tests/src/readytorun/r2rdump/files/Windows_NT.x64.Checked/HelloWorld.xml new file mode 100644 index 0000000..a5f7d4d --- /dev/null +++ b/src/coreclr/tests/src/readytorun/r2rdump/files/Windows_NT.x64.Checked/HelloWorld.xml @@ -0,0 +1,326 @@ + + + + HelloWorld.ni.dll + true + Amd64 + 6891812028416 + +
+ + 8952 + 124 + RTR + 5395538 + 2 + 2 + 3 + +
+ + 9 +
+ + 9136 + 37 + + + CoreCLR 4.5.30319.0 __BUILDMACHINE__ + +
+
+ + 9076 + 60 + + + + 24 + CORCOMPILE_IMPORT_FLAGS_EAGER + CORCOMPILE_IMPORT_TYPE_UNKNOWN + 0 + 9264 + + + 0 +
0
+ GgEagPAaCP8= +
+
+ 0 +
+ + 0 +
0
+ GgEagPAaCP8= +
+ + 8 + CORCOMPILE_IMPORT_FLAGS_UNKNOWN + CORCOMPILE_IMPORT_TYPE_STRING_HANDLE + 8 + 10256 + + 0 + + + 8 + CORCOMPILE_IMPORT_FLAGS_PCODE + CORCOMPILE_IMPORT_TYPE_STUB_DISPATCH + 8 + 9336 + + + 0 +
6891812037705
+ FQQQAQICAn4= +
+
+ 10248 + + 2 + 0 + RT_Object + 0 + 0 + -1 + -1 + -1 + -1 + 4294967295 + 4294967295 + -1 + 0 + 0 + 0 + + + + 0 + 0 + 0 + 0 + + + 22 + 3080 + +
+ + 0 +
6891812037705
+ FQQQAQICAn4= +
+
+
+
+ + 9308 + 24 + + + 0x000027A0 + 0x000027BB + 0x000027EC + 0x000027C0 + 0x000027C6 + 0x000027FC + +
+
+ + 10184 + 10 + + +
+
+ + 10264 + 31 + + +
+
+ + 9289 + 16 + + +
+
+ + 10208 + 9 + + + HelloWorld.HelloWorld + .<Module> + +
+
+ + 10194 + 3 + + +
+
+ + 10296 + 13 + + +
+
+ + 2 + + + Main + HelloWorld.HelloWorld.Main(String[]) + false + HelloWorld.HelloWorld + 100663297 + 0 + + + 1 + 0 + + + + + + 2 + 27 + RT_Scalar + 0 + 0 + -1 + -1 + -1 + -1 + 4294967295 + 4294967295 + -1 + 0 + 1 + 0 + + + 20 + + + + + 0 + 0 + 0 + 0 + + + 32 + 3064 + + + + + 1 + + 10144 + 27 + 10220 + 0 + + + + 1 + 3 + 4 + 1 + EAX + 0 + + + 4 + UWOP_ALLOC_SMALL + 4 + 4 + 4 + 16900 + + + 608370688 + 12 + + + + + + + + .ctor + HelloWorld.HelloWorld..ctor() + false + HelloWorld.HelloWorld + 100663298 + 1 + + + + 2 + 6 + RT_Scalar + 0 + 0 + -1 + -1 + -1 + -1 + 4294967295 + 4294967295 + -1 + 0 + 0 + 0 + + + + 0 + 0 + 0 + 0 + + + 22 + 3076 + + + + + 2 + + 10176 + 6 + 10236 + 0 + + + + 1 + 3 + 0 + 0 + EAX + 0 + + 9283 + 8 + + + + + + +
\ No newline at end of file diff --git a/src/coreclr/tests/src/readytorun/r2rdump/files/Windows_NT.x64.Checked/MultipleRuntimeFunctions.xml b/src/coreclr/tests/src/readytorun/r2rdump/files/Windows_NT.x64.Checked/MultipleRuntimeFunctions.xml new file mode 100644 index 0000000..2161efe --- /dev/null +++ b/src/coreclr/tests/src/readytorun/r2rdump/files/Windows_NT.x64.Checked/MultipleRuntimeFunctions.xml @@ -0,0 +1,243 @@ + + + + MultipleRuntimeFunctions.ni.dll + true + Amd64 + 6891812028416 + +
+ + 9016 + 112 + RTR + 5395538 + 2 + 2 + 3 + +
+ + 8 +
+ + 9148 + 37 + + + CoreCLR 4.5.30319.0 __BUILDMACHINE__ + +
+
+ + 9128 + 20 + + + + 16 + CORCOMPILE_IMPORT_FLAGS_EAGER + CORCOMPILE_IMPORT_TYPE_UNKNOWN + 0 + 9276 + + + 0 +
0
+ GgEagPD/Jbk= +
+
+ 0 +
+ + 0 +
0
+ GgEagPD/Jbk= +
+
+
+
+ + 9296 + 24 + + + 0x00002750 + 0x00002756 + 0x0000278C + 0x00002760 + 0x00002766 + 0x0000278C + +
+
+ + 10088 + 8 + + +
+
+ + 10136 + 27 + + +
+
+ + 10112 + 9 + + + MultipleRuntimeFunctions.MultipleRuntimeFunctions + .<Module> + +
+
+ + 10096 + 3 + + +
+
+ + 10164 + 13 + + +
+
+ + 2 + + + Main + MultipleRuntimeFunctions.MultipleRuntimeFunctions.Main(String[]) + false + MultipleRuntimeFunctions.MultipleRuntimeFunctions + 100663297 + 0 + + + + 2 + 6 + RT_Scalar + 0 + 0 + -1 + -1 + -1 + -1 + 4294967295 + 4294967295 + -1 + 0 + 0 + 0 + + + + 0 + 0 + 0 + 0 + + + 22 + 2964 + + + + + 1 + + 10064 + 6 + 10124 + 0 + + + + 1 + 3 + 0 + 0 + EAX + 0 + + 9289 + 8 + + + + + + + + .ctor + MultipleRuntimeFunctions.MultipleRuntimeFunctions..ctor() + false + MultipleRuntimeFunctions.MultipleRuntimeFunctions + 100663298 + 1 + + + + 2 + 6 + RT_Scalar + 0 + 0 + -1 + -1 + -1 + -1 + 4294967295 + 4294967295 + -1 + 0 + 0 + 0 + + + + 0 + 0 + 0 + 0 + + + 22 + 2964 + + + + + 2 + + 10080 + 6 + 10124 + 0 + + + + 1 + 3 + 0 + 0 + EAX + 0 + + 9289 + 8 + + + + + + +
\ No newline at end of file diff --git a/src/coreclr/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Checked/GcInfoTransitions.xml b/src/coreclr/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Checked/GcInfoTransitions.xml new file mode 100644 index 0000000..a9ede31 --- /dev/null +++ b/src/coreclr/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Checked/GcInfoTransitions.xml @@ -0,0 +1,233 @@ + + + + GcInfoTransitions.ni.dll + true + I386 + 268500992 + +
+ + 8984 + 124 + RTR + 5395538 + 2 + 2 + 3 + +
+ + 9 +
+ + 9148 + 37 + + + CoreCLR 4.5.30319.0 __BUILDMACHINE__ + +
+
+ + 9108 + 40 + + + + 8 + CORCOMPILE_IMPORT_FLAGS_EAGER + CORCOMPILE_IMPORT_TYPE_UNKNOWN + 0 + 9276 + + + 0 +
0
+ GgEaCDPAagE= +
+
+ 0 +
+ + 0 +
0
+ GgEaCDPAagE= +
+ + 4 + CORCOMPILE_IMPORT_FLAGS_PCODE + CORCOMPILE_IMPORT_TYPE_STUB_DISPATCH + 4 + 9304 + + + 0 +
268510280
+ FQQAAP////8= +
+
+ 10412 + + 2 + 0 + RT_Object + 0 + 0 + -1 + -1 + -1 + -1 + 4294967295 + 4294967295 + -1 + 0 + 0 + 0 + + + + 0 + 0 + 0 + 0 + + + 22 + 3244 + +
+ + 0 +
268510280
+ FQQAAP////8= +
+
+
+
+ + 10344 + 24 + + + 0x000027D8 + 0x000028B4 + 0x000027E0 + 0x000028B8 + 0x00002860 + 0x000028B4 + +
+
+ + 10372 + 10 + + +
+
+ + 10440 + 63 + + +
+
+ + 9288 + 16 + + +
+
+ + 10400 + 9 + + + GcInfoTransitions.GcInfoTransitions + .<Module> + +
+
+ + 10382 + 3 + + +
+
+ + 10504 + 22 + + +
+
+ + 3 + + + abc + GcInfoTransitions.GcInfoTransitions.abc(String) + false + GcInfoTransitions.GcInfoTransitions + 100663297 + 0 + + + + 1 + + 10200 + 0 + 10420 + 0 + + + + + + + Main + GcInfoTransitions.GcInfoTransitions.Main(String[]) + false + GcInfoTransitions.GcInfoTransitions + 100663298 + 1 + + + + 2 + + 10208 + 0 + 10424 + 0 + + + + + + + .ctor + GcInfoTransitions.GcInfoTransitions..ctor() + false + GcInfoTransitions.GcInfoTransitions + 100663299 + 2 + + + + 3 + + 10336 + 0 + 10420 + 0 + + + + + +
\ No newline at end of file diff --git a/src/coreclr/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Checked/GenericFunctions.xml b/src/coreclr/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Checked/GenericFunctions.xml new file mode 100644 index 0000000..4e37c5b --- /dev/null +++ b/src/coreclr/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Checked/GenericFunctions.xml @@ -0,0 +1,261 @@ + + + + GenericFunctions.ni.dll + true + I386 + 268500992 + +
+ + 8984 + 112 + RTR + 5395538 + 2 + 2 + 3 + +
+ + 8 +
+ + 9156 + 37 + + + CoreCLR 4.5.30319.0 __BUILDMACHINE__ + +
+
+ + 9096 + 60 + + + + 8 + CORCOMPILE_IMPORT_FLAGS_EAGER + CORCOMPILE_IMPORT_TYPE_UNKNOWN + 0 + 9284 + + + 0 +
0
+ GgEaEDPAagE= +
+
+ 0 +
+ + 0 +
0
+ GgEaEDPAagE= +
+ + 4 + CORCOMPILE_IMPORT_FLAGS_PCODE + CORCOMPILE_IMPORT_TYPE_UNKNOWN + 4 + 9312 + + + 0 +
268510288
+ HBIMEBEIAAA= +
+
+ 0 +
+ + 0 +
268510288
+ HBIMEBEIAAA= +
+ + 4 + CORCOMPILE_IMPORT_FLAGS_UNKNOWN + CORCOMPILE_IMPORT_TYPE_UNKNOWN + 0 + 10552 + + 0 + +
+
+
+ + 10440 + 40 + + + 0x0000288C + 0x00002920 + 0x00002894 + 0x00002924 + 0x000028A0 + 0x00002928 + 0x000028AC + 0x0000292E + 0x000028C0 + 0x00002932 + +
+
+ + 10484 + 14 + + +
+
+ + 10568 + 84 + + +
+
+ + 10512 + 15 + + + GenericFunctions.GenericFunctions + .<Module> + GenericFunctions.UserDefinedStruct + GenericFunctions.UserDefinedClass + +
+
+ + 10498 + 11 + + +
+
+ + 10652 + 41 + + +
+
+ + 5 + + + .ctor + GenericFunctions.UserDefinedStruct..ctor(Int32) + false + GenericFunctions.UserDefinedStruct + 100663297 + 0 + + + + 1 + + 10380 + 0 + 10528 + 0 + + + + + + + .ctor + GenericFunctions.UserDefinedClass..ctor(Int32) + false + GenericFunctions.UserDefinedClass + 100663298 + 1 + + + + 2 + + 10388 + 0 + 10532 + 0 + + + + + + + Main + GenericFunctions.GenericFunctions.Main(String[]) + false + GenericFunctions.GenericFunctions + 100663300 + 3 + + + 2 + 0 + + + + + + 4 + + 10412 + 0 + 10542 + 0 + + + + + + + .ctor + GenericFunctions.GenericFunctions..ctor() + false + GenericFunctions.GenericFunctions + 100663301 + 4 + + + + 5 + + 10432 + 0 + 10546 + 0 + + + + + + + GenericFunction + GenericFunctions.GenericFunctions.GenericFunction<__Canon, __Canon>(__Canon, __Canon) + true + GenericFunctions.GenericFunctions + 100663299 + 2 + + + + 3 + + 10400 + 0 + 10536 + 0 + + + + + +
\ No newline at end of file diff --git a/src/coreclr/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Checked/HelloWorld.xml b/src/coreclr/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Checked/HelloWorld.xml new file mode 100644 index 0000000..2f9bbef --- /dev/null +++ b/src/coreclr/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Checked/HelloWorld.xml @@ -0,0 +1,225 @@ + + + + HelloWorld.ni.dll + true + I386 + 268500992 + +
+ + 8952 + 124 + RTR + 5395538 + 2 + 2 + 3 + +
+ + 9 +
+ + 9136 + 37 + + + CoreCLR 4.5.30319.0 __BUILDMACHINE__ + +
+
+ + 9076 + 60 + + + + 8 + CORCOMPILE_IMPORT_FLAGS_EAGER + CORCOMPILE_IMPORT_TYPE_UNKNOWN + 0 + 9264 + + + 0 +
0
+ GgEaCDPAagI= +
+
+ 0 +
+ + 0 +
0
+ GgEaCDPAagI= +
+ + 4 + CORCOMPILE_IMPORT_FLAGS_UNKNOWN + CORCOMPILE_IMPORT_TYPE_STRING_HANDLE + 4 + 10188 + + 0 + + + 4 + CORCOMPILE_IMPORT_FLAGS_PCODE + CORCOMPILE_IMPORT_TYPE_STUB_DISPATCH + 4 + 9292 + + + 0 +
268510268
+ FQT/////EAE= +
+
+ 10172 + + 2 + 0 + RT_Object + 0 + 0 + -1 + -1 + -1 + -1 + 4294967295 + 4294967295 + -1 + 0 + 0 + 0 + + + + 0 + 0 + 0 + 0 + + + 22 + 3004 + +
+ + 0 +
268510268
+ FQT/////EAE= +
+
+
+
+ + 10124 + 16 + + + 0x00002770 + 0x000027C4 + 0x00002784 + 0x000027C8 + +
+
+ + 10144 + 10 + + +
+
+ + 10200 + 31 + + +
+
+ + 9276 + 16 + + +
+
+ + 10160 + 9 + + + HelloWorld.HelloWorld + .<Module> + +
+
+ + 10154 + 3 + + +
+
+ + 10232 + 13 + + +
+
+ + 2 + + + Main + HelloWorld.HelloWorld.Main(String[]) + false + HelloWorld.HelloWorld + 100663297 + 0 + + + 1 + 0 + + + + + + 1 + + 10096 + 0 + 10180 + 0 + + + + + + + .ctor + HelloWorld.HelloWorld..ctor() + false + HelloWorld.HelloWorld + 100663298 + 1 + + + + 2 + + 10116 + 0 + 10184 + 0 + + + + + +
\ No newline at end of file diff --git a/src/coreclr/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Checked/MultipleRuntimeFunctions.xml b/src/coreclr/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Checked/MultipleRuntimeFunctions.xml new file mode 100644 index 0000000..64ae247 --- /dev/null +++ b/src/coreclr/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Checked/MultipleRuntimeFunctions.xml @@ -0,0 +1,155 @@ + + + + MultipleRuntimeFunctions.ni.dll + true + I386 + 268500992 + +
+ + 9016 + 112 + RTR + 5395538 + 2 + 2 + 3 + +
+ + 8 +
+ + 9148 + 37 + + + CoreCLR 4.5.30319.0 __BUILDMACHINE__ + +
+
+ + 9128 + 20 + + + + 4 + CORCOMPILE_IMPORT_FLAGS_EAGER + CORCOMPILE_IMPORT_TYPE_UNKNOWN + 0 + 9276 + + + 0 +
0
+ GgEAAP////8= +
+
+ 0 +
+ + 0 +
0
+ GgEAAP////8= +
+
+
+
+ + 10032 + 16 + + + 0x00002720 + 0x0000275C + 0x00002728 + 0x0000275C + +
+
+ + 10052 + 8 + + +
+
+ + 10084 + 27 + + +
+
+ + 10064 + 9 + + + MultipleRuntimeFunctions.MultipleRuntimeFunctions + .<Module> + +
+
+ + 10060 + 3 + + +
+
+ + 10112 + 13 + + +
+
+ + 2 + + + Main + MultipleRuntimeFunctions.MultipleRuntimeFunctions.Main(String[]) + false + MultipleRuntimeFunctions.MultipleRuntimeFunctions + 100663297 + 0 + + + + 1 + + 10016 + 0 + 10076 + 0 + + + + + + + .ctor + MultipleRuntimeFunctions.MultipleRuntimeFunctions..ctor() + false + MultipleRuntimeFunctions.MultipleRuntimeFunctions + 100663298 + 1 + + + + 2 + + 10024 + 0 + 10076 + 0 + + + + + +
\ No newline at end of file diff --git a/src/coreclr/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Release/GcInfoTransitions.xml b/src/coreclr/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Release/GcInfoTransitions.xml new file mode 100644 index 0000000..a9ede31 --- /dev/null +++ b/src/coreclr/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Release/GcInfoTransitions.xml @@ -0,0 +1,233 @@ + + + + GcInfoTransitions.ni.dll + true + I386 + 268500992 + +
+ + 8984 + 124 + RTR + 5395538 + 2 + 2 + 3 + +
+ + 9 +
+ + 9148 + 37 + + + CoreCLR 4.5.30319.0 __BUILDMACHINE__ + +
+
+ + 9108 + 40 + + + + 8 + CORCOMPILE_IMPORT_FLAGS_EAGER + CORCOMPILE_IMPORT_TYPE_UNKNOWN + 0 + 9276 + + + 0 +
0
+ GgEaCDPAagE= +
+
+ 0 +
+ + 0 +
0
+ GgEaCDPAagE= +
+ + 4 + CORCOMPILE_IMPORT_FLAGS_PCODE + CORCOMPILE_IMPORT_TYPE_STUB_DISPATCH + 4 + 9304 + + + 0 +
268510280
+ FQQAAP////8= +
+
+ 10412 + + 2 + 0 + RT_Object + 0 + 0 + -1 + -1 + -1 + -1 + 4294967295 + 4294967295 + -1 + 0 + 0 + 0 + + + + 0 + 0 + 0 + 0 + + + 22 + 3244 + +
+ + 0 +
268510280
+ FQQAAP////8= +
+
+
+
+ + 10344 + 24 + + + 0x000027D8 + 0x000028B4 + 0x000027E0 + 0x000028B8 + 0x00002860 + 0x000028B4 + +
+
+ + 10372 + 10 + + +
+
+ + 10440 + 63 + + +
+
+ + 9288 + 16 + + +
+
+ + 10400 + 9 + + + GcInfoTransitions.GcInfoTransitions + .<Module> + +
+
+ + 10382 + 3 + + +
+
+ + 10504 + 22 + + +
+
+ + 3 + + + abc + GcInfoTransitions.GcInfoTransitions.abc(String) + false + GcInfoTransitions.GcInfoTransitions + 100663297 + 0 + + + + 1 + + 10200 + 0 + 10420 + 0 + + + + + + + Main + GcInfoTransitions.GcInfoTransitions.Main(String[]) + false + GcInfoTransitions.GcInfoTransitions + 100663298 + 1 + + + + 2 + + 10208 + 0 + 10424 + 0 + + + + + + + .ctor + GcInfoTransitions.GcInfoTransitions..ctor() + false + GcInfoTransitions.GcInfoTransitions + 100663299 + 2 + + + + 3 + + 10336 + 0 + 10420 + 0 + + + + + +
\ No newline at end of file diff --git a/src/coreclr/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Release/GenericFunctions.xml b/src/coreclr/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Release/GenericFunctions.xml new file mode 100644 index 0000000..4e37c5b --- /dev/null +++ b/src/coreclr/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Release/GenericFunctions.xml @@ -0,0 +1,261 @@ + + + + GenericFunctions.ni.dll + true + I386 + 268500992 + +
+ + 8984 + 112 + RTR + 5395538 + 2 + 2 + 3 + +
+ + 8 +
+ + 9156 + 37 + + + CoreCLR 4.5.30319.0 __BUILDMACHINE__ + +
+
+ + 9096 + 60 + + + + 8 + CORCOMPILE_IMPORT_FLAGS_EAGER + CORCOMPILE_IMPORT_TYPE_UNKNOWN + 0 + 9284 + + + 0 +
0
+ GgEaEDPAagE= +
+
+ 0 +
+ + 0 +
0
+ GgEaEDPAagE= +
+ + 4 + CORCOMPILE_IMPORT_FLAGS_PCODE + CORCOMPILE_IMPORT_TYPE_UNKNOWN + 4 + 9312 + + + 0 +
268510288
+ HBIMEBEIAAA= +
+
+ 0 +
+ + 0 +
268510288
+ HBIMEBEIAAA= +
+ + 4 + CORCOMPILE_IMPORT_FLAGS_UNKNOWN + CORCOMPILE_IMPORT_TYPE_UNKNOWN + 0 + 10552 + + 0 + +
+
+
+ + 10440 + 40 + + + 0x0000288C + 0x00002920 + 0x00002894 + 0x00002924 + 0x000028A0 + 0x00002928 + 0x000028AC + 0x0000292E + 0x000028C0 + 0x00002932 + +
+
+ + 10484 + 14 + + +
+
+ + 10568 + 84 + + +
+
+ + 10512 + 15 + + + GenericFunctions.GenericFunctions + .<Module> + GenericFunctions.UserDefinedStruct + GenericFunctions.UserDefinedClass + +
+
+ + 10498 + 11 + + +
+
+ + 10652 + 41 + + +
+
+ + 5 + + + .ctor + GenericFunctions.UserDefinedStruct..ctor(Int32) + false + GenericFunctions.UserDefinedStruct + 100663297 + 0 + + + + 1 + + 10380 + 0 + 10528 + 0 + + + + + + + .ctor + GenericFunctions.UserDefinedClass..ctor(Int32) + false + GenericFunctions.UserDefinedClass + 100663298 + 1 + + + + 2 + + 10388 + 0 + 10532 + 0 + + + + + + + Main + GenericFunctions.GenericFunctions.Main(String[]) + false + GenericFunctions.GenericFunctions + 100663300 + 3 + + + 2 + 0 + + + + + + 4 + + 10412 + 0 + 10542 + 0 + + + + + + + .ctor + GenericFunctions.GenericFunctions..ctor() + false + GenericFunctions.GenericFunctions + 100663301 + 4 + + + + 5 + + 10432 + 0 + 10546 + 0 + + + + + + + GenericFunction + GenericFunctions.GenericFunctions.GenericFunction<__Canon, __Canon>(__Canon, __Canon) + true + GenericFunctions.GenericFunctions + 100663299 + 2 + + + + 3 + + 10400 + 0 + 10536 + 0 + + + + + +
\ No newline at end of file diff --git a/src/coreclr/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Release/HelloWorld.xml b/src/coreclr/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Release/HelloWorld.xml new file mode 100644 index 0000000..2f9bbef --- /dev/null +++ b/src/coreclr/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Release/HelloWorld.xml @@ -0,0 +1,225 @@ + + + + HelloWorld.ni.dll + true + I386 + 268500992 + +
+ + 8952 + 124 + RTR + 5395538 + 2 + 2 + 3 + +
+ + 9 +
+ + 9136 + 37 + + + CoreCLR 4.5.30319.0 __BUILDMACHINE__ + +
+
+ + 9076 + 60 + + + + 8 + CORCOMPILE_IMPORT_FLAGS_EAGER + CORCOMPILE_IMPORT_TYPE_UNKNOWN + 0 + 9264 + + + 0 +
0
+ GgEaCDPAagI= +
+
+ 0 +
+ + 0 +
0
+ GgEaCDPAagI= +
+ + 4 + CORCOMPILE_IMPORT_FLAGS_UNKNOWN + CORCOMPILE_IMPORT_TYPE_STRING_HANDLE + 4 + 10188 + + 0 + + + 4 + CORCOMPILE_IMPORT_FLAGS_PCODE + CORCOMPILE_IMPORT_TYPE_STUB_DISPATCH + 4 + 9292 + + + 0 +
268510268
+ FQT/////EAE= +
+
+ 10172 + + 2 + 0 + RT_Object + 0 + 0 + -1 + -1 + -1 + -1 + 4294967295 + 4294967295 + -1 + 0 + 0 + 0 + + + + 0 + 0 + 0 + 0 + + + 22 + 3004 + +
+ + 0 +
268510268
+ FQT/////EAE= +
+
+
+
+ + 10124 + 16 + + + 0x00002770 + 0x000027C4 + 0x00002784 + 0x000027C8 + +
+
+ + 10144 + 10 + + +
+
+ + 10200 + 31 + + +
+
+ + 9276 + 16 + + +
+
+ + 10160 + 9 + + + HelloWorld.HelloWorld + .<Module> + +
+
+ + 10154 + 3 + + +
+
+ + 10232 + 13 + + +
+
+ + 2 + + + Main + HelloWorld.HelloWorld.Main(String[]) + false + HelloWorld.HelloWorld + 100663297 + 0 + + + 1 + 0 + + + + + + 1 + + 10096 + 0 + 10180 + 0 + + + + + + + .ctor + HelloWorld.HelloWorld..ctor() + false + HelloWorld.HelloWorld + 100663298 + 1 + + + + 2 + + 10116 + 0 + 10184 + 0 + + + + + +
\ No newline at end of file diff --git a/src/coreclr/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Release/MultipleRuntimeFunctions.xml b/src/coreclr/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Release/MultipleRuntimeFunctions.xml new file mode 100644 index 0000000..64ae247 --- /dev/null +++ b/src/coreclr/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Release/MultipleRuntimeFunctions.xml @@ -0,0 +1,155 @@ + + + + MultipleRuntimeFunctions.ni.dll + true + I386 + 268500992 + +
+ + 9016 + 112 + RTR + 5395538 + 2 + 2 + 3 + +
+ + 8 +
+ + 9148 + 37 + + + CoreCLR 4.5.30319.0 __BUILDMACHINE__ + +
+
+ + 9128 + 20 + + + + 4 + CORCOMPILE_IMPORT_FLAGS_EAGER + CORCOMPILE_IMPORT_TYPE_UNKNOWN + 0 + 9276 + + + 0 +
0
+ GgEAAP////8= +
+
+ 0 +
+ + 0 +
0
+ GgEAAP////8= +
+
+
+
+ + 10032 + 16 + + + 0x00002720 + 0x0000275C + 0x00002728 + 0x0000275C + +
+
+ + 10052 + 8 + + +
+
+ + 10084 + 27 + + +
+
+ + 10064 + 9 + + + MultipleRuntimeFunctions.MultipleRuntimeFunctions + .<Module> + +
+
+ + 10060 + 3 + + +
+
+ + 10112 + 13 + + +
+
+ + 2 + + + Main + MultipleRuntimeFunctions.MultipleRuntimeFunctions.Main(String[]) + false + MultipleRuntimeFunctions.MultipleRuntimeFunctions + 100663297 + 0 + + + + 1 + + 10016 + 0 + 10076 + 0 + + + + + + + .ctor + MultipleRuntimeFunctions.MultipleRuntimeFunctions..ctor() + false + MultipleRuntimeFunctions.MultipleRuntimeFunctions + 100663298 + 1 + + + + 2 + + 10024 + 0 + 10076 + 0 + + + + + +
\ No newline at end of file diff --git a/src/coreclr/tests/testsUnsupportedOutsideWindows.txt b/src/coreclr/tests/testsUnsupportedOutsideWindows.txt index e9a7c66..b285680 100644 --- a/src/coreclr/tests/testsUnsupportedOutsideWindows.txt +++ b/src/coreclr/tests/testsUnsupportedOutsideWindows.txt @@ -338,6 +338,7 @@ JIT/Regression/VS-ia64-JIT/V1.2-M02/b12011/b12011/b12011.sh JIT/Regression/VS-ia64-JIT/V2.0-Beta2/b410474/b410474/b410474.sh JIT/Regression/VS-ia64-JIT/V2.0-RTM/b286991/b286991/b286991.sh managed/Compilation/Compilation/Compilation.sh +readytorun/r2rdump/R2RDumpTest/R2RDumpTest.sh Regressions/coreclr/0584/Test584/Test584.sh Interop/SizeConst/SizeConstTest/SizeConstTest.sh tracing/eventsource/eventpipeandetw/eventpipeandetw/eventpipeandetw.sh