diff options
13 files changed, 233 insertions, 29 deletions
diff --git a/src/tools/r2rdump/Amd64/UnwindInfo.cs b/src/tools/r2rdump/Amd64/UnwindInfo.cs index 4f7bb45ef0..1bc8308ca6 100644 --- a/src/tools/r2rdump/Amd64/UnwindInfo.cs +++ b/src/tools/r2rdump/Amd64/UnwindInfo.cs @@ -62,7 +62,7 @@ namespace R2RDump.Amd64 } } - public struct UnwindInfo : BaseUnwindInfo + public class UnwindInfo : BaseUnwindInfo { private const int _sizeofUnwindCode = 2; private const int _offsetofUnwindCode = 4; @@ -75,7 +75,8 @@ namespace R2RDump.Amd64 public byte FrameOffset { get; set; } //4 bits public UnwindCode[] UnwindCode { get; set; } public uint PersonalityRoutineRVA { get; set; } - public int Size { get; set; } + + public UnwindInfo() { } public UnwindInfo(byte[] image, int offset) { diff --git a/src/tools/r2rdump/NativeReader.cs b/src/tools/r2rdump/NativeReader.cs index 5839580d03..c55d48ba55 100644 --- a/src/tools/r2rdump/NativeReader.cs +++ b/src/tools/r2rdump/NativeReader.cs @@ -304,5 +304,23 @@ namespace R2RDump } return data; } + + /// <summary> + /// Based on decodeUnsigned in gcdecoder.cpp, used by the x86 gcdump and unwindinfo + /// </summary> + public static uint DecodeUnsignedGc(byte[] image, ref int start) + { + int size = 1; + byte data = image[start++]; + uint value = (uint)data & 0x7f; + while ((data & 0x80) != 0) + { + size++; + data = image[start++]; + value <<= 7; + value += (uint)data & 0x7f; + } + return value; + } } } diff --git a/src/tools/r2rdump/R2RMethod.cs b/src/tools/r2rdump/R2RMethod.cs index 5cd8c3a2e8..788ebbb2e8 100644 --- a/src/tools/r2rdump/R2RMethod.cs +++ b/src/tools/r2rdump/R2RMethod.cs @@ -13,9 +13,9 @@ using System.Xml.Serialization; namespace R2RDump { - public interface BaseUnwindInfo + public abstract class BaseUnwindInfo { - + public int Size { get; set; } } public class RuntimeFunction @@ -67,6 +67,10 @@ namespace R2RDump { Size = endRva - startRva; } + else if (unwindInfo is x86.UnwindInfo) + { + Size = (int)((x86.UnwindInfo)unwindInfo).FunctionLength; + } else if (gcInfo != null) { Size = gcInfo.CodeLength; diff --git a/src/tools/r2rdump/R2RReader.cs b/src/tools/r2rdump/R2RReader.cs index 9b2940d671..25568b0999 100644 --- a/src/tools/r2rdump/R2RReader.cs +++ b/src/tools/r2rdump/R2RReader.cs @@ -306,7 +306,15 @@ namespace R2RDump unwindInfo = new Amd64.UnwindInfo(Image, unwindOffset); if (isEntryPoint[runtimeFunctionId]) { - gcInfo = new GcInfo(Image, unwindOffset + ((Amd64.UnwindInfo)unwindInfo).Size, Machine, R2RHeader.MajorVersion); + gcInfo = new GcInfo(Image, unwindOffset + unwindInfo.Size, Machine, R2RHeader.MajorVersion); + } + } + else if (Machine == Machine.I386) + { + unwindInfo = new x86.UnwindInfo(Image, unwindOffset); + if (isEntryPoint[runtimeFunctionId]) + { + //gcInfo = new GcInfo(Image, unwindOffset + unwindInfo.Size, Machine, R2RHeader.MajorVersion); } } diff --git a/src/tools/r2rdump/x86/UnwindInfo.cs b/src/tools/r2rdump/x86/UnwindInfo.cs new file mode 100644 index 0000000000..7f617f0704 --- /dev/null +++ b/src/tools/r2rdump/x86/UnwindInfo.cs @@ -0,0 +1,29 @@ +// 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.Text; +using System.Xml.Serialization; + +namespace R2RDump.x86 +{ + public class UnwindInfo : BaseUnwindInfo + { + public uint FunctionLength { get; set; } + + public UnwindInfo() { } + + public UnwindInfo(byte[] image, int offset) + { + FunctionLength = NativeReader.DecodeUnsignedGc(image, ref offset); + Size = sizeof(int); + } + + public override string ToString() + { + StringBuilder sb = new StringBuilder(); + sb.AppendLine($"\tFunctionLength: {FunctionLength}"); + return sb.ToString(); + } + } +} diff --git a/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Checked/GcInfoTransitions.xml b/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Checked/GcInfoTransitions.xml index a9ede3175e..eb2dc12885 100644 --- a/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Checked/GcInfoTransitions.xml +++ b/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Checked/GcInfoTransitions.xml @@ -180,10 +180,16 @@ <MethodRid>1</MethodRid> <RuntimeFunction xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="0"> <StartAddress>10200</StartAddress> - <Size>0</Size> + <Size>6</Size> <UnwindRVA>10420</UnwindRVA> <CodeOffset>0</CodeOffset> </RuntimeFunction> + <UnwindInfo> + <UnwindInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Size>4</Size> + <FunctionLength>6</FunctionLength> + </UnwindInfo> + </UnwindInfo> </RuntimeFunction> </RuntimeFunctions> </Method> @@ -201,10 +207,16 @@ <MethodRid>2</MethodRid> <RuntimeFunction xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="1"> <StartAddress>10208</StartAddress> - <Size>0</Size> + <Size>127</Size> <UnwindRVA>10424</UnwindRVA> <CodeOffset>0</CodeOffset> </RuntimeFunction> + <UnwindInfo> + <UnwindInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Size>4</Size> + <FunctionLength>127</FunctionLength> + </UnwindInfo> + </UnwindInfo> </RuntimeFunction> </RuntimeFunctions> </Method> @@ -222,10 +234,16 @@ <MethodRid>3</MethodRid> <RuntimeFunction xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="2"> <StartAddress>10336</StartAddress> - <Size>0</Size> + <Size>6</Size> <UnwindRVA>10420</UnwindRVA> <CodeOffset>0</CodeOffset> </RuntimeFunction> + <UnwindInfo> + <UnwindInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Size>4</Size> + <FunctionLength>6</FunctionLength> + </UnwindInfo> + </UnwindInfo> </RuntimeFunction> </RuntimeFunctions> </Method> diff --git a/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Checked/GenericFunctions.xml b/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Checked/GenericFunctions.xml index 4e37c5b60a..119e0c4756 100644 --- a/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Checked/GenericFunctions.xml +++ b/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Checked/GenericFunctions.xml @@ -160,10 +160,16 @@ <MethodRid>1</MethodRid> <RuntimeFunction xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="0"> <StartAddress>10380</StartAddress> - <Size>0</Size> + <Size>8</Size> <UnwindRVA>10528</UnwindRVA> <CodeOffset>0</CodeOffset> </RuntimeFunction> + <UnwindInfo> + <UnwindInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Size>4</Size> + <FunctionLength>8</FunctionLength> + </UnwindInfo> + </UnwindInfo> </RuntimeFunction> </RuntimeFunctions> </Method> @@ -181,10 +187,16 @@ <MethodRid>2</MethodRid> <RuntimeFunction xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="1"> <StartAddress>10388</StartAddress> - <Size>0</Size> + <Size>9</Size> <UnwindRVA>10532</UnwindRVA> <CodeOffset>0</CodeOffset> </RuntimeFunction> + <UnwindInfo> + <UnwindInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Size>4</Size> + <FunctionLength>9</FunctionLength> + </UnwindInfo> + </UnwindInfo> </RuntimeFunction> </RuntimeFunctions> </Method> @@ -208,10 +220,16 @@ <MethodRid>4</MethodRid> <RuntimeFunction xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="3"> <StartAddress>10412</StartAddress> - <Size>0</Size> + <Size>19</Size> <UnwindRVA>10542</UnwindRVA> <CodeOffset>0</CodeOffset> </RuntimeFunction> + <UnwindInfo> + <UnwindInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Size>4</Size> + <FunctionLength>19</FunctionLength> + </UnwindInfo> + </UnwindInfo> </RuntimeFunction> </RuntimeFunctions> </Method> @@ -229,10 +247,16 @@ <MethodRid>5</MethodRid> <RuntimeFunction xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="4"> <StartAddress>10432</StartAddress> - <Size>0</Size> + <Size>6</Size> <UnwindRVA>10546</UnwindRVA> <CodeOffset>0</CodeOffset> </RuntimeFunction> + <UnwindInfo> + <UnwindInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Size>4</Size> + <FunctionLength>6</FunctionLength> + </UnwindInfo> + </UnwindInfo> </RuntimeFunction> </RuntimeFunctions> </Method> @@ -250,10 +274,16 @@ <MethodRid>3</MethodRid> <RuntimeFunction xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="2"> <StartAddress>10400</StartAddress> - <Size>0</Size> + <Size>10</Size> <UnwindRVA>10536</UnwindRVA> <CodeOffset>0</CodeOffset> </RuntimeFunction> + <UnwindInfo> + <UnwindInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Size>4</Size> + <FunctionLength>10</FunctionLength> + </UnwindInfo> + </UnwindInfo> </RuntimeFunction> </RuntimeFunctions> </Method> diff --git a/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Checked/HelloWorld.xml b/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Checked/HelloWorld.xml index 2f9bbef1a4..88feff4b53 100644 --- a/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Checked/HelloWorld.xml +++ b/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Checked/HelloWorld.xml @@ -193,10 +193,16 @@ <MethodRid>1</MethodRid> <RuntimeFunction xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="0"> <StartAddress>10096</StartAddress> - <Size>0</Size> + <Size>20</Size> <UnwindRVA>10180</UnwindRVA> <CodeOffset>0</CodeOffset> </RuntimeFunction> + <UnwindInfo> + <UnwindInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Size>4</Size> + <FunctionLength>20</FunctionLength> + </UnwindInfo> + </UnwindInfo> </RuntimeFunction> </RuntimeFunctions> </Method> @@ -214,10 +220,16 @@ <MethodRid>2</MethodRid> <RuntimeFunction xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="1"> <StartAddress>10116</StartAddress> - <Size>0</Size> + <Size>6</Size> <UnwindRVA>10184</UnwindRVA> <CodeOffset>0</CodeOffset> </RuntimeFunction> + <UnwindInfo> + <UnwindInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Size>4</Size> + <FunctionLength>6</FunctionLength> + </UnwindInfo> + </UnwindInfo> </RuntimeFunction> </RuntimeFunctions> </Method> diff --git a/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Checked/MultipleRuntimeFunctions.xml b/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Checked/MultipleRuntimeFunctions.xml index 64ae247527..44d42f447a 100644 --- a/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Checked/MultipleRuntimeFunctions.xml +++ b/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Checked/MultipleRuntimeFunctions.xml @@ -123,10 +123,16 @@ <MethodRid>1</MethodRid> <RuntimeFunction xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="0"> <StartAddress>10016</StartAddress> - <Size>0</Size> + <Size>6</Size> <UnwindRVA>10076</UnwindRVA> <CodeOffset>0</CodeOffset> </RuntimeFunction> + <UnwindInfo> + <UnwindInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Size>4</Size> + <FunctionLength>6</FunctionLength> + </UnwindInfo> + </UnwindInfo> </RuntimeFunction> </RuntimeFunctions> </Method> @@ -144,10 +150,16 @@ <MethodRid>2</MethodRid> <RuntimeFunction xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="1"> <StartAddress>10024</StartAddress> - <Size>0</Size> + <Size>6</Size> <UnwindRVA>10076</UnwindRVA> <CodeOffset>0</CodeOffset> </RuntimeFunction> + <UnwindInfo> + <UnwindInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Size>4</Size> + <FunctionLength>6</FunctionLength> + </UnwindInfo> + </UnwindInfo> </RuntimeFunction> </RuntimeFunctions> </Method> diff --git a/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Release/GcInfoTransitions.xml b/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Release/GcInfoTransitions.xml index a9ede3175e..eb2dc12885 100644 --- a/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Release/GcInfoTransitions.xml +++ b/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Release/GcInfoTransitions.xml @@ -180,10 +180,16 @@ <MethodRid>1</MethodRid> <RuntimeFunction xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="0"> <StartAddress>10200</StartAddress> - <Size>0</Size> + <Size>6</Size> <UnwindRVA>10420</UnwindRVA> <CodeOffset>0</CodeOffset> </RuntimeFunction> + <UnwindInfo> + <UnwindInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Size>4</Size> + <FunctionLength>6</FunctionLength> + </UnwindInfo> + </UnwindInfo> </RuntimeFunction> </RuntimeFunctions> </Method> @@ -201,10 +207,16 @@ <MethodRid>2</MethodRid> <RuntimeFunction xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="1"> <StartAddress>10208</StartAddress> - <Size>0</Size> + <Size>127</Size> <UnwindRVA>10424</UnwindRVA> <CodeOffset>0</CodeOffset> </RuntimeFunction> + <UnwindInfo> + <UnwindInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Size>4</Size> + <FunctionLength>127</FunctionLength> + </UnwindInfo> + </UnwindInfo> </RuntimeFunction> </RuntimeFunctions> </Method> @@ -222,10 +234,16 @@ <MethodRid>3</MethodRid> <RuntimeFunction xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="2"> <StartAddress>10336</StartAddress> - <Size>0</Size> + <Size>6</Size> <UnwindRVA>10420</UnwindRVA> <CodeOffset>0</CodeOffset> </RuntimeFunction> + <UnwindInfo> + <UnwindInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Size>4</Size> + <FunctionLength>6</FunctionLength> + </UnwindInfo> + </UnwindInfo> </RuntimeFunction> </RuntimeFunctions> </Method> diff --git a/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Release/GenericFunctions.xml b/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Release/GenericFunctions.xml index 4e37c5b60a..119e0c4756 100644 --- a/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Release/GenericFunctions.xml +++ b/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Release/GenericFunctions.xml @@ -160,10 +160,16 @@ <MethodRid>1</MethodRid> <RuntimeFunction xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="0"> <StartAddress>10380</StartAddress> - <Size>0</Size> + <Size>8</Size> <UnwindRVA>10528</UnwindRVA> <CodeOffset>0</CodeOffset> </RuntimeFunction> + <UnwindInfo> + <UnwindInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Size>4</Size> + <FunctionLength>8</FunctionLength> + </UnwindInfo> + </UnwindInfo> </RuntimeFunction> </RuntimeFunctions> </Method> @@ -181,10 +187,16 @@ <MethodRid>2</MethodRid> <RuntimeFunction xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="1"> <StartAddress>10388</StartAddress> - <Size>0</Size> + <Size>9</Size> <UnwindRVA>10532</UnwindRVA> <CodeOffset>0</CodeOffset> </RuntimeFunction> + <UnwindInfo> + <UnwindInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Size>4</Size> + <FunctionLength>9</FunctionLength> + </UnwindInfo> + </UnwindInfo> </RuntimeFunction> </RuntimeFunctions> </Method> @@ -208,10 +220,16 @@ <MethodRid>4</MethodRid> <RuntimeFunction xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="3"> <StartAddress>10412</StartAddress> - <Size>0</Size> + <Size>19</Size> <UnwindRVA>10542</UnwindRVA> <CodeOffset>0</CodeOffset> </RuntimeFunction> + <UnwindInfo> + <UnwindInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Size>4</Size> + <FunctionLength>19</FunctionLength> + </UnwindInfo> + </UnwindInfo> </RuntimeFunction> </RuntimeFunctions> </Method> @@ -229,10 +247,16 @@ <MethodRid>5</MethodRid> <RuntimeFunction xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="4"> <StartAddress>10432</StartAddress> - <Size>0</Size> + <Size>6</Size> <UnwindRVA>10546</UnwindRVA> <CodeOffset>0</CodeOffset> </RuntimeFunction> + <UnwindInfo> + <UnwindInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Size>4</Size> + <FunctionLength>6</FunctionLength> + </UnwindInfo> + </UnwindInfo> </RuntimeFunction> </RuntimeFunctions> </Method> @@ -250,10 +274,16 @@ <MethodRid>3</MethodRid> <RuntimeFunction xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="2"> <StartAddress>10400</StartAddress> - <Size>0</Size> + <Size>10</Size> <UnwindRVA>10536</UnwindRVA> <CodeOffset>0</CodeOffset> </RuntimeFunction> + <UnwindInfo> + <UnwindInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Size>4</Size> + <FunctionLength>10</FunctionLength> + </UnwindInfo> + </UnwindInfo> </RuntimeFunction> </RuntimeFunctions> </Method> diff --git a/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Release/HelloWorld.xml b/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Release/HelloWorld.xml index 2f9bbef1a4..88feff4b53 100644 --- a/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Release/HelloWorld.xml +++ b/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Release/HelloWorld.xml @@ -193,10 +193,16 @@ <MethodRid>1</MethodRid> <RuntimeFunction xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="0"> <StartAddress>10096</StartAddress> - <Size>0</Size> + <Size>20</Size> <UnwindRVA>10180</UnwindRVA> <CodeOffset>0</CodeOffset> </RuntimeFunction> + <UnwindInfo> + <UnwindInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Size>4</Size> + <FunctionLength>20</FunctionLength> + </UnwindInfo> + </UnwindInfo> </RuntimeFunction> </RuntimeFunctions> </Method> @@ -214,10 +220,16 @@ <MethodRid>2</MethodRid> <RuntimeFunction xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="1"> <StartAddress>10116</StartAddress> - <Size>0</Size> + <Size>6</Size> <UnwindRVA>10184</UnwindRVA> <CodeOffset>0</CodeOffset> </RuntimeFunction> + <UnwindInfo> + <UnwindInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Size>4</Size> + <FunctionLength>6</FunctionLength> + </UnwindInfo> + </UnwindInfo> </RuntimeFunction> </RuntimeFunctions> </Method> diff --git a/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Release/MultipleRuntimeFunctions.xml b/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Release/MultipleRuntimeFunctions.xml index 64ae247527..44d42f447a 100644 --- a/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Release/MultipleRuntimeFunctions.xml +++ b/tests/src/readytorun/r2rdump/files/Windows_NT.x86.Release/MultipleRuntimeFunctions.xml @@ -123,10 +123,16 @@ <MethodRid>1</MethodRid> <RuntimeFunction xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="0"> <StartAddress>10016</StartAddress> - <Size>0</Size> + <Size>6</Size> <UnwindRVA>10076</UnwindRVA> <CodeOffset>0</CodeOffset> </RuntimeFunction> + <UnwindInfo> + <UnwindInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Size>4</Size> + <FunctionLength>6</FunctionLength> + </UnwindInfo> + </UnwindInfo> </RuntimeFunction> </RuntimeFunctions> </Method> @@ -144,10 +150,16 @@ <MethodRid>2</MethodRid> <RuntimeFunction xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Index="1"> <StartAddress>10024</StartAddress> - <Size>0</Size> + <Size>6</Size> <UnwindRVA>10076</UnwindRVA> <CodeOffset>0</CodeOffset> </RuntimeFunction> + <UnwindInfo> + <UnwindInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <Size>4</Size> + <FunctionLength>6</FunctionLength> + </UnwindInfo> + </UnwindInfo> </RuntimeFunction> </RuntimeFunctions> </Method> |