diff --git a/docs/design/datacontracts/ExecutionManager.md b/docs/design/datacontracts/ExecutionManager.md index da753bb8b08a43..84ddc5d20dcdfc 100644 --- a/docs/design/datacontracts/ExecutionManager.md +++ b/docs/design/datacontracts/ExecutionManager.md @@ -206,7 +206,7 @@ Data descriptors used: | `ReadyToRunHeader` | `MinorVersion` | ReadyToRun minor version | | `ImageDataDirectory` | `VirtualAddress` | Virtual address of the image data directory | | `ImageDataDirectory` | `Size` | Size of the data | -| `RuntimeFunction` | `BeginAddress` | Begin address of the function | +| `RuntimeFunction` | `BeginAddress` | Begin address of the function. On ARM32, bit 0 (the Thumb bit) is set. | | `RuntimeFunction` | `EndAddress` | End address of the function. Only exists on some platforms | | `RuntimeFunction` | `UnwindData` | Pointer to the unwind info for the function | | `HashMap` | `Buckets` | Pointer to the buckets of a `HashMap` | diff --git a/src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.cs b/src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.cs index 3fb14042e32419..4a460e6a240476 100644 --- a/src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.cs +++ b/src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.cs @@ -260,7 +260,8 @@ TargetPointer IExecutionManager.GetFuncletStartAddress(CodeBlockHandle codeInfoH // TODO(cdac): EXCEPTION_DATA_SUPPORTS_FUNCTION_FRAGMENTS, implement iterating over fragments until finding // non-fragment RuntimeFunction - return range.Data.RangeBegin + runtimeFunction.BeginAddress; + return CodePointerUtils.AddressFromCodePointer( + new TargetCodePointer(range.Data.RangeBegin + runtimeFunction.BeginAddress), _target); } void IExecutionManager.GetMethodRegionInfo(CodeBlockHandle codeInfoHandle, out uint hotSize, out TargetPointer coldStart, out uint coldSize)