diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json
index e39fc127a1123f..ec9168a7cffca9 100644
--- a/.config/dotnet-tools.json
+++ b/.config/dotnet-tools.json
@@ -15,7 +15,7 @@
]
},
"microsoft.dotnet.xharness.cli": {
- "version": "1.0.0-prerelease.21404.1",
+ "version": "6.0.0-prerelease.24224.2",
"commands": [
"xharness"
]
diff --git a/.github/PULL_REQUEST_TEMPLATE/servicing_pull_request_template.md b/.github/PULL_REQUEST_TEMPLATE/servicing_pull_request_template.md
index 6fd461e6fc3690..9a748a085a20f1 100644
--- a/.github/PULL_REQUEST_TEMPLATE/servicing_pull_request_template.md
+++ b/.github/PULL_REQUEST_TEMPLATE/servicing_pull_request_template.md
@@ -21,3 +21,7 @@ main PR
# Risk
+
+# Package authoring signed off?
+
+IMPORTANT: If this change touches code that ships in a NuGet package, please make certain that you have added any necessary [package authoring](../../docs/project/library-servicing.md) and gotten it explicitly reviewed.
diff --git a/.github/workflows/backport.yml b/.github/workflows/backport.yml
index 9699f4db66961c..1bffaf03351228 100644
--- a/.github/workflows/backport.yml
+++ b/.github/workflows/backport.yml
@@ -52,3 +52,9 @@ jobs:
## Testing
## Risk
+
+ **IMPORTANT**: If this backport is for a servicing release, please verify that:
+
+ - The PR target branch is `release/X.0-staging`, not `release/X.0`.
+
+ - If the change touches code that ships in a NuGet package, you have added the necessary [package authoring](https://github.com/dotnet/runtime/blob/release/7.0/docs/project/library-servicing.md) and gotten it explicitly reviewed.
\ No newline at end of file
diff --git a/.github/workflows/check-service-labels.yml b/.github/workflows/check-service-labels.yml
new file mode 100644
index 00000000000000..5261cc165ee128
--- /dev/null
+++ b/.github/workflows/check-service-labels.yml
@@ -0,0 +1,24 @@
+name: check-service-labels
+
+permissions:
+ pull-requests: read
+
+on:
+ pull_request:
+ types: [opened, edited, reopened, labeled, unlabeled, synchronize]
+ branches:
+ - 'release/**'
+
+jobs:
+ check-labels:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Check 'Servicing-approved' label
+ run: |
+ echo "Merging permission is enabled for servicing PRs when the `Servicing-approved` label is applied."
+ if [ "${{ contains(github.event.pull_request.labels.*.name, 'Servicing-approved') }}" = "true" ]; then
+ exit 0
+ else
+ echo "::error:: 'Servicing-approved' label not applied to the PR yet. More information: https://github.com/dotnet/runtime/blob/main/docs/project/library-servicing.md#approval-process"
+ exit 1
+ fi
diff --git a/.github/workflows/inter-branch-merge-flow.yml b/.github/workflows/inter-branch-merge-flow.yml
new file mode 100644
index 00000000000000..20246c14fc5851
--- /dev/null
+++ b/.github/workflows/inter-branch-merge-flow.yml
@@ -0,0 +1,13 @@
+name: Inter-branch merge workflow
+on:
+ push:
+ branches:
+ - release/**
+
+permissions:
+ contents: write
+ pull-requests: write
+
+jobs:
+ Merge:
+ uses: dotnet/arcade/.github/workflows/inter-branch-merge-base.yml@main
\ No newline at end of file
diff --git a/Build.proj b/Build.proj
index bff94b97a7a799..5f47e869fb6e42 100644
--- a/Build.proj
+++ b/Build.proj
@@ -10,7 +10,7 @@
-
+
$(NetCoreAppCurrentIdentifier),Version=v$(NetCoreAppToolCurrentVersion)
Microsoft.NETCore.App
.NET $(NetCoreAppCurrentVersion)
+
+ net472
+
+
@@ -66,13 +70,13 @@
$([MSBuild]::NormalizeDirectory('$(ArtifactsDir)', 'ibc'))
$([MSBuild]::NormalizeDirectory('$(ArtifactsDir)', 'mibc'))
$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'docs'))
- $([MSBuild]::NormalizeDirectory('$(NuGetPackageRoot)', 'microsoft.private.intellisense', '$(MicrosoftPrivateIntellisenseVersion)', 'IntellisenseFiles', 'net'))
+ $([MSBuild]::NormalizeDirectory('$(NuGetPackageRoot)', 'microsoft.private.intellisense', '$(MicrosoftPrivateIntellisenseVersion)', 'IntellisenseFiles'))
$([MSBuild]::NormalizeDirectory('$(MSBuildThisFileDirectory)', 'docs'))
$([MSBuild]::NormalizeDirectory('$(DocsDir)', 'manpages'))
$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'AppleAppBuilder', 'Debug', '$(NetCoreAppToolCurrent)'))
$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'AndroidAppBuilder', 'Debug', '$(NetCoreAppToolCurrent)', 'publish'))
- $([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'WasmAppBuilder', 'Debug', '$(NetCoreAppToolCurrent)', 'publish'))
+ $([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'WasmAppBuilder', 'Debug', '$(NetCoreAppToolCurrent)'))
$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'WasmBuildTasks', 'Debug', '$(NetCoreAppToolCurrent)', 'publish'))
$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'WorkloadBuildTasks', 'Debug', '$(NetCoreAppToolCurrent)', 'publish'))
$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'MonoAOTCompiler', 'Debug', '$(NetCoreAppToolCurrent)'))
@@ -140,7 +144,8 @@
<_runtimeOS Condition="$(_runtimeOS.StartsWith('tizen'))">linux
<_runtimeOS Condition="'$(PortableBuild)' == 'true'">$(_portableOS)
- <_packageOS Condition="'$(CrossBuild)' == 'true'">$(_hostOS.ToLowerInvariant)
+ <_packageLibc Condition="$(_runtimeOS.Contains('musl'))">-musl
+ <_packageOS Condition="'$(CrossBuild)' == 'true'">$(_hostOS.ToLowerInvariant)$(_packageLibc)
<_packageOS Condition="'$(_packageOS)' == '' and '$(PortableBuild)' == 'true'">$(_portableOS)
<_packageOS Condition="'$(_packageOS)' == ''">$(_runtimeOS)
@@ -206,6 +211,10 @@
$([MSBuild]::NormalizeDirectory('$(MicrosoftNetCoreAppRuntimePackRidDir)', 'native'))
+
+ $([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', '$(OutputRid).$(Configuration)', 'corehost'))
+
+
true
@@ -228,8 +237,10 @@
$([MSBuild]::NormalizeDirectory('$(LibrariesProjectRoot)', 'System.Private.CoreLib', 'src'))
+ $([MSBuild]::NormalizeDirectory('$(LibrariesProjectRoot)', 'System.Private.CoreLib', 'ref'))
$([MSBuild]::NormalizePath('$(CoreClrProjectRoot)', 'System.Private.CoreLib', 'System.Private.CoreLib.csproj'))
$([MSBuild]::NormalizePath('$(MonoProjectRoot)', 'System.Private.CoreLib', 'System.Private.CoreLib.csproj'))
+ $([MSBuild]::NormalizePath('$(LibrariesProjectRoot)', 'System.Private.Uri', 'src', 'System.Private.Uri.csproj'))
true
@@ -242,7 +253,6 @@
https://dot.net
microsoft,dotnetframework
true
- $([MSBuild]::NormalizePath('$(LibrariesProjectRoot)', 'Microsoft.NETCore.Platforms', 'src', 'runtime.json'))
$(MSBuildThisFileDirectory)LICENSE.TXT
MIT
false
@@ -251,14 +261,12 @@
https://go.microsoft.com/fwlink/?LinkID=799421
- true
- $(MSBuildProjectName.Contains('Experimental'))
+ false
$(MSBuildProjectName.Contains('Private'))
-
- true
- false
+
+ true
- false
+ false
$(RepositoryEngineeringDir)_._
@@ -270,6 +278,8 @@
strict;nullablePublicOnly
true
+
+ $(NoWarn),CS8969
portable
true
diff --git a/Directory.Build.targets b/Directory.Build.targets
index d0c69879774269..98967298c62577 100644
--- a/Directory.Build.targets
+++ b/Directory.Build.targets
@@ -11,6 +11,21 @@
+
+
+
+ $(PackageRID)
+
+
+ $(PackageRID)
+
+
+
+
+
+
+
+
+
+
+
-
diff --git a/THIRD-PARTY-NOTICES.TXT b/THIRD-PARTY-NOTICES.TXT
index 89c59b21d64bd7..88017d19eb5aa2 100644
--- a/THIRD-PARTY-NOTICES.TXT
+++ b/THIRD-PARTY-NOTICES.TXT
@@ -70,12 +70,12 @@ License notice for Zlib
-----------------------
https://github.com/madler/zlib
-http://zlib.net/zlib_license.html
+https://zlib.net/zlib_license.html
/* zlib.h -- interface of the 'zlib' general purpose compression library
- version 1.2.11, January 15th, 2017
+ version 1.3.1, January 22nd, 2024
- Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
+ Copyright (C) 1995-2022 Jean-loup Gailly and Mark Adler
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
@@ -937,3 +937,21 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+
+License for remote stack unwind (https://github.com/llvm/llvm-project/blob/main/lldb/source/Symbol/CompactUnwindInfo.cpp)
+--------------------------------------
+
+Copyright 2019 LLVM Project
+
+Licensed under the Apache License, Version 2.0 (the "License") with LLVM Exceptions;
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+https://llvm.org/LICENSE.txt
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
diff --git a/docs/coding-guidelines/updating-ref-source.md b/docs/coding-guidelines/updating-ref-source.md
index d3f16179e089a2..641718b7875e39 100644
--- a/docs/coding-guidelines/updating-ref-source.md
+++ b/docs/coding-guidelines/updating-ref-source.md
@@ -13,7 +13,7 @@ This document provides the steps you need to take to update the reference assemb
These steps can also be applied to some unique assemblies which depend on changes in System.Private.Corelib. (partial facades like System.Memory, for example).
-1) Run `dotnet build --no-incremental /t:GenerateReferenceSource` from the System.Runtime/src directory.
+1) Run `dotnet build --no-incremental /t:GenerateReferenceAssemblySource` from the System.Runtime/src directory.
2) Filter out all unrelated changes and extract the changes you care about (ignore certain attributes being removed). Generally, this step is not required for other reference assemblies.
## For Full Facade Assemblies implementation assemblies
diff --git a/docs/design/features/images/intel-cet-dotnet6-fig1.png b/docs/design/features/images/intel-cet-dotnet6-fig1.png
new file mode 100644
index 00000000000000..37d2aebb570397
Binary files /dev/null and b/docs/design/features/images/intel-cet-dotnet6-fig1.png differ
diff --git a/docs/design/features/intel-cet-dotnet6.md b/docs/design/features/intel-cet-dotnet6.md
new file mode 100644
index 00000000000000..abf5ca32b06223
--- /dev/null
+++ b/docs/design/features/intel-cet-dotnet6.md
@@ -0,0 +1,30 @@
+# .NET 6 compatibility with Intel CET shadow stacks (early preview on Windows)
+
+Intels [Control-flow Enforcement Technology (CET)](https://newsroom.intel.com/editorials/intel-cet-answers-call-protect-common-malware-threats/) is a security feature available in some newer Intel and AMD processors. It adds capabilities to the hardware that protect against some common types of attacks involving control-flow hijacking. With CET shadow stacks, the processor and operating system can track the control flow of calls and returns in a thread in the shadow stack in addition to the data stack, and detect unintended changes to the control flow. The shadow stack is protected from application code memory accesses and helps to defend against attacks involving return-oriented programming (ROP). Windows offers [Hardware-enforced Stack Protection](https://techcommunity.microsoft.com/t5/windows-kernel-internals/understanding-hardware-enforced-stack-protection/ba-p/1247815) for CET shadow stack compatibility and is available as an early preview in [Windows Insider preview builds (Dev channel)](https://insider.windows.com/en-us/understand-flighting).
+
+## Opting into CET shadow stack compatibility
+
+CET compatibility in .NET 6 is available as an early preview. In order to receive the security benefits of CET shadow stacks in .NET applications, ensure the following to opt into the feature for an executable:
+- Verify that your processor supports Intel CET. There are Intel and AMD processors currently available with the feature.
+- Get a recent build of Windows that has Hardware-enforced Stack Protection. The latest versions from [Windows Insider preview builds (Dev channel)](https://insider.windows.com/en-us/understand-flighting) have the feature.
+- Install [.NET 6](https://dotnet.microsoft.com/download/dotnet) RC1 or a more recent release
+- Build or publish your application targeting framework `net6.0` and runtime `win-x64`
+- Open the Windows Security app
+ - Inside the "App & browser control" pane, select "Explicit protection settings"
+ - Under the "Program settings" tab, select "Add program to customize" and "Add by program name"
+ - Enter the file name of your applications executable file and select "Add"
+ - Select the following options and select "Apply":
+
+ 
+ - See the [Developer Guidance for Hardware-enforced Stack Protection](https://techcommunity.microsoft.com/t5/windows-kernel-internals/developer-guidance-for-hardware-enforced-stack-protection/ba-p/2163340) for more details
+- Task Managers Details tab has a new column "Hardware-enforced Stack Protection" that shows the compatibility level of a running process. If CET shadow stacks are enabled for the process, the column for the application should say "Compatible modules only".
+
+## Limitations
+
+CET shadow stack compatibility in .NET is under development and will be available as an early preview from .NET 6 RC1 as an opt-in for x64 applications. Aside from a notable limitation, most run-time scenarios should work as expected. There are plans for expanding the compatibility for .NET 7 and to have it be enabled by default on supported hardware for Windows x64 applications.
+
+For a .NET 6 application that is opted into CET shadow stack compatibility, managed or mixed-mode debugging through Visual Studio may not work as expected, and may cause the application to crash. Some basic features such as expression evaluation (including autos, locals, watch list expressions, quick watch, etc.) and stepping through code are currently incompatible with CET shadow stacks. Native debugging through Visual Studio and WinDbg/SOS should continue to work as expected with CET shadow stacks enabled for the application being debugged.
+
+When opted in as above, CET shadow stacks are enabled in compatibility mode. .NET 6 is not compatible with strict mode, support for strict mode is planned for .NET 7.
+
+For .NET 6 applications, CET shadow stack compatibility is available to try for Windows x64 applications. Support for the feature on Linux is pending.
diff --git a/docs/project/library-servicing.md b/docs/project/library-servicing.md
index 11fb03dfed51b7..a9431903fc7024 100644
--- a/docs/project/library-servicing.md
+++ b/docs/project/library-servicing.md
@@ -1,11 +1,18 @@
# How to service a library
-This document provides the steps necessary after modifying a library in a servicing branch (where "servicing branch" refers to any branch whose name begins with `release/`).
+This document provides the steps that need to be followed after modifying a library in a servicing branch.
+
+Servicing branches represent shipped versions of .NET, and their name is in the format `release/X.0-staging`. Examples:
+
+- `release/7.0-staging`
+- `release/6.0-staging`
## Check if a package is generated
If a library is packable (check for the `true` property) you'll need to set `true` in the source project. That is necessary as packages aren't generated by default in servicing releases.
+Additionally, if the library is listed among the project references of [Microsoft.Windows.Compatibility.csproj](https://github.com/dotnet/runtime/blob/56c84971041ae1debfa5ff360c547392d29f4cb3/src/libraries/Microsoft.Windows.Compatibility/src/Microsoft.Windows.Compatibility.csproj#L15-L48), please make sure to bump the value of `ServicingVersion` for `Microsoft.Windows.Compatibility.csproj` and also set its `GeneratePackageOnBuild` property value to `true`. The version number must only be bumped once per servicing release, even if multiple dependencies get modified.
+
## Determine ServiceVersion
When you make a change to a library & ship it during the servicing release, the `ServicingVersion` must be bumped. This property is found in the library's source project. It's also possible that the property is not in that file, in which case you'll need to add it to the library's source project and set it to 1. If the property is already present in your library's source project, just increment the servicing version by 1.
@@ -23,4 +30,26 @@ All that's left is to ensure that your changes have worked as expected. To do so
## Approval Process
-All the servicing change must go through an approval process. Please create your PR using [this template](https://raw.githubusercontent.com/dotnet/runtime/main/.github/PULL_REQUEST_TEMPLATE/servicing_pull_request_template.md). You should also add `servicing-consider` label to the pull request and bring it to the attention of the engineering lead responsible for the area.
+All the servicing change must go through an approval process. You have two ways to submit your PR:
+
+- By manually creating your PR using [this template](https://raw.githubusercontent.com/dotnet/runtime/main/.github/PULL_REQUEST_TEMPLATE/servicing_pull_request_template.md).
+- Or by asking the bot to automatically create the servicing PR for you using a merged `main` PR as source. This method requires typing an AzDO backport command as a comment of your merged PR using the format `/backport to release/X.0-staging`. Examples:
+-
+ - `/backport to release/7.0-staging`
+ - `/backport to release/6.0-staging`
+
+For both cases, you must:
+
+- Fill out the template of the PR description.
+- Bring it to the attention of the [engineering lead responsible for the area](~/docs/area-owners.md).
+- If the fix is a product change, the area owner will:
+ - Add the `Servicing-consider` label.
+ - Ask the area owner to champion your PR in the .NET Tactics meeting to request merge approval.
+ - If the change is approved, they will replace the `Servicing-consider` label by `Servicing-approved` and sign-off the PR.
+- If the fix is a test-only or infra-only change, the area owner will:
+ - Review the PR and sign-off if they approve it.
+ - Add the `Servicing-approved` label.
+
+The area owner can then merge the PR once the CI looks good (it's either green or the failures are investigated and determined to be unrelated to the PR).
+
+**Note**: Applying the `Servicing-approved` label ensures the `check-service-labels` CI job passes, which is a mandatory requirement for merging a PR in a servicing branch.
diff --git a/eng/MultiTargetRoslynComponent.targets.template b/eng/MultiTargetRoslynComponent.targets.template
new file mode 100644
index 00000000000000..420693a6262b9f
--- /dev/null
+++ b/eng/MultiTargetRoslynComponent.targets.template
@@ -0,0 +1,31 @@
+
+
+
+
+ <_{TargetPrefix}Analyzer Include="@(Analyzer)" Condition="'%(Analyzer.NuGetPackageId)' == '{NuGetPackageId}'" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/eng/Publishing.props b/eng/Publishing.props
index ba44e57c7c744b..8b796225f8274b 100644
--- a/eng/Publishing.props
+++ b/eng/Publishing.props
@@ -1,3 +1,7 @@
-
-
\ No newline at end of file
+
+
+ true
+
+
+
diff --git a/eng/Signing.props b/eng/Signing.props
index b546fd4ec3b5d3..fd547195d60e54 100644
--- a/eng/Signing.props
+++ b/eng/Signing.props
@@ -1,4 +1,4 @@
-
+
+
+
@@ -56,33 +61,4 @@
-
-
-
-
- false
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/eng/SourceBuild.props b/eng/SourceBuild.props
index 7dfc80d41fd14c..fcbe9fa75e2a9d 100644
--- a/eng/SourceBuild.props
+++ b/eng/SourceBuild.props
@@ -11,14 +11,20 @@
true
false
-
+
$([System.Runtime.InteropServices.RuntimeInformation]::RuntimeIdentifier)
$(__DistroRid)
<_targetRidPlatformIndex>$(TargetRid.LastIndexOfAny("-"))
- $(TargetRid.Substring(0, $(_targetRidPlatformIndex)))
- $(TargetRid.Substring($(_targetRidPlatformIndex)).TrimStart('-'))
+ $(TargetRid.Substring($(_targetRidPlatformIndex)).TrimStart('-'))
+
+
+ $(TargetRid.Substring(0, $(_targetRidPlatformIndex)))
+
+
+ $(RuntimeOS)
minimal
@@ -34,22 +40,21 @@
- $(InnerBuildArgs) --arch $(TargetRidPlatform)
+ $(InnerBuildArgs) --arch $(TargetArch)
$(InnerBuildArgs) --configuration $(Configuration)
- $(InnerBuildArgs) --ci
- $(InnerBuildArgs) --allconfigurations
+ $(InnerBuildArgs) --allconfigurations
$(InnerBuildArgs) --verbosity $(LogVerbosity)
$(InnerBuildArgs) --nodereuse false
$(InnerBuildArgs) --warnAsError false
- $(InnerBuildArgs) --cmakeargs -DCLR_CMAKE_USE_SYSTEM_LIBUNWIND=TRUE
- $(InnerBuildArgs) /p:MicrosoftNetFrameworkReferenceAssembliesVersion=1.0.0
- $(InnerBuildArgs) /p:ContinuousIntegrationBuild=true
- $(InnerBuildArgs) /p:PackageRid=$(TargetRid)
+ $(InnerBuildArgs) /p:MicrosoftNetFrameworkReferenceAssembliesVersion=1.0.2
+ $(InnerBuildArgs) --outputrid $(TargetRid)
+ $(InnerBuildArgs) --portablebuild $(SourceBuildPortable)
$(InnerBuildArgs) /p:NoPgoOptimize=true
$(InnerBuildArgs) /p:KeepNativeSymbols=true
- $(InnerBuildArgs) /p:RuntimeOS=$(TargetRidWithoutPlatform)
- $(InnerBuildArgs) /p:PortableBuild=$(SourceBuildPortable)
+ $(InnerBuildArgs) /p:RuntimeOS=$(RuntimeOS)
$(InnerBuildArgs) /p:BuildDebPackage=false
+ $(InnerBuildArgs) /p:RuntimeOS=$(RuntimeOS)
+ $(InnerBuildArgs) /p:AdditionalRuntimeIdentifierParent=$(BaseOS)
diff --git a/eng/Subsets.props b/eng/Subsets.props
index 332632c32e5163..be4c6a8862480b 100644
--- a/eng/Subsets.props
+++ b/eng/Subsets.props
@@ -22,11 +22,19 @@
that indicates tests should be run. Otherwise, they'll only be built.)
-->
+
+
+ CoreCLR
+ Mono
+
+
clr+mono+libs+host+packs
mono+libs+packs
-
- clr+libs+host+packs
+
+ clr+libs+host+packs
@@ -35,14 +43,6 @@
<_subset Condition="'$(Subset)' == ''">+$(DefaultSubsets)+
-
-
- CoreCLR
- Mono
-
-
Mono
Mono
@@ -66,13 +66,13 @@
$(DefaultLibrariesSubsets)libs.ref+libs.src
$(DefaultLibrariesSubsets)+libs.pretest
- host.native+host.tools
- $(DefaultHostSubsets)+host.pkg+host.tests
+ host.native+host.tools+host.pkg
+ $(DefaultHostSubsets)+host.tests
host.native
packs.product
- $(DefaultPacksSubsets)+packs.tests
+ $(DefaultPacksSubsets)+packs.tests
$(DefaultPacksSubsets)+packs.installers
@@ -120,7 +120,14 @@
-
+
+
+
+
+
+
+
+
@@ -130,13 +137,6 @@
-
-
-
-
-
-
-
@@ -263,6 +263,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -288,22 +304,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index 1ebd09b7378e75..6f3a59d99181da 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -1,130 +1,150 @@
-
+
https://github.com/dotnet/icu
- 05dbba88d0ae799b4fea1e13c69b0c02beb7dcbe
+ def3524876b6b84a72e8ed02db6077f9c0ce8a75
-
+
https://github.com/dotnet/msquic
- 98129287d56a5e0348c291ce4260e630b4aa510d
+ 7312355e44fd230b7aa26c7190f3870391751476
-
+
https://github.com/dotnet/emsdk
- 9f2345b3c5f43dbf34790e21657ae1f2445cd06a
+ ab8bc4e2860e29d700542c68e57daa5e7663af62
+
+
+ https://github.com/dotnet/emsdk
+ ab8bc4e2860e29d700542c68e57daa5e7663af62
+
+
+ https://github.com/dotnet/emsdk
+ ab8bc4e2860e29d700542c68e57daa5e7663af62
+
+
+ https://github.com/dotnet/wcf
+ 04c3656e0325277aefa18378f24238d39b259222
-
+
+ https://github.com/dotnet/arcade
+ 2eab07c3d7b78219d10099b19fafeef2ecae1779
+
+
https://github.com/dotnet/arcade
- 9b7027ba718462aa6410cef61a8be5a4283e7528
+ 2eab07c3d7b78219d10099b19fafeef2ecae1779
-
+
https://github.com/dotnet/arcade
- 9b7027ba718462aa6410cef61a8be5a4283e7528
+ 2eab07c3d7b78219d10099b19fafeef2ecae1779
-
+
https://github.com/dotnet/arcade
- 9b7027ba718462aa6410cef61a8be5a4283e7528
+ 2eab07c3d7b78219d10099b19fafeef2ecae1779
-
+
https://github.com/dotnet/arcade
- 9b7027ba718462aa6410cef61a8be5a4283e7528
+ 2eab07c3d7b78219d10099b19fafeef2ecae1779
-
+
https://github.com/dotnet/arcade
- 9b7027ba718462aa6410cef61a8be5a4283e7528
+ 2eab07c3d7b78219d10099b19fafeef2ecae1779
-
+
https://github.com/dotnet/arcade
- 9b7027ba718462aa6410cef61a8be5a4283e7528
+ 2eab07c3d7b78219d10099b19fafeef2ecae1779
-
+
https://github.com/dotnet/arcade
- 9b7027ba718462aa6410cef61a8be5a4283e7528
+ 2eab07c3d7b78219d10099b19fafeef2ecae1779
-
+
https://github.com/dotnet/arcade
- 9b7027ba718462aa6410cef61a8be5a4283e7528
+ 2eab07c3d7b78219d10099b19fafeef2ecae1779
-
+
https://github.com/dotnet/arcade
- 9b7027ba718462aa6410cef61a8be5a4283e7528
+ 2eab07c3d7b78219d10099b19fafeef2ecae1779
-
+
https://github.com/dotnet/arcade
- 9b7027ba718462aa6410cef61a8be5a4283e7528
+ 2eab07c3d7b78219d10099b19fafeef2ecae1779
-
+
https://github.com/dotnet/arcade
- 9b7027ba718462aa6410cef61a8be5a4283e7528
+ 2eab07c3d7b78219d10099b19fafeef2ecae1779
-
+
https://github.com/dotnet/arcade
- 9b7027ba718462aa6410cef61a8be5a4283e7528
+ 2eab07c3d7b78219d10099b19fafeef2ecae1779
-
+
https://github.com/dotnet/arcade
- 9b7027ba718462aa6410cef61a8be5a4283e7528
+ 2eab07c3d7b78219d10099b19fafeef2ecae1779
-
+
https://github.com/dotnet/arcade
- 9b7027ba718462aa6410cef61a8be5a4283e7528
+ 2eab07c3d7b78219d10099b19fafeef2ecae1779
-
+
https://github.com/dotnet/arcade
- 9b7027ba718462aa6410cef61a8be5a4283e7528
+ 2eab07c3d7b78219d10099b19fafeef2ecae1779
-
+
https://github.com/dotnet/arcade
- 9b7027ba718462aa6410cef61a8be5a4283e7528
+ 2eab07c3d7b78219d10099b19fafeef2ecae1779
-
+
https://github.com/dotnet/arcade
- 9b7027ba718462aa6410cef61a8be5a4283e7528
+ 2eab07c3d7b78219d10099b19fafeef2ecae1779
https://github.com/microsoft/vstest
140434f7109d357d0158ade9e5164a4861513965
-
+
https://github.com/dotnet/runtime-assets
- 7f980667ff908c5b5d7cf0dd66d48e7af23daae1
+ 600fbf042f688f9db813f69bd8a6525b84efb7e6
-
+
https://github.com/dotnet/runtime-assets
- 7f980667ff908c5b5d7cf0dd66d48e7af23daae1
+ 600fbf042f688f9db813f69bd8a6525b84efb7e6
-
+
https://github.com/dotnet/runtime-assets
- 7f980667ff908c5b5d7cf0dd66d48e7af23daae1
+ 600fbf042f688f9db813f69bd8a6525b84efb7e6
-
+
https://github.com/dotnet/runtime-assets
- 7f980667ff908c5b5d7cf0dd66d48e7af23daae1
+ 600fbf042f688f9db813f69bd8a6525b84efb7e6
-
+
https://github.com/dotnet/runtime-assets
- 7f980667ff908c5b5d7cf0dd66d48e7af23daae1
+ 600fbf042f688f9db813f69bd8a6525b84efb7e6
-
+
https://github.com/dotnet/runtime-assets
- 7f980667ff908c5b5d7cf0dd66d48e7af23daae1
+ 600fbf042f688f9db813f69bd8a6525b84efb7e6
-
+
https://github.com/dotnet/runtime-assets
- 7f980667ff908c5b5d7cf0dd66d48e7af23daae1
+ 600fbf042f688f9db813f69bd8a6525b84efb7e6
-
+
https://github.com/dotnet/runtime-assets
- 7f980667ff908c5b5d7cf0dd66d48e7af23daae1
+ 600fbf042f688f9db813f69bd8a6525b84efb7e6
-
+
https://github.com/dotnet/runtime-assets
- 7f980667ff908c5b5d7cf0dd66d48e7af23daae1
+ 600fbf042f688f9db813f69bd8a6525b84efb7e6
-
+
https://github.com/dotnet/runtime-assets
- 7f980667ff908c5b5d7cf0dd66d48e7af23daae1
+ 600fbf042f688f9db813f69bd8a6525b84efb7e6
+
+
+ https://github.com/dotnet/runtime-assets
+ 600fbf042f688f9db813f69bd8a6525b84efb7e6
https://github.com/dotnet/llvm-project
@@ -158,17 +178,17 @@
https://github.com/dotnet/llvm-project
cea4a95e1505e737e768c8094d6aa880f5442ab7
-
+
https://github.com/dotnet/runtime
- 38017c3935de95d0335bac04f4901ddfc2718656
+ fde6b37e985605d862c070256de7c97e2a3f3342
-
+
https://github.com/dotnet/runtime
- fde6b37e985605d862c070256de7c97e2a3f3342
+ 1af80ba017f6f7644305e1781d8cc9845a92b5f8
-
+
https://github.com/dotnet/runtime
- fde6b37e985605d862c070256de7c97e2a3f3342
+ 1af80ba017f6f7644305e1781d8cc9845a92b5f8
https://github.com/dotnet/runtime
@@ -190,21 +210,21 @@
https://github.com/dotnet/runtime
fde6b37e985605d862c070256de7c97e2a3f3342
-
+
https://github.com/mono/linker
- 5b2391c2c56af47350a5789375e8dbddc692e67f
+ c8499798a2a09639174e2f5c694d6652794cc73d
-
+
https://github.com/dotnet/xharness
- e9669dc84ecd668d3bbb748758103e23b394ffef
+ d1dd9c2ce3fc0b9358d2cda64c52d052d1a612c1
-
+
https://github.com/dotnet/xharness
- e9669dc84ecd668d3bbb748758103e23b394ffef
+ d1dd9c2ce3fc0b9358d2cda64c52d052d1a612c1
-
+
https://github.com/dotnet/arcade
- 9b7027ba718462aa6410cef61a8be5a4283e7528
+ 2eab07c3d7b78219d10099b19fafeef2ecae1779
https://dev.azure.com/dnceng/internal/_git/dotnet-optimization
@@ -222,17 +242,21 @@
https://dev.azure.com/dnceng/internal/_git/dotnet-optimization
d50065944d8b41d804448a7056351481d583ad3d
-
+
https://github.com/dotnet/hotreload-utils
- 802e79f0cf423249d54bfaafca2da4a272f4ca07
+ 6f095cd6901ed48a469289f7f4f91d30a420d1ad
-
+
https://github.com/dotnet/runtime-assets
- 7f980667ff908c5b5d7cf0dd66d48e7af23daae1
+ 600fbf042f688f9db813f69bd8a6525b84efb7e6
https://github.com/dotnet/roslyn-analyzers
9a1f02eff42635a5a9934735f12c722c3bfba8e8
+
+ https://github.com/dotnet/sdk
+ fa2be1406598f8e473af9061e07488ae0778ea11
+
diff --git a/eng/Versions.props b/eng/Versions.props
index 4265ca90427500..0da0f60f30b951 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -1,80 +1,69 @@
- 6.0.0
+ 6.0.33
6
0
- 0
- 6.0.100
- rc
- 1
+ 33
+ 6.0.400
+ servicing
+
+
$(MajorVersion).$(MinorVersion).0.0
- false
+ true
release
true
-
- 4.0.0-3.21376.12
true
false
false
+ $(AssemblyVersion)
-
-
-
+
+
+
-
- 3.9.0
- 3.9.0
+
+ 3.11.0
+ 4.0.0-3.final
+ 4.0.0-3.final
3.10.0
3.10.0
- 6.0.0-rc1.21413.4
+ 6.0.0-rtm.21514.4
- 1.0.0-rc.1.21404.21
+ 1.1.0-preview.22164.17
- 6.0.0-beta.21413.4
- 6.0.0-beta.21413.4
- 6.0.0-beta.21413.4
- 6.0.0-beta.21413.4
- 6.0.0-beta.21413.4
- 6.0.0-beta.21413.4
- 2.5.1-beta.21413.4
- 6.0.0-beta.21413.4
- 6.0.0-beta.21413.4
- 6.0.0-beta.21413.4
- 6.0.0-beta.21413.4
- 6.0.0-beta.21413.4
- 6.0.0-beta.21413.4
- 6.0.0-beta.21413.4
+ 6.0.0-beta.24266.4
+ 6.0.0-beta.24266.4
+ 6.0.0-beta.24266.4
+ 6.0.0-beta.24266.4
+ 6.0.0-beta.24266.4
+ 6.0.0-beta.24266.4
+ 2.5.1-beta.24266.4
+ 6.0.0-beta.24266.4
+ 6.0.0-beta.24266.4
+ 6.0.0-beta.24266.4
+ 6.0.0-beta.24266.4
+ 6.0.0-beta.24266.4
+ 6.0.0-beta.24266.4
+ 6.0.0-beta.24266.4
+ 6.0.0-beta.24266.4
6.0.0-preview.1.102
- 6.0.0-alpha.1.20612.4
- 6.0.0-rc.1.21415.6
- 6.0.0-rc.1.21415.6
- 3.1.0
+ 6.0.0-alpha.1.20612.4
+ 6.0.13
+ 6.0.13
+ 6.0.0
6.0.0-rc.1.21415.6
@@ -85,7 +74,7 @@
4.5.1
4.3.0
5.0.0
- 4.8.2
+ 4.8.6
4.5.0
4.3.0
4.3.0
@@ -96,6 +85,9 @@
4.3.1
4.5.0
5.0.0
+
+ 5.0.0
+ 5.0.0
4.7.0
4.7.0
4.7.0
@@ -109,31 +101,32 @@
5.0.0
5.0.0
5.0.0
- 4.8.1
+ 4.9.0
6.0.0-rc.1.21415.6
6.0.0-rc.1.21415.6
4.5.4
4.5.0
6.0.0-rc.1.21415.6
- 6.0.0-beta.21416.1
- 6.0.0-beta.21416.1
- 6.0.0-beta.21416.1
- 6.0.0-beta.21416.1
- 6.0.0-beta.21416.1
- 6.0.0-beta.21416.1
- 6.0.0-beta.21416.1
- 6.0.0-beta.21416.1
- 6.0.0-beta.21416.1
- 6.0.0-beta.21416.1
- 6.0.0-beta.21416.1
+ 6.0.0-beta.24271.2
+ 6.0.0-beta.24271.2
+ 6.0.0-beta.24271.2
+ 6.0.0-beta.24271.2
+ 6.0.0-beta.24271.2
+ 6.0.0-beta.24271.2
+ 6.0.0-beta.24271.2
+ 6.0.0-beta.24271.2
+ 6.0.0-beta.24271.2
+ 6.0.0-beta.24271.2
+ 6.0.0-beta.24271.2
+ 6.0.0-beta.24271.2
1.0.0-prerelease.21416.5
1.0.0-prerelease.21416.5
1.0.0-prerelease.21416.5
1.0.0-prerelease.21416.5
- 16.9.0-beta1.21055.5
+ 17.10.0-beta1.24272.1
2.0.0-beta1.20253.1
2.0.65
2.2.0
@@ -142,39 +135,36 @@
1.0.0-beta-build0015
1.0.4-preview6.19326.1
0.2.61701
-
- 16.10.0
- $(RefOnlyMicrosoftBuildVersion)
- $(RefOnlyMicrosoftBuildVersion)
- $(RefOnlyMicrosoftBuildVersion)
- 5.8.0
- 5.8.0
+ 16.10.0
+ $(MicrosoftBuildVersion)
+ 4.7.2
+ 6.7.1
+ 6.2.4
1.0.1-prerelease-00006
- 16.9.0-preview-20201201-01
- 1.0.0-prerelease.21404.1
- 1.0.0-prerelease.21404.1
- 1.0.2-alpha.0.21413.1
- 2.4.1
+ 17.4.0-preview-20220707-01
+ 6.0.0-prerelease.24224.2
+ 6.0.0-prerelease.24224.2
+ 6.0.0-alpha.0.24271.2
+ 2.4.2-pre.9
2.4.2
1.3.0
- 12.0.3
+ 13.0.1
+ 1.0.2
2.0.4
4.12.0
2.14.3
- 6.0.100-rc.1.21412.8
+ 6.0.400-rtm.22371.2
+ 6.0.4xx
- 5.0.0-preview-20201009.2
+ 6.0.0-preview-20211019.1
- 6.0.100-preview.6.21416.1
+ 6.0.100-1.21459.1
$(MicrosoftNETILLinkTasksVersion)
- 6.0.0-rc.1.21416.1
+ 6.0.0-rtm.24269.3
- 6.0.0-preview.7.21417.1
+ 6.0.0-servicing.22205.1
11.1.0-alpha.1.21416.1
11.1.0-alpha.1.21416.1
@@ -185,11 +175,13 @@
11.1.0-alpha.1.21416.1
11.1.0-alpha.1.21416.1
- 6.0.0-rc.1.21416.1
+ 6.0.32
+ 6.0.32
+ 6.0.32
$(MicrosoftNETWorkloadEmscriptenManifest60100Version)
1.1.87-gba258badda
- 3.14.0-dotnet
+ 3.14.1-8722.20240403.1
6.0.0-preview.5.21275.7
diff --git a/eng/build.ps1 b/eng/build.ps1
index af253dfb3dbd43..14dadeec13b1de 100644
--- a/eng/build.ps1
+++ b/eng/build.ps1
@@ -254,6 +254,10 @@ foreach ($argument in $PSBoundParameters.Keys)
$failedBuilds = @()
+# Disable targeting pack caching as we reference a partially constructed targeting pack and update it later.
+# The later changes are ignored when using the cache.
+$env:DOTNETSDK_ALLOW_TARGETING_PACK_CACHING=0
+
if ($os -eq "Browser") {
# override default arch for Browser, we only support wasm
$arch = "wasm"
diff --git a/eng/build.sh b/eng/build.sh
index 128e720d3c0b2d..ea6be90af61075 100755
--- a/eng/build.sh
+++ b/eng/build.sh
@@ -31,6 +31,7 @@ usage()
echo " --os Target operating system: windows, Linux, FreeBSD, OSX, MacCatalyst, tvOS,"
echo " tvOSSimulator, iOS, iOSSimulator, Android, Browser, NetBSD, illumos or Solaris."
echo " [Default: Your machine's OS.]"
+ echo " --outputrid Optional argument that overrides the target rid name."
echo " --projects Project or solution file(s) to build."
echo " --runtimeConfiguration (-rc) Runtime build configuration: Debug, Release or Checked."
echo " Checked is exclusive to the CLR runtime. It is the same as Debug, except code is"
@@ -400,6 +401,15 @@ while [[ $# > 0 ]]; do
shift 1
;;
+ -outputrid)
+ if [ -z ${2+x} ]; then
+ echo "No value for outputrid is supplied. See help (--help) for supported values." 1>&2
+ exit 1
+ fi
+ arguments="$arguments /p:OutputRid=$(echo "$2" | tr "[:upper:]" "[:lower:]")"
+ shift 2
+ ;;
+
-portablebuild)
if [ -z ${2+x} ]; then
echo "No value for portablebuild is supplied. See help (--help) for supported values." 1>&2
@@ -468,6 +478,10 @@ fi
initDistroRid $os $arch $crossBuild $portableBuild
+# Disable targeting pack caching as we reference a partially constructed targeting pack and update it later.
+# The later changes are ignored when using the cache.
+export DOTNETSDK_ALLOW_TARGETING_PACK_CACHING=0
+
# URL-encode space (%20) to avoid quoting issues until the msbuild call in /eng/common/tools.sh.
# In *proj files (XML docs), URL-encoded string are rendered in their decoded form.
cmakeargs="${cmakeargs// /%20}"
diff --git a/eng/common/SetupNugetSources.ps1 b/eng/common/SetupNugetSources.ps1
index 18823840b11275..4ed5c54e7331b5 100644
--- a/eng/common/SetupNugetSources.ps1
+++ b/eng/common/SetupNugetSources.ps1
@@ -35,7 +35,7 @@ Set-StrictMode -Version 2.0
. $PSScriptRoot\tools.ps1
# Add source entry to PackageSources
-function AddPackageSource($sources, $SourceName, $SourceEndPoint, $creds, $Username, $Password) {
+function AddPackageSource($sources, $SourceName, $SourceEndPoint, $creds, $Username, $pwd) {
$packageSource = $sources.SelectSingleNode("add[@key='$SourceName']")
if ($packageSource -eq $null)
@@ -49,11 +49,11 @@ function AddPackageSource($sources, $SourceName, $SourceEndPoint, $creds, $Usern
Write-Host "Package source $SourceName already present."
}
- AddCredential -Creds $creds -Source $SourceName -Username $Username -Password $Password
+ AddCredential -Creds $creds -Source $SourceName -Username $Username -pwd $pwd
}
# Add a credential node for the specified source
-function AddCredential($creds, $source, $username, $password) {
+function AddCredential($creds, $source, $username, $pwd) {
# Looks for credential configuration for the given SourceName. Create it if none is found.
$sourceElement = $creds.SelectSingleNode($Source)
if ($sourceElement -eq $null)
@@ -82,17 +82,17 @@ function AddCredential($creds, $source, $username, $password) {
$passwordElement.SetAttribute("key", "ClearTextPassword")
$sourceElement.AppendChild($passwordElement) | Out-Null
}
- $passwordElement.SetAttribute("value", $Password)
+ $passwordElement.SetAttribute("value", $pwd)
}
-function InsertMaestroPrivateFeedCredentials($Sources, $Creds, $Username, $Password) {
+function InsertMaestroPrivateFeedCredentials($Sources, $Creds, $Username, $pwd) {
$maestroPrivateSources = $Sources.SelectNodes("add[contains(@key,'darc-int')]")
Write-Host "Inserting credentials for $($maestroPrivateSources.Count) Maestro's private feeds."
ForEach ($PackageSource in $maestroPrivateSources) {
Write-Host "`tInserting credential for Maestro's feed:" $PackageSource.Key
- AddCredential -Creds $creds -Source $PackageSource.Key -Username $Username -Password $Password
+ AddCredential -Creds $creds -Source $PackageSource.Key -Username $Username -pwd $pwd
}
}
@@ -144,24 +144,24 @@ if ($disabledSources -ne $null) {
$userName = "dn-bot"
# Insert credential nodes for Maestro's private feeds
-InsertMaestroPrivateFeedCredentials -Sources $sources -Creds $creds -Username $userName -Password $Password
+InsertMaestroPrivateFeedCredentials -Sources $sources -Creds $creds -Username $userName -pwd $Password
$dotnet31Source = $sources.SelectSingleNode("add[@key='dotnet3.1']")
if ($dotnet31Source -ne $null) {
- AddPackageSource -Sources $sources -SourceName "dotnet3.1-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal/nuget/v2" -Creds $creds -Username $userName -Password $Password
- AddPackageSource -Sources $sources -SourceName "dotnet3.1-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal-transport/nuget/v2" -Creds $creds -Username $userName -Password $Password
+ AddPackageSource -Sources $sources -SourceName "dotnet3.1-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal/nuget/v2" -Creds $creds -Username $userName -pwd $Password
+ AddPackageSource -Sources $sources -SourceName "dotnet3.1-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal-transport/nuget/v2" -Creds $creds -Username $userName -pwd $Password
}
$dotnet5Source = $sources.SelectSingleNode("add[@key='dotnet5']")
if ($dotnet5Source -ne $null) {
- AddPackageSource -Sources $sources -SourceName "dotnet5-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet5-internal/nuget/v2" -Creds $creds -Username $userName -Password $Password
- AddPackageSource -Sources $sources -SourceName "dotnet5-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet5-internal-transport/nuget/v2" -Creds $creds -Username $userName -Password $Password
+ AddPackageSource -Sources $sources -SourceName "dotnet5-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet5-internal/nuget/v2" -Creds $creds -Username $userName -pwd $Password
+ AddPackageSource -Sources $sources -SourceName "dotnet5-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet5-internal-transport/nuget/v2" -Creds $creds -Username $userName -pwd $Password
}
$dotnet6Source = $sources.SelectSingleNode("add[@key='dotnet6']")
if ($dotnet6Source -ne $null) {
- AddPackageSource -Sources $sources -SourceName "dotnet6-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet6-internal/nuget/v2" -Creds $creds -Username $userName -Password $Password
- AddPackageSource -Sources $sources -SourceName "dotnet6-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet6-internal-transport/nuget/v2" -Creds $creds -Username $userName -Password $Password
+ AddPackageSource -Sources $sources -SourceName "dotnet6-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet6-internal/nuget/v2" -Creds $creds -Username $userName -pwd $Password
+ AddPackageSource -Sources $sources -SourceName "dotnet6-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet6-internal-transport/nuget/v2" -Creds $creds -Username $userName -pwd $Password
}
$doc.Save($filename)
diff --git a/eng/common/build.ps1 b/eng/common/build.ps1
index 8943da242f6e92..33a6f2d0e24811 100644
--- a/eng/common/build.ps1
+++ b/eng/common/build.ps1
@@ -26,6 +26,7 @@ Param(
[string] $runtimeSourceFeed = '',
[string] $runtimeSourceFeedKey = '',
[switch] $excludePrereleaseVS,
+ [switch] $nativeToolsOnMachine,
[switch] $help,
[Parameter(ValueFromRemainingArguments=$true)][String[]]$properties
)
@@ -67,6 +68,7 @@ function Print-Usage() {
Write-Host " -warnAsError Sets warnaserror msbuild parameter ('true' or 'false')"
Write-Host " -msbuildEngine Msbuild engine to use to run build ('dotnet', 'vs', or unspecified)."
Write-Host " -excludePrereleaseVS Set to exclude build engines in prerelease versions of Visual Studio"
+ Write-Host " -nativeToolsOnMachine Sets the native tools on machine environment variable (indicating that the script should use native tools on machine)"
Write-Host ""
Write-Host "Command line arguments not listed above are passed thru to msbuild."
@@ -146,6 +148,9 @@ try {
$nodeReuse = $false
}
+ if ($nativeToolsOnMachine) {
+ $env:NativeToolsOnMachine = $true
+ }
if ($restore) {
InitializeNativeTools
}
diff --git a/eng/common/build.sh b/eng/common/build.sh
index 55b298f16ccd1f..a16e18b174a759 100755
--- a/eng/common/build.sh
+++ b/eng/common/build.sh
@@ -187,6 +187,7 @@ function InitializeCustomToolset {
}
function Build {
+
InitializeToolset
InitializeCustomToolset
diff --git a/eng/common/cross/toolchain.cmake b/eng/common/cross/toolchain.cmake
index fc11001aa76c82..51f30e53dd4303 100644
--- a/eng/common/cross/toolchain.cmake
+++ b/eng/common/cross/toolchain.cmake
@@ -1,5 +1,12 @@
set(CROSS_ROOTFS $ENV{ROOTFS_DIR})
+# reset platform variables (e.g. cmake 3.25 sets LINUX=1)
+unset(LINUX)
+unset(FREEBSD)
+unset(ILLUMOS)
+unset(ANDROID)
+unset(TIZEN)
+
set(TARGET_ARCH_NAME $ENV{TARGET_BUILD_ARCH})
if(EXISTS ${CROSS_ROOTFS}/bin/freebsd-version)
set(CMAKE_SYSTEM_NAME FreeBSD)
@@ -138,8 +145,8 @@ function(add_toolchain_linker_flag Flag)
if (NOT Config STREQUAL "")
set(CONFIG_SUFFIX "_${Config}")
endif()
- set("CMAKE_EXE_LINKER_FLAGS${CONFIG_SUFFIX}" "${CMAKE_EXE_LINKER_FLAGS${CONFIG_SUFFIX}} ${Flag}" PARENT_SCOPE)
- set("CMAKE_SHARED_LINKER_FLAGS${CONFIG_SUFFIX}" "${CMAKE_SHARED_LINKER_FLAGS${CONFIG_SUFFIX}} ${Flag}" PARENT_SCOPE)
+ set("CMAKE_EXE_LINKER_FLAGS${CONFIG_SUFFIX}_INIT" "${CMAKE_EXE_LINKER_FLAGS${CONFIG_SUFFIX}_INIT} ${Flag}" PARENT_SCOPE)
+ set("CMAKE_SHARED_LINKER_FLAGS${CONFIG_SUFFIX}_INIT" "${CMAKE_SHARED_LINKER_FLAGS${CONFIG_SUFFIX}_INIT} ${Flag}" PARENT_SCOPE)
endfunction()
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
diff --git a/eng/common/darc-init.ps1 b/eng/common/darc-init.ps1
index 435e7641341b16..8fda30bdce2b09 100644
--- a/eng/common/darc-init.ps1
+++ b/eng/common/darc-init.ps1
@@ -1,6 +1,6 @@
param (
$darcVersion = $null,
- $versionEndpoint = 'https://maestro-prod.westus2.cloudapp.azure.com/api/assets/darc-version?api-version=2019-01-16',
+ $versionEndpoint = 'https://maestro.dot.net/api/assets/darc-version?api-version=2019-01-16',
$verbosity = 'minimal',
$toolpath = $null
)
diff --git a/eng/common/darc-init.sh b/eng/common/darc-init.sh
index 39abdbecdcf11b..4e4116f1d0bf9b 100755
--- a/eng/common/darc-init.sh
+++ b/eng/common/darc-init.sh
@@ -2,7 +2,7 @@
source="${BASH_SOURCE[0]}"
darcVersion=''
-versionEndpoint='https://maestro-prod.westus2.cloudapp.azure.com/api/assets/darc-version?api-version=2019-01-16'
+versionEndpoint='https://maestro.dot.net/api/assets/darc-version?api-version=2019-01-16'
verbosity='minimal'
while [[ $# > 0 ]]; do
diff --git a/eng/common/dotnet-install.sh b/eng/common/dotnet-install.sh
index fdfeea66e7d43f..b09ea669f9c0aa 100755
--- a/eng/common/dotnet-install.sh
+++ b/eng/common/dotnet-install.sh
@@ -52,7 +52,7 @@ done
# Use uname to determine what the CPU is, see https://en.wikipedia.org/wiki/Uname#Examples
cpuname=$(uname -m)
case $cpuname in
- aarch64)
+ arm64|aarch64)
buildarch=arm64
;;
amd64|x86_64)
@@ -61,7 +61,7 @@ case $cpuname in
armv*l)
buildarch=arm
;;
- i686)
+ i[3-6]86)
buildarch=x86
;;
*)
diff --git a/eng/common/generate-graph-files.ps1 b/eng/common/generate-graph-files.ps1
deleted file mode 100644
index 0728b1a8b570d6..00000000000000
--- a/eng/common/generate-graph-files.ps1
+++ /dev/null
@@ -1,86 +0,0 @@
-Param(
- [Parameter(Mandatory=$true)][string] $barToken, # Token generated at https://maestro-prod.westus2.cloudapp.azure.com/Account/Tokens
- [Parameter(Mandatory=$true)][string] $gitHubPat, # GitHub personal access token from https://github.com/settings/tokens (no auth scopes needed)
- [Parameter(Mandatory=$true)][string] $azdoPat, # Azure Dev Ops tokens from https://dev.azure.com/dnceng/_details/security/tokens (code read scope needed)
- [Parameter(Mandatory=$true)][string] $outputFolder, # Where the graphviz.txt file will be created
- [string] $darcVersion, # darc's version
- [string] $graphvizVersion = '2.38', # GraphViz version
- [switch] $includeToolset # Whether the graph should include toolset dependencies or not. i.e. arcade, optimization. For more about
- # toolset dependencies see https://github.com/dotnet/arcade/blob/master/Documentation/Darc.md#toolset-vs-product-dependencies
-)
-
-function CheckExitCode ([string]$stage)
-{
- $exitCode = $LASTEXITCODE
- if ($exitCode -ne 0) {
- Write-PipelineTelemetryError -Category 'Arcade' -Message "Something failed in stage: '$stage'. Check for errors above. Exiting now..."
- ExitWithExitCode $exitCode
- }
-}
-
-try {
- $ErrorActionPreference = 'Stop'
- . $PSScriptRoot\tools.ps1
-
- Import-Module -Name (Join-Path $PSScriptRoot 'native\CommonLibrary.psm1')
-
- Push-Location $PSScriptRoot
-
- Write-Host 'Installing darc...'
- . .\darc-init.ps1 -darcVersion $darcVersion
- CheckExitCode 'Running darc-init'
-
- $engCommonBaseDir = Join-Path $PSScriptRoot 'native\'
- $graphvizInstallDir = CommonLibrary\Get-NativeInstallDirectory
- $nativeToolBaseUri = 'https://netcorenativeassets.blob.core.windows.net/resource-packages/external'
- $installBin = Join-Path $graphvizInstallDir 'bin'
-
- Write-Host 'Installing dot...'
- .\native\install-tool.ps1 -ToolName graphviz -InstallPath $installBin -BaseUri $nativeToolBaseUri -CommonLibraryDirectory $engCommonBaseDir -Version $graphvizVersion -Verbose
-
- $darcExe = "$env:USERPROFILE\.dotnet\tools"
- $darcExe = Resolve-Path "$darcExe\darc.exe"
-
- Create-Directory $outputFolder
-
- # Generate 3 graph descriptions:
- # 1. Flat with coherency information
- # 2. Graphviz (dot) file
- # 3. Standard dependency graph
- $graphVizFilePath = "$outputFolder\graphviz.txt"
- $graphVizImageFilePath = "$outputFolder\graph.png"
- $normalGraphFilePath = "$outputFolder\graph-full.txt"
- $flatGraphFilePath = "$outputFolder\graph-flat.txt"
- $baseOptions = @( '--github-pat', "$gitHubPat", '--azdev-pat', "$azdoPat", '--password', "$barToken" )
-
- if ($includeToolset) {
- Write-Host 'Toolsets will be included in the graph...'
- $baseOptions += @( '--include-toolset' )
- }
-
- Write-Host 'Generating standard dependency graph...'
- & "$darcExe" get-dependency-graph @baseOptions --output-file $normalGraphFilePath
- CheckExitCode 'Generating normal dependency graph'
-
- Write-Host 'Generating flat dependency graph and graphviz file...'
- & "$darcExe" get-dependency-graph @baseOptions --flat --coherency --graphviz $graphVizFilePath --output-file $flatGraphFilePath
- CheckExitCode 'Generating flat and graphviz dependency graph'
-
- Write-Host "Generating graph image $graphVizFilePath"
- $dotFilePath = Join-Path $installBin "graphviz\$graphvizVersion\release\bin\dot.exe"
- & "$dotFilePath" -Tpng -o"$graphVizImageFilePath" "$graphVizFilePath"
- CheckExitCode 'Generating graphviz image'
-
- Write-Host "'$graphVizFilePath', '$flatGraphFilePath', '$normalGraphFilePath' and '$graphVizImageFilePath' created!"
-}
-catch {
- if (!$includeToolset) {
- Write-Host 'This might be a toolset repo which includes only toolset dependencies. ' -NoNewline -ForegroundColor Yellow
- Write-Host 'Since -includeToolset is not set there is no graph to create. Include -includeToolset and try again...' -ForegroundColor Yellow
- }
- Write-Host $_.ScriptStackTrace
- Write-PipelineTelemetryError -Category 'Arcade' -Message $_
- ExitWithExitCode 1
-} finally {
- Pop-Location
-}
\ No newline at end of file
diff --git a/eng/common/generate-sbom-prep.ps1 b/eng/common/generate-sbom-prep.ps1
new file mode 100644
index 00000000000000..3e5c1c74a1c50d
--- /dev/null
+++ b/eng/common/generate-sbom-prep.ps1
@@ -0,0 +1,21 @@
+Param(
+ [Parameter(Mandatory=$true)][string] $ManifestDirPath # Manifest directory where sbom will be placed
+)
+
+. $PSScriptRoot\pipeline-logging-functions.ps1
+
+Write-Host "Creating dir $ManifestDirPath"
+# create directory for sbom manifest to be placed
+if (!(Test-Path -path $ManifestDirPath))
+{
+ New-Item -ItemType Directory -path $ManifestDirPath
+ Write-Host "Successfully created directory $ManifestDirPath"
+}
+else{
+ Write-PipelineTelemetryError -category 'Build' "Unable to create sbom folder."
+}
+
+Write-Host "Updating artifact name"
+$artifact_name = "${env:SYSTEM_STAGENAME}_${env:AGENT_JOBNAME}_SBOM" -replace '["/:<>\\|?@*"() ]', '_'
+Write-Host "Artifact name $artifact_name"
+Write-Host "##vso[task.setvariable variable=ARTIFACT_NAME]$artifact_name"
diff --git a/eng/common/generate-sbom-prep.sh b/eng/common/generate-sbom-prep.sh
new file mode 100644
index 00000000000000..d5c76dc827b496
--- /dev/null
+++ b/eng/common/generate-sbom-prep.sh
@@ -0,0 +1,34 @@
+#!/usr/bin/env bash
+
+source="${BASH_SOURCE[0]}"
+
+# resolve $SOURCE until the file is no longer a symlink
+while [[ -h $source ]]; do
+ scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
+ source="$(readlink "$source")"
+
+ # if $source was a relative symlink, we need to resolve it relative to the path where the
+ # symlink file was located
+ [[ $source != /* ]] && source="$scriptroot/$source"
+done
+scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
+. $scriptroot/pipeline-logging-functions.sh
+
+manifest_dir=$1
+
+if [ ! -d "$manifest_dir" ] ; then
+ mkdir -p "$manifest_dir"
+ echo "Sbom directory created." $manifest_dir
+else
+ Write-PipelineTelemetryError -category 'Build' "Unable to create sbom folder."
+fi
+
+artifact_name=$SYSTEM_STAGENAME"_"$AGENT_JOBNAME"_SBOM"
+echo "Artifact name before : "$artifact_name
+# replace all special characters with _, some builds use special characters like : in Agent.Jobname, that is not a permissible name while uploading artifacts.
+safe_artifact_name="${artifact_name//["/:<>\\|?@*$" ]/_}"
+echo "Artifact name after : "$safe_artifact_name
+export ARTIFACT_NAME=$safe_artifact_name
+echo "##vso[task.setvariable variable=ARTIFACT_NAME]$safe_artifact_name"
+
+exit 0
diff --git a/eng/common/init-tools-native.ps1 b/eng/common/init-tools-native.ps1
index db830c00a6f8d8..6c7a851a8087e0 100644
--- a/eng/common/init-tools-native.ps1
+++ b/eng/common/init-tools-native.ps1
@@ -31,6 +31,10 @@ Wait time between retry attempts in seconds
.PARAMETER GlobalJsonFile
File path to global.json file
+.PARAMETER PathPromotion
+Optional switch to enable either promote native tools specified in the global.json to the path (in Azure Pipelines)
+or break the build if a native tool is not found on the path (on a local dev machine)
+
.NOTES
#>
[CmdletBinding(PositionalBinding=$false)]
@@ -41,7 +45,8 @@ Param (
[switch] $Force = $False,
[int] $DownloadRetries = 5,
[int] $RetryWaitTimeInSeconds = 30,
- [string] $GlobalJsonFile
+ [string] $GlobalJsonFile,
+ [switch] $PathPromotion
)
if (!$GlobalJsonFile) {
@@ -77,53 +82,101 @@ try {
ConvertFrom-Json |
Select-Object -Expand 'native-tools' -ErrorAction SilentlyContinue
if ($NativeTools) {
- $NativeTools.PSObject.Properties | ForEach-Object {
- $ToolName = $_.Name
- $ToolVersion = $_.Value
- $LocalInstallerArguments = @{ ToolName = "$ToolName" }
- $LocalInstallerArguments += @{ InstallPath = "$InstallBin" }
- $LocalInstallerArguments += @{ BaseUri = "$BaseUri" }
- $LocalInstallerArguments += @{ CommonLibraryDirectory = "$EngCommonBaseDir" }
- $LocalInstallerArguments += @{ Version = "$ToolVersion" }
-
- if ($Verbose) {
- $LocalInstallerArguments += @{ Verbose = $True }
- }
- if (Get-Variable 'Force' -ErrorAction 'SilentlyContinue') {
- if($Force) {
- $LocalInstallerArguments += @{ Force = $True }
- }
- }
- if ($Clean) {
- $LocalInstallerArguments += @{ Clean = $True }
- }
-
- Write-Verbose "Installing $ToolName version $ToolVersion"
- Write-Verbose "Executing '$InstallerPath $($LocalInstallerArguments.Keys.ForEach({"-$_ '$($LocalInstallerArguments.$_)'"}) -join ' ')'"
- & $InstallerPath @LocalInstallerArguments
- if ($LASTEXITCODE -Ne "0") {
- $errMsg = "$ToolName installation failed"
- if ((Get-Variable 'DoNotAbortNativeToolsInstallationOnFailure' -ErrorAction 'SilentlyContinue') -and $DoNotAbortNativeToolsInstallationOnFailure) {
- $showNativeToolsWarning = $true
- if ((Get-Variable 'DoNotDisplayNativeToolsInstallationWarnings' -ErrorAction 'SilentlyContinue') -and $DoNotDisplayNativeToolsInstallationWarnings) {
- $showNativeToolsWarning = $false
+ if ($PathPromotion -eq $True) {
+ if ($env:SYSTEM_TEAMPROJECT) { # check to see if we're in an Azure pipelines build
+ $NativeTools.PSObject.Properties | ForEach-Object {
+ $ToolName = $_.Name
+ $ToolVersion = $_.Value
+ $InstalledTools = @{}
+
+ if ((Get-Command "$ToolName" -ErrorAction SilentlyContinue) -eq $null) {
+ if ($ToolVersion -eq "latest") {
+ $ToolVersion = ""
+ }
+ $ArcadeToolsDirectory = "C:\arcade-tools"
+ if (-not (Test-Path $ArcadeToolsDirectory)) {
+ Write-Error "Arcade tools directory '$ArcadeToolsDirectory' was not found; artifacts were not properly installed."
+ exit 1
+ }
+ $ToolDirectory = (Get-ChildItem -Path "$ArcadeToolsDirectory" -Filter "$ToolName-$ToolVersion*" | Sort-Object -Descending)[0]
+ if ([string]::IsNullOrWhiteSpace($ToolDirectory)) {
+ Write-Error "Unable to find directory for $ToolName $ToolVersion; please make sure the tool is installed on this image."
+ exit 1
}
- if ($showNativeToolsWarning) {
- Write-Warning $errMsg
+ $BinPathFile = "$($ToolDirectory.FullName)\binpath.txt"
+ if (-not (Test-Path -Path "$BinPathFile")) {
+ Write-Error "Unable to find binpath.txt in '$($ToolDirectory.FullName)' ($ToolName $ToolVersion); artifact is either installed incorrectly or is not a bootstrappable tool."
+ exit 1
}
- $toolInstallationFailure = $true
- } else {
- # We cannot change this to Write-PipelineTelemetryError because of https://github.com/dotnet/arcade/issues/4482
- Write-Host $errMsg
- exit 1
+ $BinPath = Get-Content "$BinPathFile"
+ $ToolPath = Convert-Path -Path $BinPath
+ Write-Host "Adding $ToolName to the path ($ToolPath)..."
+ Write-Host "##vso[task.prependpath]$ToolPath"
+ $env:PATH = "$ToolPath;$env:PATH"
+ $InstalledTools += @{ $ToolName = $ToolDirectory.FullName }
+ }
}
+ return $InstalledTools
+ } else {
+ $NativeTools.PSObject.Properties | ForEach-Object {
+ $ToolName = $_.Name
+ $ToolVersion = $_.Value
+
+ if ((Get-Command "$ToolName" -ErrorAction SilentlyContinue) -eq $null) {
+ Write-PipelineTelemetryError -Category 'NativeToolsBootstrap' -Message "$ToolName not found on path. Please install $ToolName $ToolVersion before proceeding."
+ }
+ }
+ exit 0
+ }
+ } else {
+ $NativeTools.PSObject.Properties | ForEach-Object {
+ $ToolName = $_.Name
+ $ToolVersion = $_.Value
+ $LocalInstallerArguments = @{ ToolName = "$ToolName" }
+ $LocalInstallerArguments += @{ InstallPath = "$InstallBin" }
+ $LocalInstallerArguments += @{ BaseUri = "$BaseUri" }
+ $LocalInstallerArguments += @{ CommonLibraryDirectory = "$EngCommonBaseDir" }
+ $LocalInstallerArguments += @{ Version = "$ToolVersion" }
+
+ if ($Verbose) {
+ $LocalInstallerArguments += @{ Verbose = $True }
+ }
+ if (Get-Variable 'Force' -ErrorAction 'SilentlyContinue') {
+ if($Force) {
+ $LocalInstallerArguments += @{ Force = $True }
+ }
+ }
+ if ($Clean) {
+ $LocalInstallerArguments += @{ Clean = $True }
+ }
+
+ Write-Verbose "Installing $ToolName version $ToolVersion"
+ Write-Verbose "Executing '$InstallerPath $($LocalInstallerArguments.Keys.ForEach({"-$_ '$($LocalInstallerArguments.$_)'"}) -join ' ')'"
+ & $InstallerPath @LocalInstallerArguments
+ if ($LASTEXITCODE -Ne "0") {
+ $errMsg = "$ToolName installation failed"
+ if ((Get-Variable 'DoNotAbortNativeToolsInstallationOnFailure' -ErrorAction 'SilentlyContinue') -and $DoNotAbortNativeToolsInstallationOnFailure) {
+ $showNativeToolsWarning = $true
+ if ((Get-Variable 'DoNotDisplayNativeToolsInstallationWarnings' -ErrorAction 'SilentlyContinue') -and $DoNotDisplayNativeToolsInstallationWarnings) {
+ $showNativeToolsWarning = $false
+ }
+ if ($showNativeToolsWarning) {
+ Write-Warning $errMsg
+ }
+ $toolInstallationFailure = $true
+ } else {
+ # We cannot change this to Write-PipelineTelemetryError because of https://github.com/dotnet/arcade/issues/4482
+ Write-Host $errMsg
+ exit 1
+ }
+ }
+ }
+
+ if ((Get-Variable 'toolInstallationFailure' -ErrorAction 'SilentlyContinue') -and $toolInstallationFailure) {
+ # We cannot change this to Write-PipelineTelemetryError because of https://github.com/dotnet/arcade/issues/4482
+ Write-Host 'Native tools bootstrap failed'
+ exit 1
}
- }
-
- if ((Get-Variable 'toolInstallationFailure' -ErrorAction 'SilentlyContinue') -and $toolInstallationFailure) {
- # We cannot change this to Write-PipelineTelemetryError because of https://github.com/dotnet/arcade/issues/4482
- Write-Host 'Native tools bootstrap failed'
- exit 1
}
}
else {
@@ -139,7 +192,7 @@ try {
Write-Host "##vso[task.prependpath]$(Convert-Path -Path $InstallBin)"
return $InstallBin
}
- else {
+ elseif (-not ($PathPromotion)) {
Write-PipelineTelemetryError -Category 'NativeToolsBootstrap' -Message 'Native tools install directory does not exist, installation failed'
exit 1
}
@@ -149,4 +202,4 @@ catch {
Write-Host $_.ScriptStackTrace
Write-PipelineTelemetryError -Category 'NativeToolsBootstrap' -Message $_
ExitWithExitCode 1
-}
+}
\ No newline at end of file
diff --git a/eng/common/init-tools-native.sh b/eng/common/init-tools-native.sh
index 5bd205b5da3b79..3e6a8d6acf2f57 100755
--- a/eng/common/init-tools-native.sh
+++ b/eng/common/init-tools-native.sh
@@ -10,7 +10,7 @@ force=false
download_retries=5
retry_wait_time_seconds=30
global_json_file="$(dirname "$(dirname "${scriptroot}")")/global.json"
-declare -A native_assets
+declare -a native_assets
. $scriptroot/pipeline-logging-functions.sh
. $scriptroot/native/common-library.sh
diff --git a/eng/common/internal/NuGet.config b/eng/common/internal/NuGet.config
new file mode 100644
index 00000000000000..19d3d311b166f5
--- /dev/null
+++ b/eng/common/internal/NuGet.config
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/eng/common/internal/Tools.csproj b/eng/common/internal/Tools.csproj
index beb9c4648ea19a..7f5ce6d6081338 100644
--- a/eng/common/internal/Tools.csproj
+++ b/eng/common/internal/Tools.csproj
@@ -8,6 +8,9 @@
+
+
+
diff --git a/eng/common/native/common-library.sh b/eng/common/native/common-library.sh
index bf272dcf55a538..080c2c283ae468 100755
--- a/eng/common/native/common-library.sh
+++ b/eng/common/native/common-library.sh
@@ -148,8 +148,12 @@ function NewScriptShim {
fi
if [[ ! -f $tool_file_path ]]; then
- Write-PipelineTelemetryError -category 'NativeToolsBootstrap' "Specified tool file path:'$tool_file_path' does not exist"
- return 1
+ # try to see if the path is lower cased
+ tool_file_path="$(echo $tool_file_path | tr "[:upper:]" "[:lower:]")"
+ if [[ ! -f $tool_file_path ]]; then
+ Write-PipelineTelemetryError -category 'NativeToolsBootstrap' "Specified tool file path:'$tool_file_path' does not exist"
+ return 1
+ fi
fi
local shim_contents=$'#!/usr/bin/env bash\n'
diff --git a/eng/common/post-build/add-build-to-channel.ps1 b/eng/common/post-build/add-build-to-channel.ps1
index de2d957922a653..49938f0c89f768 100644
--- a/eng/common/post-build/add-build-to-channel.ps1
+++ b/eng/common/post-build/add-build-to-channel.ps1
@@ -2,7 +2,7 @@ param(
[Parameter(Mandatory=$true)][int] $BuildId,
[Parameter(Mandatory=$true)][int] $ChannelId,
[Parameter(Mandatory=$true)][string] $MaestroApiAccessToken,
- [Parameter(Mandatory=$false)][string] $MaestroApiEndPoint = 'https://maestro-prod.westus2.cloudapp.azure.com',
+ [Parameter(Mandatory=$false)][string] $MaestroApiEndPoint = 'https://maestro.dot.net',
[Parameter(Mandatory=$false)][string] $MaestroApiVersion = '2019-01-16'
)
diff --git a/eng/common/post-build/publish-using-darc.ps1 b/eng/common/post-build/publish-using-darc.ps1
index 2427ca6b6aec74..5a3a32ea8d75b4 100644
--- a/eng/common/post-build/publish-using-darc.ps1
+++ b/eng/common/post-build/publish-using-darc.ps1
@@ -3,21 +3,16 @@ param(
[Parameter(Mandatory=$true)][int] $PublishingInfraVersion,
[Parameter(Mandatory=$true)][string] $AzdoToken,
[Parameter(Mandatory=$true)][string] $MaestroToken,
- [Parameter(Mandatory=$false)][string] $MaestroApiEndPoint = 'https://maestro-prod.westus2.cloudapp.azure.com',
+ [Parameter(Mandatory=$false)][string] $MaestroApiEndPoint = 'https://maestro.dot.net',
[Parameter(Mandatory=$true)][string] $WaitPublishingFinish,
- [Parameter(Mandatory=$false)][string] $EnableSourceLinkValidation,
- [Parameter(Mandatory=$false)][string] $EnableSigningValidation,
- [Parameter(Mandatory=$false)][string] $EnableNugetValidation,
- [Parameter(Mandatory=$false)][string] $PublishInstallersAndChecksums,
[Parameter(Mandatory=$false)][string] $ArtifactsPublishingAdditionalParameters,
- [Parameter(Mandatory=$false)][string] $SymbolPublishingAdditionalParameters,
- [Parameter(Mandatory=$false)][string] $SigningValidationAdditionalParameters
+ [Parameter(Mandatory=$false)][string] $SymbolPublishingAdditionalParameters
)
try {
. $PSScriptRoot\post-build-utils.ps1
- $darc = Get-Darc
+ $darc = Get-Darc
$optionalParams = [System.Collections.ArrayList]::new()
@@ -35,27 +30,6 @@ try {
$optionalParams.Add("--no-wait") | Out-Null
}
- if ("false" -ne $PublishInstallersAndChecksums) {
- $optionalParams.Add("--publish-installers-and-checksums") | Out-Null
- }
-
- if ("true" -eq $EnableNugetValidation) {
- $optionalParams.Add("--validate-nuget") | Out-Null
- }
-
- if ("true" -eq $EnableSourceLinkValidation) {
- $optionalParams.Add("--validate-sourcelinkchecksums") | Out-Null
- }
-
- if ("true" -eq $EnableSigningValidation) {
- $optionalParams.Add("--validate-signingchecksums") | Out-Null
-
- if ("" -ne $SigningValidationAdditionalParameters) {
- $optionalParams.Add("--signing-validation-parameters") | Out-Null
- $optionalParams.Add($SigningValidationAdditionalParameters) | Out-Null
- }
- }
-
& $darc add-build-to-channel `
--id $buildId `
--publishing-infra-version $PublishingInfraVersion `
@@ -72,7 +46,7 @@ try {
}
Write-Host 'done.'
-}
+}
catch {
Write-Host $_
Write-PipelineTelemetryError -Category 'PromoteBuild' -Message "There was an error while trying to publish build '$BuildId' to default channels."
diff --git a/eng/common/post-build/sourcelink-validation.ps1 b/eng/common/post-build/sourcelink-validation.ps1
index 85c89861719ada..e8ab29afeb3330 100644
--- a/eng/common/post-build/sourcelink-validation.ps1
+++ b/eng/common/post-build/sourcelink-validation.ps1
@@ -17,6 +17,7 @@ $global:RepoFiles = @{}
$MaxParallelJobs = 16
$MaxRetries = 5
+$RetryWaitTimeInSeconds = 30
# Wait time between check for system load
$SecondsBetweenLoadChecks = 10
@@ -99,21 +100,25 @@ $ValidatePackage = {
$Status = 200
$Cache = $using:RepoFiles
- $totalRetries = 0
+ $attempts = 0
- while ($totalRetries -lt $using:MaxRetries) {
+ while ($attempts -lt $using:MaxRetries) {
if ( !($Cache.ContainsKey($FilePath)) ) {
try {
$Uri = $Link -as [System.URI]
- # Only GitHub links are valid
- if ($Uri.AbsoluteURI -ne $null -and ($Uri.Host -match 'github' -or $Uri.Host -match 'githubusercontent')) {
+ if ($Link -match "submodules") {
+ # Skip submodule links until sourcelink properly handles submodules
+ $Status = 200
+ }
+ elseif ($Uri.AbsoluteURI -ne $null -and ($Uri.Host -match 'github' -or $Uri.Host -match 'githubusercontent')) {
+ # Only GitHub links are valid
$Status = (Invoke-WebRequest -Uri $Link -UseBasicParsing -Method HEAD -TimeoutSec 5).StatusCode
}
else {
# If it's not a github link, we want to break out of the loop and not retry.
$Status = 0
- $totalRetries = $using:MaxRetries
+ $attempts = $using:MaxRetries
}
}
catch {
@@ -123,9 +128,15 @@ $ValidatePackage = {
}
if ($Status -ne 200) {
- $totalRetries++
+ $attempts++
- if ($totalRetries -ge $using:MaxRetries) {
+ if ($attempts -lt $using:MaxRetries)
+ {
+ $attemptsLeft = $using:MaxRetries - $attempts
+ Write-Warning "Download failed, $attemptsLeft attempts remaining, will retry in $using:RetryWaitTimeInSeconds seconds"
+ Start-Sleep -Seconds $using:RetryWaitTimeInSeconds
+ }
+ else {
if ($NumFailedLinks -eq 0) {
if ($FailedFiles.Value -eq 0) {
Write-Host
diff --git a/eng/common/post-build/trigger-subscriptions.ps1 b/eng/common/post-build/trigger-subscriptions.ps1
index 55dea518ac5850..ac9a95778fcd9e 100644
--- a/eng/common/post-build/trigger-subscriptions.ps1
+++ b/eng/common/post-build/trigger-subscriptions.ps1
@@ -2,7 +2,7 @@ param(
[Parameter(Mandatory=$true)][string] $SourceRepo,
[Parameter(Mandatory=$true)][int] $ChannelId,
[Parameter(Mandatory=$true)][string] $MaestroApiAccessToken,
- [Parameter(Mandatory=$false)][string] $MaestroApiEndPoint = 'https://maestro-prod.westus2.cloudapp.azure.com',
+ [Parameter(Mandatory=$false)][string] $MaestroApiEndPoint = 'https://maestro.dot.net',
[Parameter(Mandatory=$false)][string] $MaestroApiVersion = '2019-01-16'
)
diff --git a/eng/common/retain-build.ps1 b/eng/common/retain-build.ps1
new file mode 100644
index 00000000000000..e7ba975adeb6b1
--- /dev/null
+++ b/eng/common/retain-build.ps1
@@ -0,0 +1,45 @@
+
+Param(
+[Parameter(Mandatory=$true)][int] $buildId,
+[Parameter(Mandatory=$true)][string] $azdoOrgUri,
+[Parameter(Mandatory=$true)][string] $azdoProject,
+[Parameter(Mandatory=$true)][string] $token
+)
+
+$ErrorActionPreference = 'Stop'
+Set-StrictMode -Version 2.0
+
+function Get-AzDOHeaders(
+ [string] $token)
+{
+ $base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":${token}"))
+ $headers = @{"Authorization"="Basic $base64AuthInfo"}
+ return $headers
+}
+
+function Update-BuildRetention(
+ [string] $azdoOrgUri,
+ [string] $azdoProject,
+ [int] $buildId,
+ [string] $token)
+{
+ $headers = Get-AzDOHeaders -token $token
+ $requestBody = "{
+ `"keepForever`": `"true`"
+ }"
+
+ $requestUri = "${azdoOrgUri}/${azdoProject}/_apis/build/builds/${buildId}?api-version=6.0"
+ write-Host "Attempting to retain build using the following URI: ${requestUri} ..."
+
+ try {
+ Invoke-RestMethod -Uri $requestUri -Method Patch -Body $requestBody -Header $headers -contentType "application/json"
+ Write-Host "Updated retention settings for build ${buildId}."
+ }
+ catch {
+ Write-Error "Failed to update retention settings for build: $_.Exception.Response.StatusDescription"
+ exit 1
+ }
+}
+
+Update-BuildRetention -azdoOrgUri $azdoOrgUri -azdoProject $azdoProject -buildId $buildId -token $token
+exit 0
diff --git a/eng/common/sdl/configure-sdl-tool.ps1 b/eng/common/sdl/configure-sdl-tool.ps1
index 4999c307088a03..adea8e8da2ab24 100644
--- a/eng/common/sdl/configure-sdl-tool.ps1
+++ b/eng/common/sdl/configure-sdl-tool.ps1
@@ -15,7 +15,9 @@ Param(
# Optional: Additional params to add to any tool using CredScan.
[string[]] $CrScanAdditionalRunConfigParams,
# Optional: Additional params to add to any tool using PoliCheck.
- [string[]] $PoliCheckAdditionalRunConfigParams
+ [string[]] $PoliCheckAdditionalRunConfigParams,
+ # Optional: Additional params to add to any tool using CodeQL/Semmle.
+ [string[]] $CodeQLAdditionalRunConfigParams
)
$ErrorActionPreference = 'Stop'
@@ -78,6 +80,11 @@ try {
$tool.Args += "Target < $TargetDirectory"
}
$tool.Args += $PoliCheckAdditionalRunConfigParams
+ } elseif ($tool.Name -eq 'semmle' -or $tool.Name -eq 'codeql') {
+ if ($targetDirectory) {
+ $tool.Args += "`"SourceCodeDirectory < $TargetDirectory`""
+ }
+ $tool.Args += $CodeQLAdditionalRunConfigParams
}
# Create variable pointing to the args array directly so we can use splat syntax later.
diff --git a/eng/common/sdl/execute-all-sdl-tools.ps1 b/eng/common/sdl/execute-all-sdl-tools.ps1
index 1157151f4862a2..b9fe7317964319 100644
--- a/eng/common/sdl/execute-all-sdl-tools.ps1
+++ b/eng/common/sdl/execute-all-sdl-tools.ps1
@@ -34,6 +34,7 @@ Param(
[string] $GuardianLoggerLevel='Standard', # Optional: the logger level for the Guardian CLI; options are Trace, Verbose, Standard, Warning, and Error
[string[]] $CrScanAdditionalRunConfigParams, # Optional: Additional Params to custom build a CredScan run config in the format @("xyz:abc","sdf:1")
[string[]] $PoliCheckAdditionalRunConfigParams, # Optional: Additional Params to custom build a Policheck run config in the format @("xyz:abc","sdf:1")
+ [string[]] $CodeQLAdditionalRunConfigParams, # Optional: Additional Params to custom build a Semmle/CodeQL run config in the format @("xyz < abc","sdf < 1")
[bool] $BreakOnFailure=$False # Optional: Fail the build if there were errors during the run
)
@@ -105,7 +106,8 @@ try {
-AzureDevOpsAccessToken $AzureDevOpsAccessToken `
-GuardianLoggerLevel $GuardianLoggerLevel `
-CrScanAdditionalRunConfigParams $CrScanAdditionalRunConfigParams `
- -PoliCheckAdditionalRunConfigParams $PoliCheckAdditionalRunConfigParams
+ -PoliCheckAdditionalRunConfigParams $PoliCheckAdditionalRunConfigParams `
+ -CodeQLAdditionalRunConfigParams $CodeQLAdditionalRunConfigParams
if ($BreakOnFailure) {
Exit-IfNZEC "Sdl"
}
diff --git a/eng/common/sdl/packages.config b/eng/common/sdl/packages.config
index 3bd8b29ebd721b..b7bcfe38caf15f 100644
--- a/eng/common/sdl/packages.config
+++ b/eng/common/sdl/packages.config
@@ -1,4 +1,4 @@
-
+
diff --git a/eng/common/sdl/sdl.ps1 b/eng/common/sdl/sdl.ps1
new file mode 100644
index 00000000000000..648c5068d7d60f
--- /dev/null
+++ b/eng/common/sdl/sdl.ps1
@@ -0,0 +1,38 @@
+
+function Install-Gdn {
+ param(
+ [Parameter(Mandatory=$true)]
+ [string]$Path,
+
+ # If omitted, install the latest version of Guardian, otherwise install that specific version.
+ [string]$Version
+ )
+
+ $ErrorActionPreference = 'Stop'
+ Set-StrictMode -Version 2.0
+ $disableConfigureToolsetImport = $true
+ $global:LASTEXITCODE = 0
+
+ # `tools.ps1` checks $ci to perform some actions. Since the SDL
+ # scripts don't necessarily execute in the same agent that run the
+ # build.ps1/sh script this variable isn't automatically set.
+ $ci = $true
+ . $PSScriptRoot\..\tools.ps1
+
+ $argumentList = @("install", "Microsoft.Guardian.Cli", "-Source https://securitytools.pkgs.visualstudio.com/_packaging/Guardian/nuget/v3/index.json", "-OutputDirectory $Path", "-NonInteractive", "-NoCache")
+
+ if ($Version) {
+ $argumentList += "-Version $Version"
+ }
+
+ Start-Process nuget -Verbose -ArgumentList $argumentList -NoNewWindow -Wait
+
+ $gdnCliPath = Get-ChildItem -Filter guardian.cmd -Recurse -Path $Path
+
+ if (!$gdnCliPath)
+ {
+ Write-PipelineTelemetryError -Category 'Sdl' -Message 'Failure installing Guardian'
+ }
+
+ return $gdnCliPath.FullName
+}
\ No newline at end of file
diff --git a/eng/common/templates-official/job/job.yml b/eng/common/templates-official/job/job.yml
new file mode 100644
index 00000000000000..21945ebdc9e31c
--- /dev/null
+++ b/eng/common/templates-official/job/job.yml
@@ -0,0 +1,277 @@
+# Internal resources (telemetry, microbuild) can only be accessed from non-public projects,
+# and some (Microbuild) should only be applied to non-PR cases for internal builds.
+
+parameters:
+# Job schema parameters - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job
+ cancelTimeoutInMinutes: ''
+ condition: ''
+ container: ''
+ continueOnError: false
+ dependsOn: ''
+ displayName: ''
+ pool: ''
+ steps: []
+ strategy: ''
+ timeoutInMinutes: ''
+ variables: []
+ workspace: ''
+ templateContext: ''
+
+# Job base template specific parameters
+ # See schema documentation - https://github.com/dotnet/arcade/blob/master/Documentation/AzureDevOps/TemplateSchema.md
+ artifacts: ''
+ enableMicrobuild: false
+ enablePublishBuildArtifacts: false
+ enablePublishBuildAssets: false
+ enablePublishTestResults: false
+ enablePublishUsingPipelines: false
+ disableComponentGovernance: ''
+ mergeTestResults: false
+ testRunTitle: ''
+ testResultsFormat: ''
+ name: ''
+ preSteps: []
+ runAsPublic: false
+# Sbom related params
+ enableSbom: true
+ PackageVersion: 6.0.0
+ BuildDropPath: '$(Build.SourcesDirectory)/artifacts'
+
+jobs:
+- job: ${{ parameters.name }}
+
+ ${{ if ne(parameters.cancelTimeoutInMinutes, '') }}:
+ cancelTimeoutInMinutes: ${{ parameters.cancelTimeoutInMinutes }}
+
+ ${{ if ne(parameters.condition, '') }}:
+ condition: ${{ parameters.condition }}
+
+ ${{ if ne(parameters.container, '') }}:
+ container: ${{ parameters.container }}
+
+ ${{ if ne(parameters.continueOnError, '') }}:
+ continueOnError: ${{ parameters.continueOnError }}
+
+ ${{ if ne(parameters.dependsOn, '') }}:
+ dependsOn: ${{ parameters.dependsOn }}
+
+ ${{ if ne(parameters.displayName, '') }}:
+ displayName: ${{ parameters.displayName }}
+
+ ${{ if ne(parameters.pool, '') }}:
+ pool: ${{ parameters.pool }}
+
+ ${{ if ne(parameters.strategy, '') }}:
+ strategy: ${{ parameters.strategy }}
+
+ ${{ if ne(parameters.timeoutInMinutes, '') }}:
+ timeoutInMinutes: ${{ parameters.timeoutInMinutes }}
+
+ ${{ if ne(parameters.templateContext, '') }}:
+ templateContext: ${{ parameters.templateContext }}
+
+ variables:
+ - ${{ if ne(parameters.enableTelemetry, 'false') }}:
+ - name: DOTNET_CLI_TELEMETRY_PROFILE
+ value: '$(Build.Repository.Uri)'
+ - ${{ if eq(parameters.enableRichCodeNavigation, 'true') }}:
+ - name: EnableRichCodeNavigation
+ value: 'true'
+ # Retry signature validation up to three times, waiting 2 seconds between attempts.
+ # See https://learn.microsoft.com/en-us/nuget/reference/errors-and-warnings/nu3028#retry-untrusted-root-failures
+ - name: NUGET_EXPERIMENTAL_CHAIN_BUILD_RETRY_POLICY
+ value: 3,2000
+ - ${{ each variable in parameters.variables }}:
+ # handle name-value variable syntax
+ # example:
+ # - name: [key]
+ # value: [value]
+ - ${{ if ne(variable.name, '') }}:
+ - name: ${{ variable.name }}
+ value: ${{ variable.value }}
+
+ # handle variable groups
+ - ${{ if ne(variable.group, '') }}:
+ - group: ${{ variable.group }}
+
+ # handle key-value variable syntax.
+ # example:
+ # - [key]: [value]
+ - ${{ if and(eq(variable.name, ''), eq(variable.group, '')) }}:
+ - ${{ each pair in variable }}:
+ - name: ${{ pair.key }}
+ value: ${{ pair.value }}
+
+ # DotNet-HelixApi-Access provides 'HelixApiAccessToken' for internal builds
+ - ${{ if and(eq(parameters.enableTelemetry, 'true'), eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
+ - group: DotNet-HelixApi-Access
+
+ ${{ if ne(parameters.workspace, '') }}:
+ workspace: ${{ parameters.workspace }}
+
+ steps:
+ - ${{ if ne(parameters.preSteps, '') }}:
+ - ${{ each preStep in parameters.preSteps }}:
+ - ${{ preStep }}
+
+ - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
+ - ${{ if eq(parameters.enableMicrobuild, 'true') }}:
+ - task: MicroBuildSigningPlugin@4
+ displayName: Install MicroBuild plugin
+ inputs:
+ signType: $(_SignType)
+ zipSources: false
+ feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json
+ env:
+ TeamName: $(_TeamName)
+ MicroBuildOutputFolderOverride: '$(Agent.TempDirectory)'
+ continueOnError: ${{ parameters.continueOnError }}
+ condition: and(succeeded(), in(variables['_SignType'], 'real', 'test'), eq(variables['Agent.Os'], 'Windows_NT'))
+
+ - task: NuGetAuthenticate@1
+
+ - ${{ if or(eq(parameters.artifacts.download, 'true'), ne(parameters.artifacts.download, '')) }}:
+ - task: DownloadPipelineArtifact@2
+ inputs:
+ buildType: current
+ artifactName: ${{ coalesce(parameters.artifacts.download.name, 'Artifacts_$(Agent.OS)_$(_BuildConfig)') }}
+ targetPath: ${{ coalesce(parameters.artifacts.download.path, 'artifacts') }}
+ itemPattern: ${{ coalesce(parameters.artifacts.download.pattern, '**') }}
+
+ - ${{ each step in parameters.steps }}:
+ - ${{ step }}
+
+ - ${{ if eq(parameters.enableRichCodeNavigation, true) }}:
+ - task: RichCodeNavIndexer@0
+ displayName: RichCodeNav Upload
+ inputs:
+ languages: ${{ coalesce(parameters.richCodeNavigationLanguage, 'csharp') }}
+ environment: ${{ coalesce(parameters.richCodeNavigationEnvironment, 'production') }}
+ richNavLogOutputDirectory: $(Build.SourcesDirectory)/artifacts/bin
+ continueOnError: true
+
+ - template: /eng/common/templates-official/steps/component-governance.yml
+ parameters:
+ ${{ if eq(parameters.disableComponentGovernance, '') }}:
+ ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.runAsPublic, 'false'), or(startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'), startsWith(variables['Build.SourceBranch'], 'refs/heads/dotnet/'), startsWith(variables['Build.SourceBranch'], 'refs/heads/microsoft/'), eq(variables['Build.SourceBranch'], 'refs/heads/main'))) }}:
+ disableComponentGovernance: false
+ ${{ else }}:
+ disableComponentGovernance: true
+ ${{ else }}:
+ disableComponentGovernance: ${{ parameters.disableComponentGovernance }}
+
+ - ${{ if eq(parameters.enableMicrobuild, 'true') }}:
+ - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
+ - task: MicroBuildCleanup@1
+ displayName: Execute Microbuild cleanup tasks
+ condition: and(always(), in(variables['_SignType'], 'real', 'test'), eq(variables['Agent.Os'], 'Windows_NT'))
+ continueOnError: ${{ parameters.continueOnError }}
+ env:
+ TeamName: $(_TeamName)
+
+ - ${{ if ne(parameters.artifacts.publish, '') }}:
+ - ${{ if or(eq(parameters.artifacts.publish.artifacts, 'true'), ne(parameters.artifacts.publish.artifacts, '')) }}:
+ - task: CopyFiles@2
+ displayName: Gather binaries for publish to artifacts
+ inputs:
+ SourceFolder: 'artifacts/bin'
+ Contents: '**'
+ TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/bin'
+ - task: CopyFiles@2
+ displayName: Gather packages for publish to artifacts
+ inputs:
+ SourceFolder: 'artifacts/packages'
+ Contents: '**'
+ TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/packages'
+ - task: 1ES.PublishBuildArtifacts@1
+ displayName: Publish pipeline artifacts
+ inputs:
+ PathtoPublish: '$(Build.ArtifactStagingDirectory)/artifacts'
+ PublishLocation: Container
+ ArtifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }}
+ continueOnError: true
+ condition: always()
+ - ${{ if or(eq(parameters.artifacts.publish.logs, 'true'), ne(parameters.artifacts.publish.logs, '')) }}:
+ - task: 1ES.PublishPipelineArtifact@1
+ inputs:
+ targetPath: 'artifacts/log'
+ artifactName: ${{ coalesce(parameters.artifacts.publish.logs.name, 'Logs_Build_$(Agent.Os)_$(_BuildConfig)') }}
+ displayName: 'Publish logs'
+ continueOnError: true
+ condition: always()
+
+ - ${{ if or(eq(parameters.artifacts.publish.manifests, 'true'), ne(parameters.artifacts.publish.manifests, '')) }}:
+ - ${{ if and(ne(parameters.enablePublishUsingPipelines, 'true'), eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
+ - task: CopyFiles@2
+ displayName: Gather Asset Manifests
+ inputs:
+ SourceFolder: '$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)/AssetManifest'
+ TargetFolder: '$(Build.ArtifactStagingDirectory)/AssetManifests'
+ continueOnError: ${{ parameters.continueOnError }}
+ condition: and(succeeded(), eq(variables['_DotNetPublishToBlobFeed'], 'true'))
+
+ - task: 1ES.PublishBuildArtifacts@1
+ displayName: Push Asset Manifests
+ inputs:
+ PathtoPublish: '$(Build.ArtifactStagingDirectory)/AssetManifests'
+ PublishLocation: Container
+ ArtifactName: AssetManifests
+ continueOnError: ${{ parameters.continueOnError }}
+ condition: and(succeeded(), eq(variables['_DotNetPublishToBlobFeed'], 'true'))
+
+ - ${{ if ne(parameters.enablePublishBuildArtifacts, 'false') }}:
+ - task: 1ES.PublishBuildArtifacts@1
+ displayName: Publish Logs
+ inputs:
+ PathtoPublish: '$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)'
+ PublishLocation: Container
+ ArtifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)' ) }}
+ continueOnError: true
+ condition: always()
+
+ - ${{ if or(and(eq(parameters.enablePublishTestResults, 'true'), eq(parameters.testResultsFormat, '')), eq(parameters.testResultsFormat, 'xunit')) }}:
+ - task: PublishTestResults@2
+ displayName: Publish XUnit Test Results
+ inputs:
+ testResultsFormat: 'xUnit'
+ testResultsFiles: '*.xml'
+ searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)'
+ testRunTitle: ${{ coalesce(parameters.testRunTitle, parameters.name, '$(System.JobName)') }}-xunit
+ mergeTestResults: ${{ parameters.mergeTestResults }}
+ continueOnError: true
+ condition: always()
+ - ${{ if or(and(eq(parameters.enablePublishTestResults, 'true'), eq(parameters.testResultsFormat, '')), eq(parameters.testResultsFormat, 'vstest')) }}:
+ - task: PublishTestResults@2
+ displayName: Publish TRX Test Results
+ inputs:
+ testResultsFormat: 'VSTest'
+ testResultsFiles: '*.trx'
+ searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)'
+ testRunTitle: ${{ coalesce(parameters.testRunTitle, parameters.name, '$(System.JobName)') }}-trx
+ mergeTestResults: ${{ parameters.mergeTestResults }}
+ continueOnError: true
+ condition: always()
+
+ - ${{ if and(eq(parameters.enablePublishBuildAssets, true), ne(parameters.enablePublishUsingPipelines, 'true'), eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
+ - task: CopyFiles@2
+ displayName: Gather Asset Manifests
+ inputs:
+ SourceFolder: '$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)/AssetManifest'
+ TargetFolder: '$(Build.StagingDirectory)/AssetManifests'
+ continueOnError: ${{ parameters.continueOnError }}
+ condition: and(succeeded(), eq(variables['_DotNetPublishToBlobFeed'], 'true'))
+
+ - task: 1ES.PublishBuildArtifacts@1
+ displayName: Push Asset Manifests
+ inputs:
+ PathtoPublish: '$(Build.StagingDirectory)/AssetManifests'
+ PublishLocation: Container
+ ArtifactName: AssetManifests
+ continueOnError: ${{ parameters.continueOnError }}
+ condition: and(succeeded(), eq(variables['_DotNetPublishToBlobFeed'], 'true'))
+
+ - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.enableSbom, 'true')) }}:
+ - template: /eng/common/templates-official/steps/generate-sbom.yml
+ parameters:
+ PackageVersion: ${{ parameters.packageVersion}}
+ BuildDropPath: ${{ parameters.buildDropPath }}
diff --git a/eng/common/templates-official/job/onelocbuild.yml b/eng/common/templates-official/job/onelocbuild.yml
new file mode 100644
index 00000000000000..08df5637599d4d
--- /dev/null
+++ b/eng/common/templates-official/job/onelocbuild.yml
@@ -0,0 +1,109 @@
+parameters:
+ # Optional: dependencies of the job
+ dependsOn: ''
+
+ # Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool
+ pool: ''
+
+ CeapexPat: $(dn-bot-ceapex-package-r) # PAT for the loc AzDO instance https://dev.azure.com/ceapex
+ GithubPat: $(BotAccount-dotnet-bot-repo-PAT)
+
+ SourcesDirectory: $(Build.SourcesDirectory)
+ CreatePr: true
+ AutoCompletePr: false
+ ReusePr: true
+ UseLfLineEndings: true
+ UseCheckedInLocProjectJson: false
+ LanguageSet: VS_Main_Languages
+ LclSource: lclFilesInRepo
+ LclPackageId: ''
+ RepoType: gitHub
+ GitHubOrg: dotnet
+ MirrorRepo: ''
+ MirrorBranch: main
+ condition: ''
+
+jobs:
+- job: OneLocBuild
+
+ dependsOn: ${{ parameters.dependsOn }}
+
+ displayName: OneLocBuild
+
+ ${{ if ne(parameters.pool, '') }}:
+ pool: ${{ parameters.pool }}
+ ${{ if eq(parameters.pool, '') }}:
+ pool:
+ # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
+ ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
+ name: AzurePipelines-EO
+ image: 1ESPT-Windows2022
+ demands: Cmd
+ os: windows
+ # If it's not devdiv, it's dnceng
+ ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}:
+ name: NetCore1ESPool-Svc-Internal
+ image: 1es-windows-2022
+ os: windows
+
+ variables:
+ - group: OneLocBuildVariables # Contains the CeapexPat and GithubPat
+ - name: _GenerateLocProjectArguments
+ value: -SourcesDirectory ${{ parameters.SourcesDirectory }}
+ -LanguageSet "${{ parameters.LanguageSet }}"
+ -CreateNeutralXlfs
+ - ${{ if eq(parameters.UseCheckedInLocProjectJson, 'true') }}:
+ - name: _GenerateLocProjectArguments
+ value: ${{ variables._GenerateLocProjectArguments }} -UseCheckedInLocProjectJson
+
+
+ steps:
+ - task: Powershell@2
+ inputs:
+ filePath: $(Build.SourcesDirectory)/eng/common/generate-locproject.ps1
+ arguments: $(_GenerateLocProjectArguments)
+ displayName: Generate LocProject.json
+ condition: ${{ parameters.condition }}
+
+ - task: OneLocBuild@2
+ displayName: OneLocBuild
+ env:
+ SYSTEM_ACCESSTOKEN: $(System.AccessToken)
+ inputs:
+ locProj: eng/Localize/LocProject.json
+ outDir: $(Build.ArtifactStagingDirectory)
+ lclSource: ${{ parameters.LclSource }}
+ lclPackageId: ${{ parameters.LclPackageId }}
+ isCreatePrSelected: ${{ parameters.CreatePr }}
+ ${{ if eq(parameters.CreatePr, true) }}:
+ isAutoCompletePrSelected: ${{ parameters.AutoCompletePr }}
+ isUseLfLineEndingsSelected: ${{ parameters.UseLfLineEndings }}
+ ${{ if eq(parameters.RepoType, 'gitHub') }}:
+ isShouldReusePrSelected: ${{ parameters.ReusePr }}
+ packageSourceAuth: patAuth
+ patVariable: ${{ parameters.CeapexPat }}
+ ${{ if eq(parameters.RepoType, 'gitHub') }}:
+ repoType: ${{ parameters.RepoType }}
+ gitHubPatVariable: "${{ parameters.GithubPat }}"
+ ${{ if ne(parameters.MirrorRepo, '') }}:
+ isMirrorRepoSelected: true
+ gitHubOrganization: ${{ parameters.GitHubOrg }}
+ mirrorRepo: ${{ parameters.MirrorRepo }}
+ mirrorBranch: ${{ parameters.MirrorBranch }}
+ condition: ${{ parameters.condition }}
+
+ - task: 1ES.PublishBuildArtifacts@1
+ displayName: Publish Localization Files
+ inputs:
+ PathtoPublish: '$(Build.ArtifactStagingDirectory)/loc'
+ PublishLocation: Container
+ ArtifactName: Loc
+ condition: ${{ parameters.condition }}
+
+ - task: 1ES.PublishBuildArtifacts@1
+ displayName: Publish LocProject.json
+ inputs:
+ PathtoPublish: '$(Build.SourcesDirectory)/eng/Localize/'
+ PublishLocation: Container
+ ArtifactName: Loc
+ condition: ${{ parameters.condition }}
\ No newline at end of file
diff --git a/eng/common/templates-official/job/publish-build-assets.yml b/eng/common/templates-official/job/publish-build-assets.yml
new file mode 100644
index 00000000000000..1d84eb301c46c2
--- /dev/null
+++ b/eng/common/templates-official/job/publish-build-assets.yml
@@ -0,0 +1,123 @@
+parameters:
+ configuration: 'Debug'
+
+ # Optional: condition for the job to run
+ condition: ''
+
+ # Optional: 'true' if future jobs should run even if this job fails
+ continueOnError: false
+
+ # Optional: dependencies of the job
+ dependsOn: ''
+
+ # Optional: Include PublishBuildArtifacts task
+ enablePublishBuildArtifacts: false
+
+ # Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool
+ pool: {}
+
+ # Optional: should run as a public build even in the internal project
+ # if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects.
+ runAsPublic: false
+
+ # Optional: whether the build's artifacts will be published using release pipelines or direct feed publishing
+ publishUsingPipelines: false
+
+jobs:
+- job: Asset_Registry_Publish
+
+ dependsOn: ${{ parameters.dependsOn }}
+
+ displayName: Publish to Build Asset Registry
+
+ pool: ${{ parameters.pool }}
+
+ variables:
+ - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
+ - name: _BuildConfig
+ value: ${{ parameters.configuration }}
+ - group: Publish-Build-Assets
+ - group: AzureDevOps-Artifact-Feeds-Pats
+ - name: runCodesignValidationInjection
+ value: false
+
+ steps:
+ - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
+ - task: DownloadBuildArtifacts@0
+ displayName: Download artifact
+ inputs:
+ artifactName: AssetManifests
+ downloadPath: '$(Build.StagingDirectory)/Download'
+ checkDownloadedFiles: true
+ condition: ${{ parameters.condition }}
+ continueOnError: ${{ parameters.continueOnError }}
+
+ - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
+ - task: NuGetAuthenticate@1
+
+ - task: PowerShell@2
+ displayName: Enable cross-org NuGet feed authentication
+ inputs:
+ filePath: $(Build.SourcesDirectory)/eng/common/enable-cross-org-publishing.ps1
+ arguments: -token $(dn-bot-all-orgs-artifact-feeds-rw)
+
+ - task: PowerShell@2
+ displayName: Publish Build Assets
+ inputs:
+ filePath: eng\common\sdk-task.ps1
+ arguments: -task PublishBuildAssets -restore -msbuildEngine dotnet
+ /p:ManifestsPath='$(Build.StagingDirectory)/Download/AssetManifests'
+ /p:BuildAssetRegistryToken=$(MaestroAccessToken)
+ /p:MaestroApiEndpoint=https://maestro.dot.net
+ /p:PublishUsingPipelines=${{ parameters.publishUsingPipelines }}
+ /p:Configuration=$(_BuildConfig)
+ /p:OfficialBuildId=$(Build.BuildNumber)
+ condition: ${{ parameters.condition }}
+ continueOnError: ${{ parameters.continueOnError }}
+
+ - task: powershell@2
+ displayName: Create ReleaseConfigs Artifact
+ inputs:
+ targetType: inline
+ script: |
+ New-Item -Path "$(Build.StagingDirectory)/ReleaseConfigs" -ItemType Directory -Force
+ $filePath = "$(Build.StagingDirectory)/ReleaseConfigs/ReleaseConfigs.txt"
+ Add-Content -Path $filePath -Value $(BARBuildId)
+ Add-Content -Path $filePath -Value "$(DefaultChannels)"
+ Add-Content -Path $filePath -Value $(IsStableBuild)
+
+ - task: 1ES.PublishBuildArtifacts@1
+ displayName: Publish ReleaseConfigs Artifact
+ inputs:
+ PathtoPublish: '$(Build.StagingDirectory)/ReleaseConfigs'
+ PublishLocation: Container
+ ArtifactName: ReleaseConfigs
+
+ - task: powershell@2
+ displayName: Check if SymbolPublishingExclusionsFile.txt exists
+ inputs:
+ targetType: inline
+ script: |
+ $symbolExclusionfile = "$(Build.SourcesDirectory)/eng/SymbolPublishingExclusionsFile.txt"
+ if(Test-Path -Path $symbolExclusionfile)
+ {
+ Write-Host "SymbolExclusionFile exists"
+ Write-Host "##vso[task.setvariable variable=SymbolExclusionFile]true"
+ }
+ else{
+ Write-Host "Symbols Exclusion file does not exists"
+ Write-Host "##vso[task.setvariable variable=SymbolExclusionFile]false"
+ }
+
+ - task: 1ES.PublishBuildArtifacts@1
+ displayName: Publish SymbolPublishingExclusionsFile Artifact
+ condition: eq(variables['SymbolExclusionFile'], 'true')
+ inputs:
+ PathtoPublish: '$(Build.SourcesDirectory)/eng/SymbolPublishingExclusionsFile.txt'
+ PublishLocation: Container
+ ArtifactName: ReleaseConfigs
+
+ - ${{ if eq(parameters.enablePublishBuildArtifacts, 'true') }}:
+ - template: /eng/common/templates-official/steps/publish-logs.yml
+ parameters:
+ JobLabel: 'Publish_Artifacts_Logs'
diff --git a/eng/common/templates-official/job/source-build.yml b/eng/common/templates-official/job/source-build.yml
new file mode 100644
index 00000000000000..f5fa09f4151173
--- /dev/null
+++ b/eng/common/templates-official/job/source-build.yml
@@ -0,0 +1,64 @@
+parameters:
+ # This template adds arcade-powered source-build to CI. The template produces a server job with a
+ # default ID 'Source_Build_Complete' to put in a dependency list if necessary.
+
+ # Specifies the prefix for source-build jobs added to pipeline. Use this if disambiguation needed.
+ jobNamePrefix: 'Source_Build'
+
+ # Defines the platform on which to run the job. By default, a linux-x64 machine, suitable for
+ # managed-only repositories. This is an object with these properties:
+ #
+ # name: ''
+ # The name of the job. This is included in the job ID.
+ # targetRID: ''
+ # The name of the target RID to use, instead of the one auto-detected by Arcade.
+ # nonPortable: false
+ # Enables non-portable mode. This means a more specific RID (e.g. fedora.32-x64 rather than
+ # linux-x64), and compiling against distro-provided packages rather than portable ones.
+ # skipPublishValidation: false
+ # Disables publishing validation. By default, a check is performed to ensure no packages are
+ # published by source-build.
+ # container: ''
+ # A container to use. Runs in docker.
+ # pool: {}
+ # A pool to use. Runs directly on an agent.
+ # buildScript: ''
+ # Specifies the build script to invoke to perform the build in the repo. The default
+ # './build.sh' should work for typical Arcade repositories, but this is customizable for
+ # difficult situations.
+ # jobProperties: {}
+ # A list of job properties to inject at the top level, for potential extensibility beyond
+ # container and pool.
+ platform: {}
+
+jobs:
+- job: ${{ parameters.jobNamePrefix }}_${{ parameters.platform.name }}
+ displayName: Source-Build (${{ parameters.platform.name }})
+
+ ${{ each property in parameters.platform.jobProperties }}:
+ ${{ property.key }}: ${{ property.value }}
+
+ ${{ if ne(parameters.platform.container, '') }}:
+ container: ${{ parameters.platform.container }}
+
+ ${{ if eq(parameters.platform.pool, '') }}:
+ # The default VM host AzDO pool. This should be capable of running Docker containers: almost all
+ # source-build builds run in Docker, including the default managed platform.
+ pool:
+ ${{ if eq(variables['System.TeamProject'], 'public') }}:
+ name: NetCore-Svc-Public
+ demands: ImageOverride -equals Build.Ubuntu.1804.Amd64.Open
+ ${{ if eq(variables['System.TeamProject'], 'internal') }}:
+ name: NetCore1ESPool-Svc-Internal
+ image: 1es-mariner-2
+ os: linux
+ ${{ if ne(parameters.platform.pool, '') }}:
+ pool: ${{ parameters.platform.pool }}
+
+ workspace:
+ clean: all
+
+ steps:
+ - template: /eng/common/templates-official/steps/source-build.yml
+ parameters:
+ platform: ${{ parameters.platform }}
diff --git a/eng/common/templates-official/job/source-index-stage1.yml b/eng/common/templates-official/job/source-index-stage1.yml
new file mode 100644
index 00000000000000..f04ad04c2b1861
--- /dev/null
+++ b/eng/common/templates-official/job/source-index-stage1.yml
@@ -0,0 +1,59 @@
+parameters:
+ runAsPublic: false
+ sourceIndexPackageVersion: 1.0.1-20240320.1
+ sourceIndexPackageSource: https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json
+ sourceIndexBuildCommand: powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -Command "eng/common/build.ps1 -restore -build -binarylog -ci"
+ preSteps: []
+ binlogPath: artifacts/log/Debug/Build.binlog
+ pool:
+ name: NetCore1ESPool-Svc-Internal
+ image: 1es-windows-2022
+ os: windows
+ condition: ''
+ dependsOn: ''
+
+jobs:
+- job: SourceIndexStage1
+ dependsOn: ${{ parameters.dependsOn }}
+ condition: ${{ parameters.condition }}
+ variables:
+ - name: SourceIndexPackageVersion
+ value: ${{ parameters.sourceIndexPackageVersion }}
+ - name: SourceIndexPackageSource
+ value: ${{ parameters.sourceIndexPackageSource }}
+ - name: BinlogPath
+ value: ${{ parameters.binlogPath }}
+ - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
+ - group: source-dot-net stage1 variables
+
+ pool: ${{ parameters.pool }}
+ steps:
+ - ${{ each preStep in parameters.preSteps }}:
+ - ${{ preStep }}
+
+ - task: UseDotNet@2
+ displayName: Use .NET 8 SDK
+ inputs:
+ packageType: sdk
+ version: 8.0.x
+ installationPath: $(Agent.TempDirectory)/dotnet
+ workingDirectory: $(Agent.TempDirectory)
+
+ - script: |
+ $(Agent.TempDirectory)/dotnet/dotnet tool install BinLogToSln --version $(SourceIndexPackageVersion) --add-source $(SourceIndexPackageSource) --tool-path $(Agent.TempDirectory)/.source-index/tools
+ $(Agent.TempDirectory)/dotnet/dotnet tool install UploadIndexStage1 --version $(SourceIndexPackageVersion) --add-source $(SourceIndexPackageSource) --tool-path $(Agent.TempDirectory)/.source-index/tools
+ displayName: Download Tools
+ # Set working directory to temp directory so 'dotnet' doesn't try to use global.json and use the repo's sdk.
+ workingDirectory: $(Agent.TempDirectory)
+
+ - script: ${{ parameters.sourceIndexBuildCommand }}
+ displayName: Build Repository
+
+ - script: $(Agent.TempDirectory)/.source-index/tools/BinLogToSln -i $(BinlogPath) -r $(Build.SourcesDirectory) -n $(Build.Repository.Name) -o .source-index/stage1output
+ displayName: Process Binlog into indexable sln
+
+ - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
+ - script: $(Agent.TempDirectory)/.source-index/tools/UploadIndexStage1 -i .source-index/stage1output -n $(Build.Repository.Name)
+ displayName: Upload stage1 artifacts to source index
+ env:
+ BLOB_CONTAINER_URL: $(source-dot-net-stage1-blob-container-url)
diff --git a/eng/common/templates-official/jobs/codeql-build.yml b/eng/common/templates-official/jobs/codeql-build.yml
new file mode 100644
index 00000000000000..0bf7ee29f40853
--- /dev/null
+++ b/eng/common/templates-official/jobs/codeql-build.yml
@@ -0,0 +1,31 @@
+parameters:
+ # See schema documentation in /Documentation/AzureDevOps/TemplateSchema.md
+ continueOnError: false
+ # Required: A collection of jobs to run - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job
+ jobs: []
+ # Optional: if specified, restore and use this version of Guardian instead of the default.
+ overrideGuardianVersion: ''
+
+jobs:
+- template: /eng/common/templates-official/jobs/jobs.yml
+ parameters:
+ enableMicrobuild: false
+ enablePublishBuildArtifacts: false
+ enablePublishTestResults: false
+ enablePublishBuildAssets: false
+ enablePublishUsingPipelines: false
+ enableTelemetry: true
+
+ variables:
+ - group: Publish-Build-Assets
+ # The Guardian version specified in 'eng/common/sdl/packages.config'. This value must be kept in
+ # sync with the packages.config file.
+ - name: DefaultGuardianVersion
+ value: 0.110.1
+ - name: GuardianPackagesConfigFile
+ value: $(Build.SourcesDirectory)\eng\common\sdl\packages.config
+ - name: GuardianVersion
+ value: ${{ coalesce(parameters.overrideGuardianVersion, '$(DefaultGuardianVersion)') }}
+
+ jobs: ${{ parameters.jobs }}
+
diff --git a/eng/common/templates-official/jobs/jobs.yml b/eng/common/templates-official/jobs/jobs.yml
new file mode 100644
index 00000000000000..c124aa9957878f
--- /dev/null
+++ b/eng/common/templates-official/jobs/jobs.yml
@@ -0,0 +1,100 @@
+parameters:
+ # See schema documentation in /Documentation/AzureDevOps/TemplateSchema.md
+ continueOnError: false
+
+ # Optional: Include PublishBuildArtifacts task
+ enablePublishBuildArtifacts: false
+
+ # Optional: Enable publishing using release pipelines
+ enablePublishUsingPipelines: false
+
+ # Optional: Enable running the source-build jobs to build repo from source
+ enableSourceBuild: false
+
+ # Optional: Parameters for source-build template.
+ # See /eng/common/templates-official/jobs/source-build.yml for options
+ sourceBuildParameters: []
+
+ graphFileGeneration:
+ # Optional: Enable generating the graph files at the end of the build
+ enabled: false
+ # Optional: Include toolset dependencies in the generated graph files
+ includeToolset: false
+
+ # Required: A collection of jobs to run - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job
+ jobs: []
+
+ # Optional: Override automatically derived dependsOn value for "publish build assets" job
+ publishBuildAssetsDependsOn: ''
+
+ # Optional: should run as a public build even in the internal project
+ # if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects.
+ runAsPublic: false
+
+ enableSourceIndex: false
+ sourceIndexParams: {}
+
+# Internal resources (telemetry, microbuild) can only be accessed from non-public projects,
+# and some (Microbuild) should only be applied to non-PR cases for internal builds.
+
+jobs:
+- ${{ each job in parameters.jobs }}:
+ - template: ../job/job.yml
+ parameters:
+ # pass along parameters
+ ${{ each parameter in parameters }}:
+ ${{ if ne(parameter.key, 'jobs') }}:
+ ${{ parameter.key }}: ${{ parameter.value }}
+
+ # pass along job properties
+ ${{ each property in job }}:
+ ${{ if ne(property.key, 'job') }}:
+ ${{ property.key }}: ${{ property.value }}
+
+ name: ${{ job.job }}
+
+- ${{ if eq(parameters.enableSourceBuild, true) }}:
+ - template: /eng/common/templates-official/jobs/source-build.yml
+ parameters:
+ allCompletedJobId: Source_Build_Complete
+ ${{ each parameter in parameters.sourceBuildParameters }}:
+ ${{ parameter.key }}: ${{ parameter.value }}
+
+- ${{ if eq(parameters.enableSourceIndex, 'true') }}:
+ - template: ../job/source-index-stage1.yml
+ parameters:
+ runAsPublic: ${{ parameters.runAsPublic }}
+ ${{ each parameter in parameters.sourceIndexParams }}:
+ ${{ parameter.key }}: ${{ parameter.value }}
+
+- ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
+
+ - ${{ if or(eq(parameters.enablePublishBuildAssets, true), eq(parameters.artifacts.publish.manifests, 'true'), ne(parameters.artifacts.publish.manifests, '')) }}:
+ - template: ../job/publish-build-assets.yml
+ parameters:
+ continueOnError: ${{ parameters.continueOnError }}
+ dependsOn:
+ - ${{ if ne(parameters.publishBuildAssetsDependsOn, '') }}:
+ - ${{ each job in parameters.publishBuildAssetsDependsOn }}:
+ - ${{ job.job }}
+ - ${{ if eq(parameters.publishBuildAssetsDependsOn, '') }}:
+ - ${{ each job in parameters.jobs }}:
+ - ${{ job.job }}
+ - ${{ if eq(parameters.enableSourceBuild, true) }}:
+ - Source_Build_Complete
+ pool:
+ # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
+ ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
+ name: AzurePipelines-EO
+ image: 1ESPT-Windows2022
+ demands: Cmd
+ os: windows
+ # If it's not devdiv, it's dnceng
+ ${{ else }}:
+ name: NetCore1ESPool-Svc-Internal
+ image: 1es-windows-2022
+ os: windows
+
+ runAsPublic: ${{ parameters.runAsPublic }}
+ publishUsingPipelines: ${{ parameters.enablePublishUsingPipelines }}
+ enablePublishBuildArtifacts: ${{ parameters.enablePublishBuildArtifacts }}
diff --git a/eng/common/templates-official/jobs/source-build.yml b/eng/common/templates-official/jobs/source-build.yml
new file mode 100644
index 00000000000000..b9a1f67b9a9ac5
--- /dev/null
+++ b/eng/common/templates-official/jobs/source-build.yml
@@ -0,0 +1,46 @@
+parameters:
+ # This template adds arcade-powered source-build to CI. A job is created for each platform, as
+ # well as an optional server job that completes when all platform jobs complete.
+
+ # The name of the "join" job for all source-build platforms. If set to empty string, the job is
+ # not included. Existing repo pipelines can use this job depend on all source-build jobs
+ # completing without maintaining a separate list of every single job ID: just depend on this one
+ # server job. By default, not included. Recommended name if used: 'Source_Build_Complete'.
+ allCompletedJobId: ''
+
+ # See /eng/common/templates-official/job/source-build.yml
+ jobNamePrefix: 'Source_Build'
+
+ # This is the default platform provided by Arcade, intended for use by a managed-only repo.
+ defaultManagedPlatform:
+ name: 'Managed'
+ container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:centos-7'
+
+ # Defines the platforms on which to run build jobs. One job is created for each platform, and the
+ # object in this array is sent to the job template as 'platform'. If no platforms are specified,
+ # one job runs on 'defaultManagedPlatform'.
+ platforms: []
+
+jobs:
+
+- ${{ if ne(parameters.allCompletedJobId, '') }}:
+ - job: ${{ parameters.allCompletedJobId }}
+ displayName: Source-Build Complete
+ pool: server
+ dependsOn:
+ - ${{ each platform in parameters.platforms }}:
+ - ${{ parameters.jobNamePrefix }}_${{ platform.name }}
+ - ${{ if eq(length(parameters.platforms), 0) }}:
+ - ${{ parameters.jobNamePrefix }}_${{ parameters.defaultManagedPlatform.name }}
+
+- ${{ each platform in parameters.platforms }}:
+ - template: /eng/common/templates-official/job/source-build.yml
+ parameters:
+ jobNamePrefix: ${{ parameters.jobNamePrefix }}
+ platform: ${{ platform }}
+
+- ${{ if eq(length(parameters.platforms), 0) }}:
+ - template: /eng/common/templates-official/job/source-build.yml
+ parameters:
+ jobNamePrefix: ${{ parameters.jobNamePrefix }}
+ platform: ${{ parameters.defaultManagedPlatform }}
diff --git a/eng/common/templates-official/post-build/common-variables.yml b/eng/common/templates-official/post-build/common-variables.yml
new file mode 100644
index 00000000000000..fae340f4d20d70
--- /dev/null
+++ b/eng/common/templates-official/post-build/common-variables.yml
@@ -0,0 +1,26 @@
+variables:
+ - group: AzureDevOps-Artifact-Feeds-Pats
+ - group: DotNet-Blob-Feed
+ - group: DotNet-DotNetCli-Storage
+ - group: DotNet-MSRC-Storage
+ - group: Publish-Build-Assets
+
+ # Whether the build is internal or not
+ - name: IsInternalBuild
+ value: ${{ and(ne(variables['System.TeamProject'], 'public'), contains(variables['Build.SourceBranch'], 'internal')) }}
+
+ # Default Maestro++ API Endpoint and API Version
+ - name: MaestroApiEndPoint
+ value: "https://maestro.dot.net"
+ - name: MaestroApiAccessToken
+ value: $(MaestroAccessToken)
+ - name: MaestroApiVersion
+ value: "2020-02-20"
+
+ - name: SourceLinkCLIVersion
+ value: 3.0.0
+ - name: SymbolToolVersion
+ value: 1.0.1
+
+ - name: runCodesignValidationInjection
+ value: false
diff --git a/eng/common/templates-official/post-build/post-build.yml b/eng/common/templates-official/post-build/post-build.yml
new file mode 100644
index 00000000000000..fce0d0bf5cef2f
--- /dev/null
+++ b/eng/common/templates-official/post-build/post-build.yml
@@ -0,0 +1,279 @@
+parameters:
+ # Which publishing infra should be used. THIS SHOULD MATCH THE VERSION ON THE BUILD MANIFEST.
+ # Publishing V1 is no longer supported
+ # Publishing V2 is no longer supported
+ # Publishing V3 is the default
+ - name: publishingInfraVersion
+ displayName: Which version of publishing should be used to promote the build definition?
+ type: number
+ default: 3
+ values:
+ - 3
+
+ - name: BARBuildId
+ displayName: BAR Build Id
+ type: number
+ default: 0
+
+ - name: PromoteToChannelIds
+ displayName: Channel to promote BARBuildId to
+ type: string
+ default: ''
+
+ - name: enableSourceLinkValidation
+ displayName: Enable SourceLink validation
+ type: boolean
+ default: false
+
+ - name: enableSigningValidation
+ displayName: Enable signing validation
+ type: boolean
+ default: true
+
+ - name: enableSymbolValidation
+ displayName: Enable symbol validation
+ type: boolean
+ default: false
+
+ - name: enableNugetValidation
+ displayName: Enable NuGet validation
+ type: boolean
+ default: true
+
+ - name: publishInstallersAndChecksums
+ displayName: Publish installers and checksums
+ type: boolean
+ default: true
+
+ - name: SDLValidationParameters
+ type: object
+ default:
+ enable: false
+ continueOnError: false
+ params: ''
+ artifactNames: ''
+ downloadArtifacts: true
+
+ # These parameters let the user customize the call to sdk-task.ps1 for publishing
+ # symbols & general artifacts as well as for signing validation
+ - name: symbolPublishingAdditionalParameters
+ displayName: Symbol publishing additional parameters
+ type: string
+ default: ''
+
+ - name: artifactsPublishingAdditionalParameters
+ displayName: Artifact publishing additional parameters
+ type: string
+ default: ''
+
+ - name: signingValidationAdditionalParameters
+ displayName: Signing validation additional parameters
+ type: string
+ default: ''
+
+ # Which stages should finish execution before post-build stages start
+ - name: validateDependsOn
+ type: object
+ default:
+ - build
+
+ - name: publishDependsOn
+ type: object
+ default:
+ - Validate
+
+stages:
+- ${{ if or(eq( parameters.enableNugetValidation, 'true'), eq(parameters.enableSigningValidation, 'true'), eq(parameters.enableSourceLinkValidation, 'true'), eq(parameters.SDLValidationParameters.enable, 'true')) }}:
+ - stage: Validate
+ dependsOn: ${{ parameters.validateDependsOn }}
+ displayName: Validate Build Assets
+ variables:
+ - template: common-variables.yml
+ jobs:
+ - job:
+ displayName: NuGet Validation
+ condition: eq( ${{ parameters.enableNugetValidation }}, 'true')
+ pool:
+ # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
+ ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
+ name: AzurePipelines-EO
+ image: 1ESPT-Windows2022
+ demands: Cmd
+ os: windows
+ # If it's not devdiv, it's dnceng
+ ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}:
+ name: NetCore1ESPool-Svc-Internal
+ image: 1es-windows-2022
+ os: windows
+
+ steps:
+ - template: setup-maestro-vars.yml
+ parameters:
+ BARBuildId: ${{ parameters.BARBuildId }}
+ PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
+
+ - task: DownloadBuildArtifacts@0
+ displayName: Download Package Artifacts
+ inputs:
+ buildType: specific
+ buildVersionToDownload: specific
+ project: $(AzDOProjectName)
+ pipeline: $(AzDOPipelineId)
+ buildId: $(AzDOBuildId)
+ artifactName: PackageArtifacts
+ checkDownloadedFiles: true
+
+ - task: PowerShell@2
+ displayName: Validate
+ inputs:
+ filePath: $(Build.SourcesDirectory)/eng/common/post-build/nuget-validation.ps1
+ arguments: -PackagesPath $(Build.ArtifactStagingDirectory)/PackageArtifacts/
+ -ToolDestinationPath $(Agent.BuildDirectory)/Extract/
+
+ - job:
+ displayName: Signing Validation
+ condition: and( eq( ${{ parameters.enableSigningValidation }}, 'true'), ne( variables['PostBuildSign'], 'true'))
+ pool:
+ # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
+ ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
+ name: AzurePipelines-EO
+ image: 1ESPT-Windows2022
+ demands: Cmd
+ os: windows
+ # If it's not devdiv, it's dnceng
+ ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}:
+ name: NetCore1ESPool-Svc-Internal
+ image: 1es-windows-2022
+ os: windows
+ steps:
+ - template: setup-maestro-vars.yml
+ parameters:
+ BARBuildId: ${{ parameters.BARBuildId }}
+ PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
+
+ - task: DownloadBuildArtifacts@0
+ displayName: Download Package Artifacts
+ inputs:
+ buildType: specific
+ buildVersionToDownload: specific
+ project: $(AzDOProjectName)
+ pipeline: $(AzDOPipelineId)
+ buildId: $(AzDOBuildId)
+ artifactName: PackageArtifacts
+ checkDownloadedFiles: true
+ itemPattern: |
+ **
+ !**/Microsoft.SourceBuild.Intermediate.*.nupkg
+
+ # This is necessary whenever we want to publish/restore to an AzDO private feed
+ # Since sdk-task.ps1 tries to restore packages we need to do this authentication here
+ # otherwise it'll complain about accessing a private feed.
+ - task: NuGetAuthenticate@1
+ displayName: 'Authenticate to AzDO Feeds'
+
+ - task: PowerShell@2
+ displayName: Enable cross-org publishing
+ inputs:
+ filePath: eng\common\enable-cross-org-publishing.ps1
+ arguments: -token $(dn-bot-dnceng-artifact-feeds-rw)
+
+ # Signing validation will optionally work with the buildmanifest file which is downloaded from
+ # Azure DevOps above.
+ - task: PowerShell@2
+ displayName: Validate
+ inputs:
+ filePath: eng\common\sdk-task.ps1
+ arguments: -task SigningValidation -restore -msbuildEngine vs
+ /p:PackageBasePath='$(Build.ArtifactStagingDirectory)/PackageArtifacts'
+ /p:SignCheckExclusionsFile='$(Build.SourcesDirectory)/eng/SignCheckExclusionsFile.txt'
+ ${{ parameters.signingValidationAdditionalParameters }}
+
+ - template: ../steps/publish-logs.yml
+ parameters:
+ StageLabel: 'Validation'
+ JobLabel: 'Signing'
+
+ - job:
+ displayName: SourceLink Validation
+ condition: eq( ${{ parameters.enableSourceLinkValidation }}, 'true')
+ pool:
+ # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
+ ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
+ name: AzurePipelines-EO
+ image: 1ESPT-Windows2022
+ demands: Cmd
+ os: windows
+ # If it's not devdiv, it's dnceng
+ ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}:
+ name: NetCore1ESPool-Svc-Internal
+ image: 1es-windows-2022
+ os: windows
+ steps:
+ - template: setup-maestro-vars.yml
+ parameters:
+ BARBuildId: ${{ parameters.BARBuildId }}
+ PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
+
+ - task: DownloadBuildArtifacts@0
+ displayName: Download Blob Artifacts
+ inputs:
+ buildType: specific
+ buildVersionToDownload: specific
+ project: $(AzDOProjectName)
+ pipeline: $(AzDOPipelineId)
+ buildId: $(AzDOBuildId)
+ artifactName: BlobArtifacts
+ checkDownloadedFiles: true
+
+ - task: PowerShell@2
+ displayName: Validate
+ inputs:
+ filePath: $(Build.SourcesDirectory)/eng/common/post-build/sourcelink-validation.ps1
+ arguments: -InputPath $(Build.ArtifactStagingDirectory)/BlobArtifacts/
+ -ExtractPath $(Agent.BuildDirectory)/Extract/
+ -GHRepoName $(Build.Repository.Name)
+ -GHCommit $(Build.SourceVersion)
+ -SourcelinkCliVersion $(SourceLinkCLIVersion)
+ continueOnError: true
+
+- stage: publish_using_darc
+ ${{ if or(eq(parameters.enableNugetValidation, 'true'), eq(parameters.enableSigningValidation, 'true'), eq(parameters.enableSourceLinkValidation, 'true'), eq(parameters.SDLValidationParameters.enable, 'true')) }}:
+ dependsOn: ${{ parameters.publishDependsOn }}
+ ${{ if and(ne(parameters.enableNugetValidation, 'true'), ne(parameters.enableSigningValidation, 'true'), ne(parameters.enableSourceLinkValidation, 'true'), ne(parameters.SDLValidationParameters.enable, 'true')) }}:
+ dependsOn: ${{ parameters.validateDependsOn }}
+ displayName: Publish using Darc
+ variables:
+ - template: common-variables.yml
+ jobs:
+ - job:
+ displayName: Publish Using Darc
+ timeoutInMinutes: 120
+ pool:
+ # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
+ ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
+ name: AzurePipelines-EO
+ image: 1ESPT-Windows2022
+ demands: Cmd
+ os: windows
+ # If it's not devdiv, it's dnceng
+ ${{ else }}:
+ name: NetCore1ESPool-Svc-Internal
+ image: 1es-windows-2022
+ os: windows
+ steps:
+ - template: setup-maestro-vars.yml
+ parameters:
+ BARBuildId: ${{ parameters.BARBuildId }}
+ PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
+
+ - task: PowerShell@2
+ displayName: Publish Using Darc
+ inputs:
+ filePath: $(Build.SourcesDirectory)/eng/common/post-build/publish-using-darc.ps1
+ arguments: -BuildId $(BARBuildId)
+ -PublishingInfraVersion ${{ parameters.publishingInfraVersion }}
+ -AzdoToken '$(publishing-dnceng-devdiv-code-r-build-re)'
+ -MaestroToken '$(MaestroApiAccessToken)'
+ -WaitPublishingFinish true
+ -ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}'
+ -SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}'
diff --git a/eng/common/templates-official/post-build/setup-maestro-vars.yml b/eng/common/templates-official/post-build/setup-maestro-vars.yml
new file mode 100644
index 00000000000000..0c87f149a4ad77
--- /dev/null
+++ b/eng/common/templates-official/post-build/setup-maestro-vars.yml
@@ -0,0 +1,70 @@
+parameters:
+ BARBuildId: ''
+ PromoteToChannelIds: ''
+
+steps:
+ - ${{ if eq(coalesce(parameters.PromoteToChannelIds, 0), 0) }}:
+ - task: DownloadBuildArtifacts@0
+ displayName: Download Release Configs
+ inputs:
+ buildType: current
+ artifactName: ReleaseConfigs
+ checkDownloadedFiles: true
+
+ - task: PowerShell@2
+ name: setReleaseVars
+ displayName: Set Release Configs Vars
+ inputs:
+ targetType: inline
+ pwsh: true
+ script: |
+ try {
+ if (!$Env:PromoteToMaestroChannels -or $Env:PromoteToMaestroChannels.Trim() -eq '') {
+ $Content = Get-Content $(Build.StagingDirectory)/ReleaseConfigs/ReleaseConfigs.txt
+
+ $BarId = $Content | Select -Index 0
+ $Channels = $Content | Select -Index 1
+ $IsStableBuild = $Content | Select -Index 2
+
+ $AzureDevOpsProject = $Env:System_TeamProject
+ $AzureDevOpsBuildDefinitionId = $Env:System_DefinitionId
+ $AzureDevOpsBuildId = $Env:Build_BuildId
+ }
+ else {
+ $buildApiEndpoint = "${Env:MaestroApiEndPoint}/api/builds/${Env:BARBuildId}?api-version=${Env:MaestroApiVersion}"
+
+ $apiHeaders = New-Object 'System.Collections.Generic.Dictionary[[String],[String]]'
+ $apiHeaders.Add('Accept', 'application/json')
+ $apiHeaders.Add('Authorization',"Bearer ${Env:MAESTRO_API_TOKEN}")
+
+ $buildInfo = try { Invoke-WebRequest -Method Get -Uri $buildApiEndpoint -Headers $apiHeaders | ConvertFrom-Json } catch { Write-Host "Error: $_" }
+
+ $BarId = $Env:BARBuildId
+ $Channels = $Env:PromoteToMaestroChannels -split ","
+ $Channels = $Channels -join "]["
+ $Channels = "[$Channels]"
+
+ $IsStableBuild = $buildInfo.stable
+ $AzureDevOpsProject = $buildInfo.azureDevOpsProject
+ $AzureDevOpsBuildDefinitionId = $buildInfo.azureDevOpsBuildDefinitionId
+ $AzureDevOpsBuildId = $buildInfo.azureDevOpsBuildId
+ }
+
+ Write-Host "##vso[task.setvariable variable=BARBuildId]$BarId"
+ Write-Host "##vso[task.setvariable variable=TargetChannels]$Channels"
+ Write-Host "##vso[task.setvariable variable=IsStableBuild]$IsStableBuild"
+
+ Write-Host "##vso[task.setvariable variable=AzDOProjectName]$AzureDevOpsProject"
+ Write-Host "##vso[task.setvariable variable=AzDOPipelineId]$AzureDevOpsBuildDefinitionId"
+ Write-Host "##vso[task.setvariable variable=AzDOBuildId]$AzureDevOpsBuildId"
+ }
+ catch {
+ Write-Host $_
+ Write-Host $_.Exception
+ Write-Host $_.ScriptStackTrace
+ exit 1
+ }
+ env:
+ MAESTRO_API_TOKEN: $(MaestroApiAccessToken)
+ BARBuildId: ${{ parameters.BARBuildId }}
+ PromoteToMaestroChannels: ${{ parameters.PromoteToChannelIds }}
diff --git a/eng/common/templates-official/post-build/trigger-subscription.yml b/eng/common/templates-official/post-build/trigger-subscription.yml
new file mode 100644
index 00000000000000..da669030daf6e9
--- /dev/null
+++ b/eng/common/templates-official/post-build/trigger-subscription.yml
@@ -0,0 +1,13 @@
+parameters:
+ ChannelId: 0
+
+steps:
+- task: PowerShell@2
+ displayName: Triggering subscriptions
+ inputs:
+ filePath: $(Build.SourcesDirectory)/eng/common/post-build/trigger-subscriptions.ps1
+ arguments: -SourceRepo $(Build.Repository.Uri)
+ -ChannelId ${{ parameters.ChannelId }}
+ -MaestroApiAccessToken $(MaestroAccessToken)
+ -MaestroApiEndPoint $(MaestroApiEndPoint)
+ -MaestroApiVersion $(MaestroApiVersion)
diff --git a/eng/common/templates-official/steps/add-build-to-channel.yml b/eng/common/templates-official/steps/add-build-to-channel.yml
new file mode 100644
index 00000000000000..f67a210d62f3e5
--- /dev/null
+++ b/eng/common/templates-official/steps/add-build-to-channel.yml
@@ -0,0 +1,13 @@
+parameters:
+ ChannelId: 0
+
+steps:
+- task: PowerShell@2
+ displayName: Add Build to Channel
+ inputs:
+ filePath: $(Build.SourcesDirectory)/eng/common/post-build/add-build-to-channel.ps1
+ arguments: -BuildId $(BARBuildId)
+ -ChannelId ${{ parameters.ChannelId }}
+ -MaestroApiAccessToken $(MaestroApiAccessToken)
+ -MaestroApiEndPoint $(MaestroApiEndPoint)
+ -MaestroApiVersion $(MaestroApiVersion)
diff --git a/eng/common/templates-official/steps/component-governance.yml b/eng/common/templates-official/steps/component-governance.yml
new file mode 100644
index 00000000000000..12527b80ea9cdc
--- /dev/null
+++ b/eng/common/templates-official/steps/component-governance.yml
@@ -0,0 +1,10 @@
+parameters:
+ disableComponentGovernance: false
+
+steps:
+- ${{ if eq(parameters.disableComponentGovernance, 'true') }}:
+ - script: echo "##vso[task.setvariable variable=skipComponentGovernanceDetection]true"
+ displayName: Set skipComponentGovernanceDetection variable
+- ${{ if ne(parameters.disableComponentGovernance, 'true') }}:
+ - task: ComponentGovernanceComponentDetection@0
+ continueOnError: true
\ No newline at end of file
diff --git a/eng/common/templates-official/steps/execute-codeql.yml b/eng/common/templates-official/steps/execute-codeql.yml
new file mode 100644
index 00000000000000..9b4a5ffa30a788
--- /dev/null
+++ b/eng/common/templates-official/steps/execute-codeql.yml
@@ -0,0 +1,32 @@
+parameters:
+ # Language that should be analyzed. Defaults to csharp
+ language: csharp
+ # Build Commands
+ buildCommands: ''
+ overrideParameters: '' # Optional: to override values for parameters.
+ additionalParameters: '' # Optional: parameters that need user specific values eg: '-SourceToolsList @("abc","def") -ArtifactToolsList @("ghi","jkl")'
+ # Optional: if specified, restore and use this version of Guardian instead of the default.
+ overrideGuardianVersion: ''
+ # Optional: if true, publish the '.gdn' folder as a pipeline artifact. This can help with in-depth
+ # diagnosis of problems with specific tool configurations.
+ publishGuardianDirectoryToPipeline: false
+ # The script to run to execute all SDL tools. Use this if you want to use a script to define SDL
+ # parameters rather than relying on YAML. It may be better to use a local script, because you can
+ # reproduce results locally without piecing together a command based on the YAML.
+ executeAllSdlToolsScript: 'eng/common/sdl/execute-all-sdl-tools.ps1'
+ # There is some sort of bug (has been reported) in Azure DevOps where if this parameter is named
+ # 'continueOnError', the parameter value is not correctly picked up.
+ # This can also be remedied by the caller (post-build.yml) if it does not use a nested parameter
+ # optional: determines whether to continue the build if the step errors;
+ sdlContinueOnError: false
+
+steps:
+- template: /eng/common/templates-official/steps/execute-sdl.yml
+ parameters:
+ overrideGuardianVersion: ${{ parameters.overrideGuardianVersion }}
+ executeAllSdlToolsScript: ${{ parameters.executeAllSdlToolsScript }}
+ overrideParameters: ${{ parameters.overrideParameters }}
+ additionalParameters: '${{ parameters.additionalParameters }}
+ -CodeQLAdditionalRunConfigParams @("BuildCommands < ${{ parameters.buildCommands }}", "Language < ${{ parameters.language }}")'
+ publishGuardianDirectoryToPipeline: ${{ parameters.publishGuardianDirectoryToPipeline }}
+ sdlContinueOnError: ${{ parameters.sdlContinueOnError }}
\ No newline at end of file
diff --git a/eng/common/templates-official/steps/generate-sbom.yml b/eng/common/templates-official/steps/generate-sbom.yml
new file mode 100644
index 00000000000000..7fc4f358023d66
--- /dev/null
+++ b/eng/common/templates-official/steps/generate-sbom.yml
@@ -0,0 +1,44 @@
+# BuildDropPath - The root folder of the drop directory for which the manifest file will be generated.
+# PackageName - The name of the package this SBOM represents.
+# PackageVersion - The version of the package this SBOM represents.
+# ManifestDirPath - The path of the directory where the generated manifest files will be placed
+
+parameters:
+ PackageVersion: 6.0.0
+ BuildDropPath: '$(Build.SourcesDirectory)/artifacts'
+ PackageName: '.NET'
+ ManifestDirPath: $(Build.ArtifactStagingDirectory)/sbom
+ sbomContinueOnError: true
+
+steps:
+- task: PowerShell@2
+ displayName: Prep for SBOM generation in (Non-linux)
+ condition: or(eq(variables['Agent.Os'], 'Windows_NT'), eq(variables['Agent.Os'], 'Darwin'))
+ inputs:
+ filePath: ./eng/common/generate-sbom-prep.ps1
+ arguments: ${{parameters.manifestDirPath}}
+
+# Chmodding is a workaround for https://github.com/dotnet/arcade/issues/8461
+- script: |
+ chmod +x ./eng/common/generate-sbom-prep.sh
+ ./eng/common/generate-sbom-prep.sh ${{parameters.manifestDirPath}}
+ displayName: Prep for SBOM generation in (Linux)
+ condition: eq(variables['Agent.Os'], 'Linux')
+ continueOnError: ${{ parameters.sbomContinueOnError }}
+
+- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0
+ displayName: 'Generate SBOM manifest'
+ continueOnError: ${{ parameters.sbomContinueOnError }}
+ inputs:
+ PackageName: ${{ parameters.packageName }}
+ BuildDropPath: ${{ parameters.buildDropPath }}
+ PackageVersion: ${{ parameters.packageVersion }}
+ ManifestDirPath: ${{ parameters.manifestDirPath }}
+
+- task: 1ES.PublishPipelineArtifact@1
+ displayName: Publish SBOM manifest
+ continueOnError: ${{parameters.sbomContinueOnError}}
+ inputs:
+ targetPath: '${{parameters.manifestDirPath}}'
+ artifactName: $(ARTIFACT_NAME)
+
diff --git a/eng/common/templates-official/steps/publish-logs.yml b/eng/common/templates-official/steps/publish-logs.yml
new file mode 100644
index 00000000000000..04012fed182a1f
--- /dev/null
+++ b/eng/common/templates-official/steps/publish-logs.yml
@@ -0,0 +1,23 @@
+parameters:
+ StageLabel: ''
+ JobLabel: ''
+
+steps:
+- task: Powershell@2
+ displayName: Prepare Binlogs to Upload
+ inputs:
+ targetType: inline
+ script: |
+ New-Item -ItemType Directory $(Build.SourcesDirectory)/PostBuildLogs/${{parameters.StageLabel}}/${{parameters.JobLabel}}/
+ Move-Item -Path $(Build.SourcesDirectory)/artifacts/log/Debug/* $(Build.SourcesDirectory)/PostBuildLogs/${{parameters.StageLabel}}/${{parameters.JobLabel}}/
+ continueOnError: true
+ condition: always()
+
+- task: 1ES.PublishBuildArtifacts@1
+ displayName: Publish Logs
+ inputs:
+ PathtoPublish: '$(Build.SourcesDirectory)/PostBuildLogs'
+ PublishLocation: Container
+ ArtifactName: PostBuildLogs
+ continueOnError: true
+ condition: always()
diff --git a/eng/common/templates-official/steps/retain-build.yml b/eng/common/templates-official/steps/retain-build.yml
new file mode 100644
index 00000000000000..83d97a26a01ff9
--- /dev/null
+++ b/eng/common/templates-official/steps/retain-build.yml
@@ -0,0 +1,28 @@
+parameters:
+ # Optional azure devops PAT with build execute permissions for the build's organization,
+ # only needed if the build that should be retained ran on a different organization than
+ # the pipeline where this template is executing from
+ Token: ''
+ # Optional BuildId to retain, defaults to the current running build
+ BuildId: ''
+ # Azure devops Organization URI for the build in the https://dev.azure.com/ format.
+ # Defaults to the organization the current pipeline is running on
+ AzdoOrgUri: '$(System.CollectionUri)'
+ # Azure devops project for the build. Defaults to the project the current pipeline is running on
+ AzdoProject: '$(System.TeamProject)'
+
+steps:
+ - task: powershell@2
+ inputs:
+ targetType: 'filePath'
+ filePath: eng/common/retain-build.ps1
+ pwsh: true
+ arguments: >
+ -AzdoOrgUri: ${{parameters.AzdoOrgUri}}
+ -AzdoProject ${{parameters.AzdoProject}}
+ -Token ${{coalesce(parameters.Token, '$env:SYSTEM_ACCESSTOKEN') }}
+ -BuildId ${{coalesce(parameters.BuildId, '$env:BUILD_ID')}}
+ displayName: Enable permanent build retention
+ env:
+ SYSTEM_ACCESSTOKEN: $(System.AccessToken)
+ BUILD_ID: $(Build.BuildId)
\ No newline at end of file
diff --git a/eng/common/templates-official/steps/send-to-helix.yml b/eng/common/templates-official/steps/send-to-helix.yml
new file mode 100644
index 00000000000000..cd02ae1607f3b2
--- /dev/null
+++ b/eng/common/templates-official/steps/send-to-helix.yml
@@ -0,0 +1,94 @@
+# Please remember to update the documentation if you make changes to these parameters!
+parameters:
+ HelixSource: 'pr/default' # required -- sources must start with pr/, official/, prodcon/, or agent/
+ HelixType: 'tests/default/' # required -- Helix telemetry which identifies what type of data this is; should include "test" for clarity and must end in '/'
+ HelixBuild: $(Build.BuildNumber) # required -- the build number Helix will use to identify this -- automatically set to the AzDO build number
+ HelixTargetQueues: '' # required -- semicolon delimited list of Helix queues to test on; see https://helix.dot.net/ for a list of queues
+ HelixAccessToken: '' # required -- access token to make Helix API requests; should be provided by the appropriate variable group
+ HelixConfiguration: '' # optional -- additional property attached to a job
+ HelixPreCommands: '' # optional -- commands to run before Helix work item execution
+ HelixPostCommands: '' # optional -- commands to run after Helix work item execution
+ WorkItemDirectory: '' # optional -- a payload directory to zip up and send to Helix; requires WorkItemCommand; incompatible with XUnitProjects
+ WorkItemCommand: '' # optional -- a command to execute on the payload; requires WorkItemDirectory; incompatible with XUnitProjects
+ WorkItemTimeout: '' # optional -- a timeout in TimeSpan.Parse-ready value (e.g. 00:02:00) for the work item command; requires WorkItemDirectory; incompatible with XUnitProjects
+ CorrelationPayloadDirectory: '' # optional -- a directory to zip up and send to Helix as a correlation payload
+ XUnitProjects: '' # optional -- semicolon delimited list of XUnitProjects to parse and send to Helix; requires XUnitRuntimeTargetFramework, XUnitPublishTargetFramework, XUnitRunnerVersion, and IncludeDotNetCli=true
+ XUnitWorkItemTimeout: '' # optional -- the workitem timeout in seconds for all workitems created from the xUnit projects specified by XUnitProjects
+ XUnitPublishTargetFramework: '' # optional -- framework to use to publish your xUnit projects
+ XUnitRuntimeTargetFramework: '' # optional -- framework to use for the xUnit console runner
+ XUnitRunnerVersion: '' # optional -- version of the xUnit nuget package you wish to use on Helix; required for XUnitProjects
+ IncludeDotNetCli: false # optional -- true will download a version of the .NET CLI onto the Helix machine as a correlation payload; requires DotNetCliPackageType and DotNetCliVersion
+ DotNetCliPackageType: '' # optional -- either 'sdk', 'runtime' or 'aspnetcore-runtime'; determines whether the sdk or runtime will be sent to Helix; see https://raw.githubusercontent.com/dotnet/core/main/release-notes/releases-index.json
+ DotNetCliVersion: '' # optional -- version of the CLI to send to Helix; based on this: https://raw.githubusercontent.com/dotnet/core/main/release-notes/releases-index.json
+ EnableXUnitReporter: false # optional -- true enables XUnit result reporting to Mission Control
+ WaitForWorkItemCompletion: true # optional -- true will make the task wait until work items have been completed and fail the build if work items fail. False is "fire and forget."
+ IsExternal: false # [DEPRECATED] -- doesn't do anything, jobs are external if HelixAccessToken is empty and Creator is set
+ HelixBaseUri: 'https://helix.dot.net/' # optional -- sets the Helix API base URI (allows targeting int)
+ Creator: '' # optional -- if the build is external, use this to specify who is sending the job
+ DisplayNamePrefix: 'Run Tests' # optional -- rename the beginning of the displayName of the steps in AzDO
+ condition: succeeded() # optional -- condition for step to execute; defaults to succeeded()
+ continueOnError: false # optional -- determines whether to continue the build if the step errors; defaults to false
+
+steps:
+ - powershell: 'powershell "$env:BUILD_SOURCESDIRECTORY\eng\common\msbuild.ps1 $env:BUILD_SOURCESDIRECTORY\eng\common\helixpublish.proj /restore /t:Test /bl:$env:BUILD_SOURCESDIRECTORY\artifacts\log\$env:BuildConfig\SendToHelix.binlog"'
+ displayName: ${{ parameters.DisplayNamePrefix }} (Windows)
+ env:
+ BuildConfig: $(_BuildConfig)
+ HelixSource: ${{ parameters.HelixSource }}
+ HelixType: ${{ parameters.HelixType }}
+ HelixBuild: ${{ parameters.HelixBuild }}
+ HelixConfiguration: ${{ parameters.HelixConfiguration }}
+ HelixTargetQueues: ${{ parameters.HelixTargetQueues }}
+ HelixAccessToken: ${{ parameters.HelixAccessToken }}
+ HelixPreCommands: ${{ parameters.HelixPreCommands }}
+ HelixPostCommands: ${{ parameters.HelixPostCommands }}
+ WorkItemDirectory: ${{ parameters.WorkItemDirectory }}
+ WorkItemCommand: ${{ parameters.WorkItemCommand }}
+ WorkItemTimeout: ${{ parameters.WorkItemTimeout }}
+ CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }}
+ XUnitProjects: ${{ parameters.XUnitProjects }}
+ XUnitWorkItemTimeout: ${{ parameters.XUnitWorkItemTimeout }}
+ XUnitPublishTargetFramework: ${{ parameters.XUnitPublishTargetFramework }}
+ XUnitRuntimeTargetFramework: ${{ parameters.XUnitRuntimeTargetFramework }}
+ XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }}
+ IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }}
+ DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }}
+ DotNetCliVersion: ${{ parameters.DotNetCliVersion }}
+ EnableXUnitReporter: ${{ parameters.EnableXUnitReporter }}
+ WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }}
+ HelixBaseUri: ${{ parameters.HelixBaseUri }}
+ Creator: ${{ parameters.Creator }}
+ SYSTEM_ACCESSTOKEN: $(System.AccessToken)
+ condition: and(${{ parameters.condition }}, eq(variables['Agent.Os'], 'Windows_NT'))
+ continueOnError: ${{ parameters.continueOnError }}
+ - script: $BUILD_SOURCESDIRECTORY/eng/common/msbuild.sh $BUILD_SOURCESDIRECTORY/eng/common/helixpublish.proj /restore /t:Test /bl:$BUILD_SOURCESDIRECTORY/artifacts/log/$BuildConfig/SendToHelix.binlog
+ displayName: ${{ parameters.DisplayNamePrefix }} (Unix)
+ env:
+ BuildConfig: $(_BuildConfig)
+ HelixSource: ${{ parameters.HelixSource }}
+ HelixType: ${{ parameters.HelixType }}
+ HelixBuild: ${{ parameters.HelixBuild }}
+ HelixConfiguration: ${{ parameters.HelixConfiguration }}
+ HelixTargetQueues: ${{ parameters.HelixTargetQueues }}
+ HelixAccessToken: ${{ parameters.HelixAccessToken }}
+ HelixPreCommands: ${{ parameters.HelixPreCommands }}
+ HelixPostCommands: ${{ parameters.HelixPostCommands }}
+ WorkItemDirectory: ${{ parameters.WorkItemDirectory }}
+ WorkItemCommand: ${{ parameters.WorkItemCommand }}
+ WorkItemTimeout: ${{ parameters.WorkItemTimeout }}
+ CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }}
+ XUnitProjects: ${{ parameters.XUnitProjects }}
+ XUnitWorkItemTimeout: ${{ parameters.XUnitWorkItemTimeout }}
+ XUnitPublishTargetFramework: ${{ parameters.XUnitPublishTargetFramework }}
+ XUnitRuntimeTargetFramework: ${{ parameters.XUnitRuntimeTargetFramework }}
+ XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }}
+ IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }}
+ DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }}
+ DotNetCliVersion: ${{ parameters.DotNetCliVersion }}
+ EnableXUnitReporter: ${{ parameters.EnableXUnitReporter }}
+ WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }}
+ HelixBaseUri: ${{ parameters.HelixBaseUri }}
+ Creator: ${{ parameters.Creator }}
+ SYSTEM_ACCESSTOKEN: $(System.AccessToken)
+ condition: and(${{ parameters.condition }}, ne(variables['Agent.Os'], 'Windows_NT'))
+ continueOnError: ${{ parameters.continueOnError }}
diff --git a/eng/common/templates-official/steps/source-build.yml b/eng/common/templates-official/steps/source-build.yml
new file mode 100644
index 00000000000000..9eb7e51456a792
--- /dev/null
+++ b/eng/common/templates-official/steps/source-build.yml
@@ -0,0 +1,108 @@
+parameters:
+ # This template adds arcade-powered source-build to CI.
+
+ # This is a 'steps' template, and is intended for advanced scenarios where the existing build
+ # infra has a careful build methodology that must be followed. For example, a repo
+ # (dotnet/runtime) might choose to clone the GitHub repo only once and store it as a pipeline
+ # artifact for all subsequent jobs to use, to reduce dependence on a strong network connection to
+ # GitHub. Using this steps template leaves room for that infra to be included.
+
+ # Defines the platform on which to run the steps. See 'eng/common/templates-official/job/source-build.yml'
+ # for details. The entire object is described in the 'job' template for simplicity, even though
+ # the usage of the properties on this object is split between the 'job' and 'steps' templates.
+ platform: {}
+
+steps:
+# Build. Keep it self-contained for simple reusability. (No source-build-specific job variables.)
+- script: |
+ set -x
+ df -h
+
+ # If building on the internal project, the artifact feeds variable may be available (usually only if needed)
+ # In that case, call the feed setup script to add internal feeds corresponding to public ones.
+ # In addition, add an msbuild argument to copy the WIP from the repo to the target build location.
+ # This is because SetupNuGetSources.sh will alter the current NuGet.config file, and we need to preserve those
+ # changes.
+ $internalRestoreArgs=
+ if [ '$(dn-bot-dnceng-artifact-feeds-rw)' != '$''(dn-bot-dnceng-artifact-feeds-rw)' ]; then
+ # Temporarily work around https://github.com/dotnet/arcade/issues/7709
+ chmod +x $(Build.SourcesDirectory)/eng/common/SetupNugetSources.sh
+ $(Build.SourcesDirectory)/eng/common/SetupNugetSources.sh $(Build.SourcesDirectory)/NuGet.config $(dn-bot-dnceng-artifact-feeds-rw)
+ internalRestoreArgs='/p:CopyWipIntoInnerSourceBuildRepo=true'
+
+ # The 'Copy WIP' feature of source build uses git stash to apply changes from the original repo.
+ # This only works if there is a username/email configured, which won't be the case in most CI runs.
+ git config --get user.email
+ if [ $? -ne 0 ]; then
+ git config user.email dn-bot@microsoft.com
+ git config user.name dn-bot
+ fi
+ fi
+
+ # If building on the internal project, the internal storage variable may be available (usually only if needed)
+ # In that case, add variables to allow the download of internal runtimes if the specified versions are not found
+ # in the default public locations.
+ internalRuntimeDownloadArgs=
+ if [ '$(dotnetbuilds-internal-container-read-token-base64)' != '$''(dotnetbuilds-internal-container-read-token-base64)' ]; then
+ internalRuntimeDownloadArgs='/p:DotNetRuntimeSourceFeed=https://dotnetbuilds.blob.core.windows.net/internal /p:DotNetRuntimeSourceFeedKey=$(dotnetbuilds-internal-container-read-token-base64) --runtimesourcefeed https://dotnetbuilds.blob.core.windows.net/internal --runtimesourcefeedkey $(dotnetbuilds-internal-container-read-token-base64)'
+ fi
+
+ buildConfig=Release
+ # Check if AzDO substitutes in a build config from a variable, and use it if so.
+ if [ '$(_BuildConfig)' != '$''(_BuildConfig)' ]; then
+ buildConfig='$(_BuildConfig)'
+ fi
+
+ officialBuildArgs=
+ if [ '${{ and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}' = 'True' ]; then
+ officialBuildArgs='/p:DotNetPublishUsingPipelines=true /p:OfficialBuildId=$(BUILD.BUILDNUMBER)'
+ fi
+
+ targetRidArgs=
+ if [ '${{ parameters.platform.targetRID }}' != '' ]; then
+ targetRidArgs='/p:TargetRid=${{ parameters.platform.targetRID }}'
+ fi
+
+ runtimeOsArgs=
+ if [ '${{ parameters.platform.runtimeOS }}' != '' ]; then
+ runtimeOsArgs='/p:RuntimeOS=${{ parameters.platform.runtimeOS }}'
+ fi
+
+ publishArgs=
+ if [ '${{ parameters.platform.skipPublishValidation }}' != 'true' ]; then
+ publishArgs='--publish'
+ fi
+
+ ${{ coalesce(parameters.platform.buildScript, './build.sh') }} --ci \
+ --configuration $buildConfig \
+ --restore --build --pack $publishArgs -bl \
+ $officialBuildArgs \
+ $internalRuntimeDownloadArgs \
+ $internalRestoreArgs \
+ $targetRidArgs \
+ $runtimeOsArgs \
+ /p:SourceBuildNonPortable=${{ parameters.platform.nonPortable }} \
+ /p:ArcadeBuildFromSource=true
+ displayName: Build
+
+# Upload build logs for diagnosis.
+- task: CopyFiles@2
+ displayName: Prepare BuildLogs staging directory
+ inputs:
+ SourceFolder: '$(Build.SourcesDirectory)'
+ Contents: |
+ **/*.log
+ **/*.binlog
+ artifacts/source-build/self/prebuilt-report/**
+ TargetFolder: '$(Build.StagingDirectory)/BuildLogs'
+ CleanTargetFolder: true
+ continueOnError: true
+ condition: succeededOrFailed()
+
+- task: 1ES.PublishPipelineArtifact@1
+ displayName: Publish BuildLogs
+ inputs:
+ targetPath: '$(Build.StagingDirectory)/BuildLogs'
+ artifactName: BuildLogs_SourceBuild_${{ parameters.platform.name }}_Attempt$(System.JobAttempt)
+ continueOnError: true
+ condition: succeededOrFailed()
diff --git a/eng/common/templates-official/variables/sdl-variables.yml b/eng/common/templates-official/variables/sdl-variables.yml
new file mode 100644
index 00000000000000..1a860bd0406475
--- /dev/null
+++ b/eng/common/templates-official/variables/sdl-variables.yml
@@ -0,0 +1,7 @@
+variables:
+# The Guardian version specified in 'eng/common/sdl/packages.config'. This value must be kept in
+# sync with the packages.config file.
+- name: DefaultGuardianVersion
+ value: 0.110.1
+- name: GuardianPackagesConfigFile
+ value: $(Build.SourcesDirectory)\eng\common\sdl\packages.config
\ No newline at end of file
diff --git a/eng/common/templates/job/execute-sdl.yml b/eng/common/templates/job/execute-sdl.yml
index 69eb67849d741d..aaeb83b4dcbdd8 100644
--- a/eng/common/templates/job/execute-sdl.yml
+++ b/eng/common/templates/job/execute-sdl.yml
@@ -29,14 +29,6 @@ parameters:
# Optional: download a list of pipeline artifacts. 'downloadArtifacts' controls build artifacts,
# not pipeline artifacts, so doesn't affect the use of this parameter.
pipelineArtifactNames: []
- # Optional: location and ID of the AzDO build that the build/pipeline artifacts should be
- # downloaded from. By default, uses runtime expressions to decide based on the variables set by
- # the 'setupMaestroVars' dependency. Overriding this parameter is necessary if SDL tasks are
- # running without Maestro++/BAR involved, or to download artifacts from a specific existing build
- # to iterate quickly on SDL changes.
- AzDOProjectName: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOProjectName'] ]
- AzDOPipelineId: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOPipelineId'] ]
- AzDOBuildId: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOBuildId'] ]
jobs:
- job: Run_SDL
@@ -51,24 +43,24 @@ jobs:
value: ${{ parameters.AzDOPipelineId }}
- name: AzDOBuildId
value: ${{ parameters.AzDOBuildId }}
- # The Guardian version specified in 'eng/common/sdl/packages.config'. This value must be kept in
- # sync with the packages.config file.
- - name: DefaultGuardianVersion
- value: 0.53.3
+ - template: /eng/common/templates/variables/sdl-variables.yml
- name: GuardianVersion
value: ${{ coalesce(parameters.overrideGuardianVersion, '$(DefaultGuardianVersion)') }}
- - name: GuardianPackagesConfigFile
- value: $(Build.SourcesDirectory)\eng\common\sdl\packages.config
pool:
- # To extract archives (.tar.gz, .zip), we need access to "tar", added in Windows 10/2019.
- ${{ if eq(parameters.extractArchiveArtifacts, 'false') }}:
- name: Hosted VS2017
- ${{ if ne(parameters.extractArchiveArtifacts, 'false') }}:
- vmImage: windows-2019
+ # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
+ ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
+ name: VSEngSS-MicroBuild2022-1ES
+ demands: Cmd
+ # If it's not devdiv, it's dnceng
+ ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}:
+ name: NetCore1ESPool-Svc-Internal
+ demands: ImageOverride -equals windows.vs2019.amd64
steps:
- checkout: self
clean: true
+ - template: /eng/common/templates/post-build/setup-maestro-vars.yml
+
- ${{ if ne(parameters.downloadArtifacts, 'false')}}:
- ${{ if ne(parameters.artifactNames, '') }}:
- ${{ each artifactName in parameters.artifactNames }}:
@@ -129,57 +121,11 @@ jobs:
displayName: Extract Archive Artifacts
continueOnError: ${{ parameters.sdlContinueOnError }}
- - ${{ if ne(parameters.overrideGuardianVersion, '') }}:
- - powershell: |
- $content = Get-Content $(GuardianPackagesConfigFile)
-
- Write-Host "packages.config content was:`n$content"
-
- $content = $content.Replace('$(DefaultGuardianVersion)', '$(GuardianVersion)')
- $content | Set-Content $(GuardianPackagesConfigFile)
-
- Write-Host "packages.config content updated to:`n$content"
- displayName: Use overridden Guardian version ${{ parameters.overrideGuardianVersion }}
-
- - task: NuGetToolInstaller@1
- displayName: 'Install NuGet.exe'
- - task: NuGetCommand@2
- displayName: 'Install Guardian'
- inputs:
- restoreSolution: $(Build.SourcesDirectory)\eng\common\sdl\packages.config
- feedsToUse: config
- nugetConfigPath: $(Build.SourcesDirectory)\eng\common\sdl\NuGet.config
- externalFeedCredentials: GuardianConnect
- restoreDirectory: $(Build.SourcesDirectory)\.packages
-
- - ${{ if ne(parameters.overrideParameters, '') }}:
- - powershell: ${{ parameters.executeAllSdlToolsScript }} ${{ parameters.overrideParameters }}
- displayName: Execute SDL
- continueOnError: ${{ parameters.sdlContinueOnError }}
- - ${{ if eq(parameters.overrideParameters, '') }}:
- - powershell: ${{ parameters.executeAllSdlToolsScript }}
- -GuardianPackageName Microsoft.Guardian.Cli.$(GuardianVersion)
- -NugetPackageDirectory $(Build.SourcesDirectory)\.packages
- -AzureDevOpsAccessToken $(dn-bot-dotnet-build-rw-code-rw)
- ${{ parameters.additionalParameters }}
- displayName: Execute SDL
- continueOnError: ${{ parameters.sdlContinueOnError }}
-
- - ${{ if ne(parameters.publishGuardianDirectoryToPipeline, 'false') }}:
- # We want to publish the Guardian results and configuration for easy diagnosis. However, the
- # '.gdn' dir is a mix of configuration, results, extracted dependencies, and Guardian default
- # tooling files. Some of these files are large and aren't useful during an investigation, so
- # exclude them by simply deleting them before publishing. (As of writing, there is no documented
- # way to selectively exclude a dir from the pipeline artifact publish task.)
- - task: DeleteFiles@1
- displayName: Delete Guardian dependencies to avoid uploading
- inputs:
- SourceFolder: $(Agent.BuildDirectory)/.gdn
- Contents: |
- c
- i
- condition: succeededOrFailed()
- - publish: $(Agent.BuildDirectory)/.gdn
- artifact: GuardianConfiguration
- displayName: Publish GuardianConfiguration
- condition: succeededOrFailed()
+ - template: /eng/common/templates/steps/execute-sdl.yml
+ parameters:
+ overrideGuardianVersion: ${{ parameters.overrideGuardianVersion }}
+ executeAllSdlToolsScript: ${{ parameters.executeAllSdlToolsScript }}
+ overrideParameters: ${{ parameters.overrideParameters }}
+ additionalParameters: ${{ parameters.additionalParameters }}
+ publishGuardianDirectoryToPipeline: ${{ parameters.publishGuardianDirectoryToPipeline }}
+ sdlContinueOnError: ${{ parameters.sdlContinueOnError }}
diff --git a/eng/common/templates/job/generate-graph-files.yml b/eng/common/templates/job/generate-graph-files.yml
deleted file mode 100644
index e54ce956f9088e..00000000000000
--- a/eng/common/templates/job/generate-graph-files.yml
+++ /dev/null
@@ -1,48 +0,0 @@
-parameters:
- # Optional: dependencies of the job
- dependsOn: ''
-
- # Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool
- pool: {}
-
- # Optional: Include toolset dependencies in the generated graph files
- includeToolset: false
-
-jobs:
-- job: Generate_Graph_Files
-
- dependsOn: ${{ parameters.dependsOn }}
-
- displayName: Generate Graph Files
-
- pool: ${{ parameters.pool }}
-
- variables:
- # Publish-Build-Assets provides: MaestroAccessToken, BotAccount-dotnet-maestro-bot-PAT
- # DotNet-AllOrgs-Darc-Pats provides: dn-bot-devdiv-dnceng-rw-code-pat
- - group: Publish-Build-Assets
- - group: DotNet-AllOrgs-Darc-Pats
- - name: _GraphArguments
- value: -gitHubPat $(BotAccount-dotnet-maestro-bot-PAT)
- -azdoPat $(dn-bot-devdiv-dnceng-rw-code-pat)
- -barToken $(MaestroAccessToken)
- -outputFolder '$(Build.StagingDirectory)/GraphFiles/'
- - ${{ if ne(parameters.includeToolset, 'false') }}:
- - name: _GraphArguments
- value: ${{ variables._GraphArguments }} -includeToolset
-
- steps:
- - task: PowerShell@2
- displayName: Generate Graph Files
- inputs:
- filePath: eng\common\generate-graph-files.ps1
- arguments: $(_GraphArguments)
- continueOnError: true
- - task: PublishBuildArtifacts@1
- displayName: Publish Graph to Artifacts
- inputs:
- PathtoPublish: '$(Build.StagingDirectory)/GraphFiles'
- PublishLocation: Container
- ArtifactName: GraphFiles
- continueOnError: true
- condition: always()
diff --git a/eng/common/templates/job/job.yml b/eng/common/templates/job/job.yml
index 8669679348024c..01da2420df6069 100644
--- a/eng/common/templates/job/job.yml
+++ b/eng/common/templates/job/job.yml
@@ -24,12 +24,17 @@ parameters:
enablePublishBuildAssets: false
enablePublishTestResults: false
enablePublishUsingPipelines: false
+ disableComponentGovernance: ''
mergeTestResults: false
testRunTitle: ''
testResultsFormat: ''
name: ''
preSteps: []
runAsPublic: false
+# Sbom related params
+ enableSbom: true
+ PackageVersion: 6.0.0
+ BuildDropPath: '$(Build.SourcesDirectory)/artifacts'
jobs:
- job: ${{ parameters.name }}
@@ -68,6 +73,10 @@ jobs:
- ${{ if eq(parameters.enableRichCodeNavigation, 'true') }}:
- name: EnableRichCodeNavigation
value: 'true'
+ # Retry signature validation up to three times, waiting 2 seconds between attempts.
+ # See https://learn.microsoft.com/en-us/nuget/reference/errors-and-warnings/nu3028#retry-untrusted-root-failures
+ - name: NUGET_EXPERIMENTAL_CHAIN_BUILD_RETRY_POLICY
+ value: 3,2000
- ${{ each variable in parameters.variables }}:
# handle name-value variable syntax
# example:
@@ -76,7 +85,7 @@ jobs:
- ${{ if ne(variable.name, '') }}:
- name: ${{ variable.name }}
value: ${{ variable.value }}
-
+
# handle variable groups
- ${{ if ne(variable.group, '') }}:
- group: ${{ variable.group }}
@@ -103,7 +112,7 @@ jobs:
- ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
- ${{ if eq(parameters.enableMicrobuild, 'true') }}:
- - task: MicroBuildSigningPlugin@2
+ - task: MicroBuildSigningPlugin@3
displayName: Install MicroBuild plugin
inputs:
signType: $(_SignType)
@@ -114,7 +123,7 @@ jobs:
continueOnError: ${{ parameters.continueOnError }}
condition: and(succeeded(), in(variables['_SignType'], 'real', 'test'), eq(variables['Agent.Os'], 'Windows_NT'))
- - task: NuGetAuthenticate@0
+ - task: NuGetAuthenticate@1
- ${{ if or(eq(parameters.artifacts.download, 'true'), ne(parameters.artifacts.download, '')) }}:
- task: DownloadPipelineArtifact@2
@@ -136,10 +145,20 @@ jobs:
richNavLogOutputDirectory: $(Build.SourcesDirectory)/artifacts/bin
continueOnError: true
+ - template: /eng/common/templates/steps/component-governance.yml
+ parameters:
+ ${{ if eq(parameters.disableComponentGovernance, '') }}:
+ ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.runAsPublic, 'false'), or(startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'), startsWith(variables['Build.SourceBranch'], 'refs/heads/dotnet/'), startsWith(variables['Build.SourceBranch'], 'refs/heads/microsoft/'), eq(variables['Build.SourceBranch'], 'refs/heads/main'))) }}:
+ disableComponentGovernance: false
+ ${{ else }}:
+ disableComponentGovernance: true
+ ${{ else }}:
+ disableComponentGovernance: ${{ parameters.disableComponentGovernance }}
+
- ${{ if eq(parameters.enableMicrobuild, 'true') }}:
- ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
- task: MicroBuildCleanup@1
- displayName: Execute Microbuild cleanup tasks
+ displayName: Execute Microbuild cleanup tasks
condition: and(always(), in(variables['_SignType'], 'real', 'test'), eq(variables['Agent.Os'], 'Windows_NT'))
continueOnError: ${{ parameters.continueOnError }}
env:
@@ -207,7 +226,7 @@ jobs:
displayName: Publish XUnit Test Results
inputs:
testResultsFormat: 'xUnit'
- testResultsFiles: '*.xml'
+ testResultsFiles: '*.xml'
searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)'
testRunTitle: ${{ coalesce(parameters.testRunTitle, parameters.name, '$(System.JobName)') }}-xunit
mergeTestResults: ${{ parameters.mergeTestResults }}
@@ -218,7 +237,7 @@ jobs:
displayName: Publish TRX Test Results
inputs:
testResultsFormat: 'VSTest'
- testResultsFiles: '*.trx'
+ testResultsFiles: '*.trx'
searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)'
testRunTitle: ${{ coalesce(parameters.testRunTitle, parameters.name, '$(System.JobName)') }}-trx
mergeTestResults: ${{ parameters.mergeTestResults }}
@@ -242,3 +261,9 @@ jobs:
ArtifactName: AssetManifests
continueOnError: ${{ parameters.continueOnError }}
condition: and(succeeded(), eq(variables['_DotNetPublishToBlobFeed'], 'true'))
+
+ - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.enableSbom, 'true')) }}:
+ - template: /eng/common/templates/steps/generate-sbom.yml
+ parameters:
+ PackageVersion: ${{ parameters.packageVersion}}
+ BuildDropPath: ${{ parameters.buildDropPath }}
diff --git a/eng/common/templates/job/onelocbuild.yml b/eng/common/templates/job/onelocbuild.yml
index e8bc77d2ebbe39..5b1b77d1c74adb 100644
--- a/eng/common/templates/job/onelocbuild.yml
+++ b/eng/common/templates/job/onelocbuild.yml
@@ -3,15 +3,15 @@ parameters:
dependsOn: ''
# Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool
- pool:
- vmImage: vs2017-win2016
-
+ pool: ''
+
CeapexPat: $(dn-bot-ceapex-package-r) # PAT for the loc AzDO instance https://dev.azure.com/ceapex
GithubPat: $(BotAccount-dotnet-bot-repo-PAT)
SourcesDirectory: $(Build.SourcesDirectory)
CreatePr: true
AutoCompletePr: false
+ ReusePr: true
UseLfLineEndings: true
UseCheckedInLocProjectJson: false
LanguageSet: VS_Main_Languages
@@ -30,7 +30,18 @@ jobs:
displayName: OneLocBuild
- pool: ${{ parameters.pool }}
+ ${{ if ne(parameters.pool, '') }}:
+ pool: ${{ parameters.pool }}
+ ${{ if eq(parameters.pool, '') }}:
+ pool:
+ # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
+ ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
+ name: VSEngSS-MicroBuild2022-1ES
+ demands: Cmd
+ # If it's not devdiv, it's dnceng
+ ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}:
+ name: NetCore1ESPool-Svc-Internal
+ demands: ImageOverride -equals windows.vs2019.amd64
variables:
- group: OneLocBuildVariables # Contains the CeapexPat and GithubPat
@@ -64,6 +75,8 @@ jobs:
${{ if eq(parameters.CreatePr, true) }}:
isAutoCompletePrSelected: ${{ parameters.AutoCompletePr }}
isUseLfLineEndingsSelected: ${{ parameters.UseLfLineEndings }}
+ ${{ if eq(parameters.RepoType, 'gitHub') }}:
+ isShouldReusePrSelected: ${{ parameters.ReusePr }}
packageSourceAuth: patAuth
patVariable: ${{ parameters.CeapexPat }}
${{ if eq(parameters.RepoType, 'gitHub') }}:
diff --git a/eng/common/templates/job/publish-build-assets.yml b/eng/common/templates/job/publish-build-assets.yml
index fe9dfdf720cf8a..bd3d54b760c230 100644
--- a/eng/common/templates/job/publish-build-assets.yml
+++ b/eng/common/templates/job/publish-build-assets.yml
@@ -38,10 +38,6 @@ jobs:
value: ${{ parameters.configuration }}
- group: Publish-Build-Assets
- group: AzureDevOps-Artifact-Feeds-Pats
- # Skip component governance and codesign validation for SDL. These jobs
- # create no content.
- - name: skipComponentGovernanceDetection
- value: true
- name: runCodesignValidationInjection
value: false
@@ -55,9 +51,9 @@ jobs:
checkDownloadedFiles: true
condition: ${{ parameters.condition }}
continueOnError: ${{ parameters.continueOnError }}
-
+
- ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
- - task: NuGetAuthenticate@0
+ - task: NuGetAuthenticate@1
- task: PowerShell@2
displayName: Enable cross-org NuGet feed authentication
@@ -72,13 +68,13 @@ jobs:
arguments: -task PublishBuildAssets -restore -msbuildEngine dotnet
/p:ManifestsPath='$(Build.StagingDirectory)/Download/AssetManifests'
/p:BuildAssetRegistryToken=$(MaestroAccessToken)
- /p:MaestroApiEndpoint=https://maestro-prod.westus2.cloudapp.azure.com
+ /p:MaestroApiEndpoint=https://maestro.dot.net
/p:PublishUsingPipelines=${{ parameters.publishUsingPipelines }}
/p:Configuration=$(_BuildConfig)
/p:OfficialBuildId=$(Build.BuildNumber)
condition: ${{ parameters.condition }}
continueOnError: ${{ parameters.continueOnError }}
-
+
- task: powershell@2
displayName: Create ReleaseConfigs Artifact
inputs:
@@ -87,7 +83,7 @@ jobs:
Add-Content -Path "$(Build.StagingDirectory)/ReleaseConfigs.txt" -Value $(BARBuildId)
Add-Content -Path "$(Build.StagingDirectory)/ReleaseConfigs.txt" -Value "$(DefaultChannels)"
Add-Content -Path "$(Build.StagingDirectory)/ReleaseConfigs.txt" -Value $(IsStableBuild)
-
+
- task: PublishBuildArtifacts@1
displayName: Publish ReleaseConfigs Artifact
inputs:
@@ -113,7 +109,7 @@ jobs:
- task: PublishBuildArtifacts@1
displayName: Publish SymbolPublishingExclusionsFile Artifact
- condition: eq(variables['SymbolExclusionFile'], 'true')
+ condition: eq(variables['SymbolExclusionFile'], 'true')
inputs:
PathtoPublish: '$(Build.SourcesDirectory)/eng/SymbolPublishingExclusionsFile.txt'
PublishLocation: Container
@@ -122,4 +118,4 @@ jobs:
- ${{ if eq(parameters.enablePublishBuildArtifacts, 'true') }}:
- template: /eng/common/templates/steps/publish-logs.yml
parameters:
- JobLabel: 'Publish_Artifacts_Logs'
+ JobLabel: 'Publish_Artifacts_Logs'
diff --git a/eng/common/templates/job/source-build.yml b/eng/common/templates/job/source-build.yml
index 5023d36dcb3c5b..b6137f44ada138 100644
--- a/eng/common/templates/job/source-build.yml
+++ b/eng/common/templates/job/source-build.yml
@@ -31,11 +31,6 @@ parameters:
# container and pool.
platform: {}
- # The default VM host AzDO pool. This should be capable of running Docker containers: almost all
- # source-build builds run in Docker, including the default managed platform.
- defaultContainerHostPool:
- vmImage: ubuntu-20.04
-
jobs:
- job: ${{ parameters.jobNamePrefix }}_${{ parameters.platform.name }}
displayName: Source-Build (${{ parameters.platform.name }})
@@ -47,7 +42,15 @@ jobs:
container: ${{ parameters.platform.container }}
${{ if eq(parameters.platform.pool, '') }}:
- pool: ${{ parameters.defaultContainerHostPool }}
+ # The default VM host AzDO pool. This should be capable of running Docker containers: almost all
+ # source-build builds run in Docker, including the default managed platform.
+ pool:
+ ${{ if eq(variables['System.TeamProject'], 'public') }}:
+ name: NetCore-Svc-Public
+ demands: ImageOverride -equals Build.Ubuntu.1804.Amd64.Open
+ ${{ if eq(variables['System.TeamProject'], 'internal') }}:
+ name: NetCore1ESPool-Svc-Internal
+ demands: ImageOverride -equals Build.Ubuntu.1804.Amd64
${{ if ne(parameters.platform.pool, '') }}:
pool: ${{ parameters.platform.pool }}
diff --git a/eng/common/templates/job/source-index-stage1.yml b/eng/common/templates/job/source-index-stage1.yml
index e60fdbccc9ec18..b710698eb4d4f1 100644
--- a/eng/common/templates/job/source-index-stage1.yml
+++ b/eng/common/templates/job/source-index-stage1.yml
@@ -1,12 +1,12 @@
parameters:
runAsPublic: false
- sourceIndexPackageVersion: 1.0.1-20210614.1
+ sourceIndexPackageVersion: 1.0.1-20240320.1
sourceIndexPackageSource: https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json
sourceIndexBuildCommand: powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -Command "eng/common/build.ps1 -restore -build -binarylog -ci"
preSteps: []
binlogPath: artifacts/log/Debug/Build.binlog
pool:
- vmImage: vs2017-win2016
+ vmImage: windows-2019
condition: ''
dependsOn: ''
@@ -30,28 +30,28 @@ jobs:
- ${{ preStep }}
- task: UseDotNet@2
- displayName: Use .NET Core sdk 3.1
+ displayName: Use .NET 8 SDK
inputs:
packageType: sdk
- version: 3.1.x
-
- - script: ${{ parameters.sourceIndexBuildCommand }}
- displayName: Build Repository
+ version: 8.0.x
+ installationPath: $(Agent.TempDirectory)/dotnet
+ workingDirectory: $(Agent.TempDirectory)
- script: |
- dotnet tool install BinLogToSln --version $(SourceIndexPackageVersion) --add-source $(SourceIndexPackageSource) --tool-path .source-index/tools
- dotnet tool install UploadIndexStage1 --version $(SourceIndexPackageVersion) --add-source $(SourceIndexPackageSource) --tool-path .source-index/tools
- echo ##vso[task.prependpath]$(Build.SourcesDirectory)/.source-index/tools
+ $(Agent.TempDirectory)/dotnet/dotnet tool install BinLogToSln --version $(SourceIndexPackageVersion) --add-source $(SourceIndexPackageSource) --tool-path $(Agent.TempDirectory)/.source-index/tools
+ $(Agent.TempDirectory)/dotnet/dotnet tool install UploadIndexStage1 --version $(SourceIndexPackageVersion) --add-source $(SourceIndexPackageSource) --tool-path $(Agent.TempDirectory)/.source-index/tools
displayName: Download Tools
+ # Set working directory to temp directory so 'dotnet' doesn't try to use global.json and use the repo's sdk.
+ workingDirectory: $(Agent.TempDirectory)
+
+ - script: ${{ parameters.sourceIndexBuildCommand }}
+ displayName: Build Repository
- - script: BinLogToSln -i $(BinlogPath) -r $(Build.SourcesDirectory) -n $(Build.Repository.Name) -o .source-index/stage1output
+ - script: $(Agent.TempDirectory)/.source-index/tools/BinLogToSln -i $(BinlogPath) -r $(Build.SourcesDirectory) -n $(Build.Repository.Name) -o .source-index/stage1output
displayName: Process Binlog into indexable sln
- env:
- DOTNET_ROLL_FORWARD_ON_NO_CANDIDATE_FX: 2
- ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
- - script: UploadIndexStage1 -i .source-index/stage1output -n $(Build.Repository.Name)
+ - script: $(Agent.TempDirectory)/.source-index/tools/UploadIndexStage1 -i .source-index/stage1output -n $(Build.Repository.Name)
displayName: Upload stage1 artifacts to source index
env:
BLOB_CONTAINER_URL: $(source-dot-net-stage1-blob-container-url)
- DOTNET_ROLL_FORWARD_ON_NO_CANDIDATE_FX: 2
diff --git a/eng/common/templates/jobs/codeql-build.yml b/eng/common/templates/jobs/codeql-build.yml
new file mode 100644
index 00000000000000..54c393af440d02
--- /dev/null
+++ b/eng/common/templates/jobs/codeql-build.yml
@@ -0,0 +1,31 @@
+parameters:
+ # See schema documentation in /Documentation/AzureDevOps/TemplateSchema.md
+ continueOnError: false
+ # Required: A collection of jobs to run - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job
+ jobs: []
+ # Optional: if specified, restore and use this version of Guardian instead of the default.
+ overrideGuardianVersion: ''
+
+jobs:
+- template: /eng/common/templates/jobs/jobs.yml
+ parameters:
+ enableMicrobuild: false
+ enablePublishBuildArtifacts: false
+ enablePublishTestResults: false
+ enablePublishBuildAssets: false
+ enablePublishUsingPipelines: false
+ enableTelemetry: true
+
+ variables:
+ - group: Publish-Build-Assets
+ # The Guardian version specified in 'eng/common/sdl/packages.config'. This value must be kept in
+ # sync with the packages.config file.
+ - name: DefaultGuardianVersion
+ value: 0.110.1
+ - name: GuardianPackagesConfigFile
+ value: $(Build.SourcesDirectory)\eng\common\sdl\packages.config
+ - name: GuardianVersion
+ value: ${{ coalesce(parameters.overrideGuardianVersion, '$(DefaultGuardianVersion)') }}
+
+ jobs: ${{ parameters.jobs }}
+
diff --git a/eng/common/templates/jobs/jobs.yml b/eng/common/templates/jobs/jobs.yml
index a1f8fce96ca81d..f70826518cca2c 100644
--- a/eng/common/templates/jobs/jobs.yml
+++ b/eng/common/templates/jobs/jobs.yml
@@ -20,7 +20,7 @@ parameters:
enabled: false
# Optional: Include toolset dependencies in the generated graph files
includeToolset: false
-
+
# Required: A collection of jobs to run - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job
jobs: []
@@ -40,7 +40,7 @@ parameters:
jobs:
- ${{ each job in parameters.jobs }}:
- template: ../job/job.yml
- parameters:
+ parameters:
# pass along parameters
${{ each parameter in parameters }}:
${{ if ne(parameter.key, 'jobs') }}:
@@ -68,7 +68,7 @@ jobs:
${{ parameter.key }}: ${{ parameter.value }}
- ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
-
+
- ${{ if or(eq(parameters.enablePublishBuildAssets, true), eq(parameters.artifacts.publish.manifests, 'true'), ne(parameters.artifacts.publish.manifests, '')) }}:
- template: ../job/publish-build-assets.yml
parameters:
@@ -83,17 +83,15 @@ jobs:
- ${{ if eq(parameters.enableSourceBuild, true) }}:
- Source_Build_Complete
pool:
- vmImage: vs2017-win2016
+ # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
+ ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
+ name: VSEngSS-MicroBuild2022-1ES
+ demands: Cmd
+ # If it's not devdiv, it's dnceng
+ ${{ else }}:
+ name: NetCore1ESPool-Publishing-Internal
+ demands: ImageOverride -equals windows.vs2019.amd64
+
runAsPublic: ${{ parameters.runAsPublic }}
publishUsingPipelines: ${{ parameters.enablePublishUsingPipelines }}
enablePublishBuildArtifacts: ${{ parameters.enablePublishBuildArtifacts }}
-
- - ${{ if eq(parameters.graphFileGeneration.enabled, true) }}:
- - template: ../job/generate-graph-files.yml
- parameters:
- continueOnError: ${{ parameters.continueOnError }}
- includeToolset: ${{ parameters.graphFileGeneration.includeToolset }}
- dependsOn:
- - Asset_Registry_Publish
- pool:
- vmImage: vs2017-win2016
diff --git a/eng/common/templates/jobs/source-build.yml b/eng/common/templates/jobs/source-build.yml
index 00aa98eb3bfd38..7c240e65447243 100644
--- a/eng/common/templates/jobs/source-build.yml
+++ b/eng/common/templates/jobs/source-build.yml
@@ -14,7 +14,7 @@ parameters:
# This is the default platform provided by Arcade, intended for use by a managed-only repo.
defaultManagedPlatform:
name: 'Managed'
- container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:centos-7-3e800f1-20190501005343'
+ container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:centos-7'
# Defines the platforms on which to run build jobs. One job is created for each platform, and the
# object in this array is sent to the job template as 'platform'. If no platforms are specified,
diff --git a/eng/common/templates/post-build/channels/generic-internal-channel.yml b/eng/common/templates/post-build/channels/generic-internal-channel.yml
deleted file mode 100644
index 8990dfc8c87cc3..00000000000000
--- a/eng/common/templates/post-build/channels/generic-internal-channel.yml
+++ /dev/null
@@ -1,190 +0,0 @@
-parameters:
- BARBuildId: ''
- PromoteToChannelIds: ''
- artifactsPublishingAdditionalParameters: ''
- dependsOn:
- - Validate
- publishInstallersAndChecksums: true
- symbolPublishingAdditionalParameters: ''
- stageName: ''
- channelName: ''
- channelId: ''
- transportFeed: ''
- shippingFeed: ''
- symbolsFeed: ''
-
-stages:
-- stage: ${{ parameters.stageName }}
- dependsOn: ${{ parameters.dependsOn }}
- variables:
- - template: ../common-variables.yml
- displayName: ${{ parameters.channelName }} Publishing
- jobs:
- - template: ../setup-maestro-vars.yml
- parameters:
- BARBuildId: ${{ parameters.BARBuildId }}
- PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
-
- - job: publish_symbols
- displayName: Symbol Publishing
- dependsOn: setupMaestroVars
- condition: contains(dependencies.setupMaestroVars.outputs['setReleaseVars.TargetChannels'], format('[{0}]', ${{ parameters.channelId }} ))
- variables:
- - group: DotNet-Symbol-Server-Pats
- - name: AzDOProjectName
- value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOProjectName'] ]
- - name: AzDOPipelineId
- value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOPipelineId'] ]
- - name: AzDOBuildId
- value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOBuildId'] ]
- pool:
- vmImage: 'windows-2019'
- steps:
- - script: echo "##vso[task.logissue type=warning]Going forward, v2 Arcade publishing is no longer supported. Please read https://github.com/dotnet/arcade/blob/main/Documentation/CorePackages/Publishing.md for details, then contact dnceng if you have further questions."
- displayName: Warn about v2 Arcade Publishing Usage
-
- # This is necessary whenever we want to publish/restore to an AzDO private feed
- - task: NuGetAuthenticate@0
- displayName: 'Authenticate to AzDO Feeds'
-
- - task: DownloadBuildArtifacts@0
- displayName: Download Build Assets
- continueOnError: true
- inputs:
- buildType: specific
- buildVersionToDownload: specific
- project: $(AzDOProjectName)
- pipeline: $(AzDOPipelineId)
- buildId: $(AzDOBuildId)
- downloadType: 'specific'
- itemPattern: |
- PdbArtifacts/**
- BlobArtifacts/**
- downloadPath: '$(Build.ArtifactStagingDirectory)'
- checkDownloadedFiles: true
-
- # This is necessary whenever we want to publish/restore to an AzDO private feed
- # Since sdk-task.ps1 tries to restore packages we need to do this authentication here
- # otherwise it'll complain about accessing a private feed.
- - task: NuGetAuthenticate@0
- displayName: 'Authenticate to AzDO Feeds'
-
- - task: PowerShell@2
- displayName: Enable cross-org publishing
- inputs:
- filePath: eng\common\enable-cross-org-publishing.ps1
- arguments: -token $(dn-bot-dnceng-artifact-feeds-rw)
-
- - task: PowerShell@2
- displayName: Publish
- inputs:
- filePath: eng\common\sdk-task.ps1
- arguments: -task PublishToSymbolServers -restore -msbuildEngine dotnet
- /p:DotNetSymbolServerTokenMsdl=$(microsoft-symbol-server-pat)
- /p:DotNetSymbolServerTokenSymWeb=$(symweb-symbol-server-pat)
- /p:PDBArtifactsDirectory='$(Build.ArtifactStagingDirectory)/PDBArtifacts/'
- /p:BlobBasePath='$(Build.ArtifactStagingDirectory)/BlobArtifacts/'
- /p:SymbolPublishingExclusionsFile='$(Build.SourcesDirectory)/eng/SymbolPublishingExclusionsFile.txt'
- /p:Configuration=Release
- /p:PublishToMSDL=false
- ${{ parameters.symbolPublishingAdditionalParameters }}
-
- - template: ../../steps/publish-logs.yml
- parameters:
- StageLabel: '${{ parameters.stageName }}'
- JobLabel: 'SymbolPublishing'
-
- - job: publish_assets
- displayName: Publish Assets
- dependsOn: setupMaestroVars
- timeoutInMinutes: 120
- variables:
- - name: BARBuildId
- value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.BARBuildId'] ]
- - name: IsStableBuild
- value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.IsStableBuild'] ]
- - name: AzDOProjectName
- value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOProjectName'] ]
- - name: AzDOPipelineId
- value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOPipelineId'] ]
- - name: AzDOBuildId
- value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOBuildId'] ]
- condition: contains(dependencies.setupMaestroVars.outputs['setReleaseVars.TargetChannels'], format('[{0}]', ${{ parameters.channelId }} ))
- pool:
- vmImage: 'windows-2019'
- steps:
- - script: echo "##vso[task.logissue type=warning]Going forward, v2 Arcade publishing is no longer supported. Please read https://github.com/dotnet/arcade/blob/main/Documentation/CorePackages/Publishing.md for details, then contact dnceng if you have further questions."
- displayName: Warn about v2 Arcade Publishing Usage
-
- - task: DownloadBuildArtifacts@0
- displayName: Download Build Assets
- continueOnError: true
- inputs:
- buildType: specific
- buildVersionToDownload: specific
- project: $(AzDOProjectName)
- pipeline: $(AzDOPipelineId)
- buildId: $(AzDOBuildId)
- downloadType: 'specific'
- itemPattern: |
- PackageArtifacts/**
- BlobArtifacts/**
- AssetManifests/**
- downloadPath: '$(Build.ArtifactStagingDirectory)'
- checkDownloadedFiles: true
-
- - task: NuGetToolInstaller@1
- displayName: 'Install NuGet.exe'
-
- # This is necessary whenever we want to publish/restore to an AzDO private feed
- - task: NuGetAuthenticate@0
- displayName: 'Authenticate to AzDO Feeds'
-
- - task: PowerShell@2
- displayName: Enable cross-org publishing
- inputs:
- filePath: eng\common\enable-cross-org-publishing.ps1
- arguments: -token $(dn-bot-dnceng-artifact-feeds-rw)
-
- - task: PowerShell@2
- displayName: Publish Assets
- inputs:
- filePath: eng\common\sdk-task.ps1
- arguments: -task PublishArtifactsInManifest -restore -msbuildEngine dotnet
- /p:PublishingInfraVersion=2
- /p:IsStableBuild=$(IsStableBuild)
- /p:IsInternalBuild=$(IsInternalBuild)
- /p:RepositoryName=$(Build.Repository.Name)
- /p:CommitSha=$(Build.SourceVersion)
- /p:NugetPath=$(NuGetExeToolPath)
- /p:AzdoTargetFeedPAT='$(dn-bot-dnceng-universal-packages-rw)'
- /p:AzureStorageTargetFeedPAT='$(dotnetfeed-storage-access-key-1)'
- /p:BARBuildId=$(BARBuildId)
- /p:MaestroApiEndpoint='$(MaestroApiEndPoint)'
- /p:BuildAssetRegistryToken='$(MaestroApiAccessToken)'
- /p:ManifestsBasePath='$(Build.ArtifactStagingDirectory)/AssetManifests/'
- /p:BlobBasePath='$(Build.ArtifactStagingDirectory)/BlobArtifacts/'
- /p:PackageBasePath='$(Build.ArtifactStagingDirectory)/PackageArtifacts/'
- /p:Configuration=Release
- /p:PublishInstallersAndChecksums=${{ parameters.publishInstallersAndChecksums }}
- /p:ChecksumsTargetStaticFeed=$(InternalChecksumsBlobFeedUrl)
- /p:ChecksumsAzureAccountKey=$(InternalChecksumsBlobFeedKey)
- /p:InstallersTargetStaticFeed=$(InternalInstallersBlobFeedUrl)
- /p:InstallersAzureAccountKey=$(InternalInstallersBlobFeedKey)
- /p:AzureDevOpsStaticShippingFeed='${{ parameters.shippingFeed }}'
- /p:AzureDevOpsStaticShippingFeedKey='$(dn-bot-dnceng-artifact-feeds-rw)'
- /p:AzureDevOpsStaticTransportFeed='${{ parameters.transportFeed }}'
- /p:AzureDevOpsStaticTransportFeedKey='$(dn-bot-dnceng-artifact-feeds-rw)'
- /p:AzureDevOpsStaticSymbolsFeed='${{ parameters.symbolsFeed }}'
- /p:AzureDevOpsStaticSymbolsFeedKey='$(dn-bot-dnceng-artifact-feeds-rw)'
- /p:PublishToMSDL=false
- ${{ parameters.artifactsPublishingAdditionalParameters }}
-
- - template: ../../steps/publish-logs.yml
- parameters:
- StageLabel: '${{ parameters.stageName }}'
- JobLabel: 'AssetsPublishing'
-
- - template: ../../steps/add-build-to-channel.yml
- parameters:
- ChannelId: ${{ parameters.channelId }}
diff --git a/eng/common/templates/post-build/channels/generic-public-channel.yml b/eng/common/templates/post-build/channels/generic-public-channel.yml
deleted file mode 100644
index 3220c6a4f92ffb..00000000000000
--- a/eng/common/templates/post-build/channels/generic-public-channel.yml
+++ /dev/null
@@ -1,192 +0,0 @@
-parameters:
- BARBuildId: ''
- PromoteToChannelIds: ''
- artifactsPublishingAdditionalParameters: ''
- dependsOn:
- - Validate
- publishInstallersAndChecksums: true
- symbolPublishingAdditionalParameters: ''
- stageName: ''
- channelName: ''
- channelId: ''
- transportFeed: ''
- shippingFeed: ''
- symbolsFeed: ''
- # If the channel name is empty, no links will be generated
- akaMSChannelName: ''
-
-stages:
-- stage: ${{ parameters.stageName }}
- dependsOn: ${{ parameters.dependsOn }}
- variables:
- - template: ../common-variables.yml
- displayName: ${{ parameters.channelName }} Publishing
- jobs:
- - template: ../setup-maestro-vars.yml
- parameters:
- BARBuildId: ${{ parameters.BARBuildId }}
- PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
-
- - job: publish_symbols
- displayName: Symbol Publishing
- dependsOn: setupMaestroVars
- condition: contains(dependencies.setupMaestroVars.outputs['setReleaseVars.TargetChannels'], format('[{0}]', ${{ parameters.channelId }} ))
- variables:
- - group: DotNet-Symbol-Server-Pats
- - name: AzDOProjectName
- value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOProjectName'] ]
- - name: AzDOPipelineId
- value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOPipelineId'] ]
- - name: AzDOBuildId
- value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOBuildId'] ]
- pool:
- vmImage: 'windows-2019'
- steps:
- - script: echo "##vso[task.logissue type=warning]Going forward, v2 Arcade publishing is no longer supported. Please read https://github.com/dotnet/arcade/blob/main/Documentation/CorePackages/Publishing.md for details, then contact dnceng if you have further questions."
- displayName: Warn about v2 Arcade Publishing Usage
-
- - task: DownloadBuildArtifacts@0
- displayName: Download Build Assets
- continueOnError: true
- inputs:
- buildType: specific
- buildVersionToDownload: specific
- project: $(AzDOProjectName)
- pipeline: $(AzDOPipelineId)
- buildId: $(AzDOBuildId)
- downloadType: 'specific'
- itemPattern: |
- PdbArtifacts/**
- BlobArtifacts/**
- downloadPath: '$(Build.ArtifactStagingDirectory)'
- checkDownloadedFiles: true
-
- # This is necessary whenever we want to publish/restore to an AzDO private feed
- # Since sdk-task.ps1 tries to restore packages we need to do this authentication here
- # otherwise it'll complain about accessing a private feed.
- - task: NuGetAuthenticate@0
- displayName: 'Authenticate to AzDO Feeds'
-
- - task: PowerShell@2
- displayName: Enable cross-org publishing
- inputs:
- filePath: eng\common\enable-cross-org-publishing.ps1
- arguments: -token $(dn-bot-dnceng-artifact-feeds-rw)
-
- - task: PowerShell@2
- displayName: Publish
- inputs:
- filePath: eng\common\sdk-task.ps1
- arguments: -task PublishToSymbolServers -restore -msbuildEngine dotnet
- /p:DotNetSymbolServerTokenMsdl=$(microsoft-symbol-server-pat)
- /p:DotNetSymbolServerTokenSymWeb=$(symweb-symbol-server-pat)
- /p:PDBArtifactsDirectory='$(Build.ArtifactStagingDirectory)/PDBArtifacts/'
- /p:BlobBasePath='$(Build.ArtifactStagingDirectory)/BlobArtifacts/'
- /p:SymbolPublishingExclusionsFile='$(Build.SourcesDirectory)/eng/SymbolPublishingExclusionsFile.txt'
- /p:Configuration=Release
- ${{ parameters.symbolPublishingAdditionalParameters }}
-
- - template: ../../steps/publish-logs.yml
- parameters:
- StageLabel: '${{ parameters.stageName }}'
- JobLabel: 'SymbolPublishing'
-
- - job: publish_assets
- displayName: Publish Assets
- dependsOn: setupMaestroVars
- timeoutInMinutes: 120
- variables:
- - name: BARBuildId
- value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.BARBuildId'] ]
- - name: IsStableBuild
- value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.IsStableBuild'] ]
- - name: AzDOProjectName
- value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOProjectName'] ]
- - name: AzDOPipelineId
- value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOPipelineId'] ]
- - name: AzDOBuildId
- value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOBuildId'] ]
- - name: ArtifactsCategory
- value: ${{ coalesce(variables._DotNetArtifactsCategory, '.NETCore') }}
- condition: contains(dependencies.setupMaestroVars.outputs['setReleaseVars.TargetChannels'], format('[{0}]', ${{ parameters.channelId }} ))
- pool:
- vmImage: 'windows-2019'
- steps:
- - script: echo "##vso[task.logissue type=warning]Going forward, v2 Arcade publishing is no longer supported. Please read https://github.com/dotnet/arcade/blob/main/Documentation/CorePackages/Publishing.md for details, then contact dnceng if you have further questions."
- displayName: Warn about v2 Arcade Publishing Usage
-
- - task: DownloadBuildArtifacts@0
- displayName: Download Build Assets
- continueOnError: true
- inputs:
- buildType: specific
- buildVersionToDownload: specific
- project: $(AzDOProjectName)
- pipeline: $(AzDOPipelineId)
- buildId: $(AzDOBuildId)
- downloadType: 'specific'
- itemPattern: |
- PackageArtifacts/**
- BlobArtifacts/**
- AssetManifests/**
- downloadPath: '$(Build.ArtifactStagingDirectory)'
- checkDownloadedFiles: true
-
- - task: NuGetToolInstaller@1
- displayName: 'Install NuGet.exe'
-
- # This is necessary whenever we want to publish/restore to an AzDO private feed
- - task: NuGetAuthenticate@0
- displayName: 'Authenticate to AzDO Feeds'
-
- - task: PowerShell@2
- displayName: Enable cross-org publishing
- inputs:
- filePath: eng\common\enable-cross-org-publishing.ps1
- arguments: -token $(dn-bot-dnceng-artifact-feeds-rw)
-
- - task: PowerShell@2
- displayName: Publish Assets
- inputs:
- filePath: eng\common\sdk-task.ps1
- arguments: -task PublishArtifactsInManifest -restore -msbuildEngine dotnet
- /p:PublishingInfraVersion=2
- /p:ArtifactsCategory=$(ArtifactsCategory)
- /p:IsStableBuild=$(IsStableBuild)
- /p:IsInternalBuild=$(IsInternalBuild)
- /p:RepositoryName=$(Build.Repository.Name)
- /p:CommitSha=$(Build.SourceVersion)
- /p:NugetPath=$(NuGetExeToolPath)
- /p:AzdoTargetFeedPAT='$(dn-bot-dnceng-universal-packages-rw)'
- /p:AzureStorageTargetFeedPAT='$(dotnetfeed-storage-access-key-1)'
- /p:BARBuildId=$(BARBuildId)
- /p:MaestroApiEndpoint='$(MaestroApiEndPoint)'
- /p:BuildAssetRegistryToken='$(MaestroApiAccessToken)'
- /p:ManifestsBasePath='$(Build.ArtifactStagingDirectory)/AssetManifests/'
- /p:BlobBasePath='$(Build.ArtifactStagingDirectory)/BlobArtifacts/'
- /p:PackageBasePath='$(Build.ArtifactStagingDirectory)/PackageArtifacts/'
- /p:Configuration=Release
- /p:PublishInstallersAndChecksums=${{ parameters.publishInstallersAndChecksums }}
- /p:InstallersTargetStaticFeed=$(InstallersBlobFeedUrl)
- /p:InstallersAzureAccountKey=$(dotnetcli-storage-key)
- /p:ChecksumsTargetStaticFeed=$(ChecksumsBlobFeedUrl)
- /p:ChecksumsAzureAccountKey=$(dotnetclichecksums-storage-key)
- /p:AzureDevOpsStaticShippingFeed='${{ parameters.shippingFeed }}'
- /p:AzureDevOpsStaticShippingFeedKey='$(dn-bot-dnceng-artifact-feeds-rw)'
- /p:AzureDevOpsStaticTransportFeed='${{ parameters.transportFeed }}'
- /p:AzureDevOpsStaticTransportFeedKey='$(dn-bot-dnceng-artifact-feeds-rw)'
- /p:AzureDevOpsStaticSymbolsFeed='${{ parameters.symbolsFeed }}'
- /p:AzureDevOpsStaticSymbolsFeedKey='$(dn-bot-dnceng-artifact-feeds-rw)'
- /p:LatestLinkShortUrlPrefix=dotnet/'${{ parameters.akaMSChannelName }}'
- /p:AkaMSClientId=$(akams-client-id)
- /p:AkaMSClientSecret=$(akams-client-secret)
- ${{ parameters.artifactsPublishingAdditionalParameters }}
-
- - template: ../../steps/publish-logs.yml
- parameters:
- StageLabel: '${{ parameters.stageName }}'
- JobLabel: 'AssetsPublishing'
-
- - template: ../../steps/add-build-to-channel.yml
- parameters:
- ChannelId: ${{ parameters.channelId }}
diff --git a/eng/common/templates/post-build/common-variables.yml b/eng/common/templates/post-build/common-variables.yml
index c99fd7503767cd..fae340f4d20d70 100644
--- a/eng/common/templates/post-build/common-variables.yml
+++ b/eng/common/templates/post-build/common-variables.yml
@@ -4,54 +4,6 @@ variables:
- group: DotNet-DotNetCli-Storage
- group: DotNet-MSRC-Storage
- group: Publish-Build-Assets
-
- # .NET Core 3.1 Dev
- - name: PublicDevRelease_31_Channel_Id
- value: 128
-
- # .NET 5 Dev
- - name: Net_5_Dev_Channel_Id
- value: 131
-
- # .NET Eng - Validation
- - name: Net_Eng_Validation_Channel_Id
- value: 9
-
- # .NET Eng - Latest
- - name: Net_Eng_Latest_Channel_Id
- value: 2
-
- # .NET 3 Eng - Validation
- - name: NET_3_Eng_Validation_Channel_Id
- value: 390
-
- # .NET 3 Eng
- - name: NetCore_3_Tools_Channel_Id
- value: 344
-
- # .NET Core 3.0 Internal Servicing
- - name: InternalServicing_30_Channel_Id
- value: 184
-
- # .NET Core 3.0 Release
- - name: PublicRelease_30_Channel_Id
- value: 19
-
- # .NET Core 3.1 Release
- - name: PublicRelease_31_Channel_Id
- value: 129
-
- # General Testing
- - name: GeneralTesting_Channel_Id
- value: 529
-
- # .NET Core 3.1 Blazor Features
- - name: NetCore_31_Blazor_Features_Channel_Id
- value: 531
-
- # .NET Core Experimental
- - name: NetCore_Experimental_Channel_Id
- value: 562
# Whether the build is internal or not
- name: IsInternalBuild
@@ -59,7 +11,7 @@ variables:
# Default Maestro++ API Endpoint and API Version
- name: MaestroApiEndPoint
- value: "https://maestro-prod.westus2.cloudapp.azure.com"
+ value: "https://maestro.dot.net"
- name: MaestroApiAccessToken
value: $(MaestroAccessToken)
- name: MaestroApiVersion
@@ -70,30 +22,5 @@ variables:
- name: SymbolToolVersion
value: 1.0.1
- # Feed Configurations
- # These should include the suffix "/index.json"
-
- # Default locations for Installers and checksums
- # Public Locations
- - name: ChecksumsBlobFeedUrl
- value: https://dotnetclichecksums.blob.core.windows.net/dotnet/index.json
- - name: InstallersBlobFeedUrl
- value: https://dotnetcli.blob.core.windows.net/dotnet/index.json
-
- # Private Locations
- - name: InternalChecksumsBlobFeedUrl
- value: https://dotnetclichecksumsmsrc.blob.core.windows.net/dotnet/index.json
- - name: InternalChecksumsBlobFeedKey
- value: $(dotnetclichecksumsmsrc-storage-key)
-
- - name: InternalInstallersBlobFeedUrl
- value: https://dotnetclimsrc.blob.core.windows.net/dotnet/index.json
- - name: InternalInstallersBlobFeedKey
- value: $(dotnetclimsrc-access-key)
-
- # Skip component governance and codesign validation for SDL. These jobs
- # create no content.
- - name: skipComponentGovernanceDetection
- value: true
- name: runCodesignValidationInjection
value: false
diff --git a/eng/common/templates/post-build/post-build.yml b/eng/common/templates/post-build/post-build.yml
index 4f79cf0f33703f..5a0bb8d96d2047 100644
--- a/eng/common/templates/post-build/post-build.yml
+++ b/eng/common/templates/post-build/post-build.yml
@@ -1,113 +1,114 @@
parameters:
- # Which publishing infra should be used. THIS SHOULD MATCH THE VERSION ON THE BUILD MANIFEST.
- # Publishing V2 accepts optionally outlining the publishing stages - default is inline.
- # Publishing V3 DOES NOT accept inlining the publishing stages.
- publishingInfraVersion: 2
- # When set to true the publishing templates from the repo will be used
- # otherwise Darc add-build-to-channel will be used to trigger the promotion pipeline
- inline: true
-
- # Only used if inline==false. When set to true will stall the current build until
- # the Promotion Pipeline build finishes. Otherwise, the current build will continue
- # execution concurrently with the promotion build.
- waitPublishingFinish: true
-
- BARBuildId: ''
- PromoteToChannelIds: ''
-
- enableSourceLinkValidation: false
- enableSigningValidation: true
- enableSymbolValidation: false
- enableNugetValidation: true
- publishInstallersAndChecksums: true
- SDLValidationParameters:
- enable: false
- continueOnError: false
- params: ''
- artifactNames: ''
- downloadArtifacts: true
+ # Which publishing infra should be used. THIS SHOULD MATCH THE VERSION ON THE BUILD MANIFEST.
+ # Publishing V1 is no longer supported
+ # Publishing V2 is no longer supported
+ # Publishing V3 is the default
+ - name: publishingInfraVersion
+ displayName: Which version of publishing should be used to promote the build definition?
+ type: number
+ default: 3
+ values:
+ - 3
+
+ - name: BARBuildId
+ displayName: BAR Build Id
+ type: number
+ default: 0
+
+ - name: PromoteToChannelIds
+ displayName: Channel to promote BARBuildId to
+ type: string
+ default: ''
+
+ - name: enableSourceLinkValidation
+ displayName: Enable SourceLink validation
+ type: boolean
+ default: false
+
+ - name: enableSigningValidation
+ displayName: Enable signing validation
+ type: boolean
+ default: true
+
+ - name: enableSymbolValidation
+ displayName: Enable symbol validation
+ type: boolean
+ default: false
+
+ - name: enableNugetValidation
+ displayName: Enable NuGet validation
+ type: boolean
+ default: true
+
+ - name: publishInstallersAndChecksums
+ displayName: Publish installers and checksums
+ type: boolean
+ default: true
+
+ - name: SDLValidationParameters
+ type: object
+ default:
+ enable: false
+ continueOnError: false
+ params: ''
+ artifactNames: ''
+ downloadArtifacts: true
# These parameters let the user customize the call to sdk-task.ps1 for publishing
# symbols & general artifacts as well as for signing validation
- symbolPublishingAdditionalParameters: ''
- artifactsPublishingAdditionalParameters: ''
- signingValidationAdditionalParameters: ''
+ - name: symbolPublishingAdditionalParameters
+ displayName: Symbol publishing additional parameters
+ type: string
+ default: ''
+
+ - name: artifactsPublishingAdditionalParameters
+ displayName: Artifact publishing additional parameters
+ type: string
+ default: ''
+
+ - name: signingValidationAdditionalParameters
+ displayName: Signing validation additional parameters
+ type: string
+ default: ''
# Which stages should finish execution before post-build stages start
- validateDependsOn:
- - build
- publishDependsOn:
- - Validate
+ - name: validateDependsOn
+ type: object
+ default:
+ - build
- # Channel ID's instantiated in this file.
- # When adding a new channel implementation the call to `check-channel-consistency.ps1`
- # needs to be updated with the new channel ID
- NetEngLatestChannelId: 2
- NetEngValidationChannelId: 9
- NetDev5ChannelId: 131
- NetDev6ChannelId: 1296
- GeneralTestingChannelId: 529
- NETCoreToolingDevChannelId: 548
- NETCoreToolingReleaseChannelId: 549
- NETInternalToolingChannelId: 551
- NETCoreExperimentalChannelId: 562
- NetEngServicesIntChannelId: 678
- NetEngServicesProdChannelId: 679
- NetCoreSDK313xxChannelId: 759
- NetCoreSDK313xxInternalChannelId: 760
- NetCoreSDK314xxChannelId: 921
- NetCoreSDK314xxInternalChannelId: 922
- VS166ChannelId: 1010
- VS167ChannelId: 1011
- VS168ChannelId: 1154
- VSMasterChannelId: 1012
- VS169ChannelId: 1473
- VS1610ChannelId: 1692
+ - name: publishDependsOn
+ type: object
+ default:
+ - Validate
stages:
-- ${{ if or(and(le(parameters.publishingInfraVersion, 2), eq(parameters.inline, 'true')), eq( parameters.enableNugetValidation, 'true'), eq(parameters.enableSigningValidation, 'true'), eq(parameters.enableSourceLinkValidation, 'true'), eq(parameters.SDLValidationParameters.enable, 'true')) }}:
+- ${{ if or(eq( parameters.enableNugetValidation, 'true'), eq(parameters.enableSigningValidation, 'true'), eq(parameters.enableSourceLinkValidation, 'true'), eq(parameters.SDLValidationParameters.enable, 'true')) }}:
- stage: Validate
dependsOn: ${{ parameters.validateDependsOn }}
displayName: Validate Build Assets
variables:
- template: common-variables.yml
jobs:
- - template: setup-maestro-vars.yml
- parameters:
- BARBuildId: ${{ parameters.BARBuildId }}
- PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
-
- - ${{ if and(le(parameters.publishingInfraVersion, 2), eq(parameters.inline, 'true')) }}:
- - job:
- displayName: Post-build Checks
- dependsOn: setupMaestroVars
- variables:
- - name: TargetChannels
- value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.TargetChannels'] ]
- pool:
- vmImage: 'windows-2019'
- steps:
- - task: PowerShell@2
- displayName: Maestro Channels Consistency
- inputs:
- filePath: $(Build.SourcesDirectory)/eng/common/post-build/check-channel-consistency.ps1
- arguments: -PromoteToChannels "$(TargetChannels)"
- -AvailableChannelIds ${{parameters.NetEngLatestChannelId}},${{parameters.NetEngValidationChannelId}},${{parameters.NetDev5ChannelId}},${{parameters.NetDev6ChannelId}},${{parameters.GeneralTestingChannelId}},${{parameters.NETCoreToolingDevChannelId}},${{parameters.NETCoreToolingReleaseChannelId}},${{parameters.NETInternalToolingChannelId}},${{parameters.NETCoreExperimentalChannelId}},${{parameters.NetEngServicesIntChannelId}},${{parameters.NetEngServicesProdChannelId}},${{parameters.NetCoreSDK313xxChannelId}},${{parameters.NetCoreSDK313xxInternalChannelId}},${{parameters.NetCoreSDK314xxChannelId}},${{parameters.NetCoreSDK314xxInternalChannelId}},${{parameters.VS166ChannelId}},${{parameters.VS167ChannelId}},${{parameters.VS168ChannelId}},${{parameters.VSMasterChannelId}},${{parameters.VS169ChannelId}},${{parameters.VS1610ChannelId}}
-
- job:
displayName: NuGet Validation
- dependsOn: setupMaestroVars
condition: eq( ${{ parameters.enableNugetValidation }}, 'true')
pool:
- vmImage: 'windows-2019'
- variables:
- - name: AzDOProjectName
- value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOProjectName'] ]
- - name: AzDOPipelineId
- value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOPipelineId'] ]
- - name: AzDOBuildId
- value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOBuildId'] ]
+ # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
+ ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
+ name: VSEngSS-MicroBuild2022-1ES
+ demands: Cmd
+ # If it's not devdiv, it's dnceng
+ ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}:
+ name: NetCore1ESPool-Svc-Internal
+ demands: ImageOverride -equals windows.vs2019.amd64
+
steps:
+ - template: setup-maestro-vars.yml
+ parameters:
+ BARBuildId: ${{ parameters.BARBuildId }}
+ PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
+
- task: DownloadBuildArtifacts@0
displayName: Download Package Artifacts
inputs:
@@ -123,24 +124,27 @@ stages:
displayName: Validate
inputs:
filePath: $(Build.SourcesDirectory)/eng/common/post-build/nuget-validation.ps1
- arguments: -PackagesPath $(Build.ArtifactStagingDirectory)/PackageArtifacts/
- -ToolDestinationPath $(Agent.BuildDirectory)/Extract/
+ arguments: -PackagesPath $(Build.ArtifactStagingDirectory)/PackageArtifacts/
+ -ToolDestinationPath $(Agent.BuildDirectory)/Extract/
- job:
displayName: Signing Validation
- dependsOn: setupMaestroVars
condition: and( eq( ${{ parameters.enableSigningValidation }}, 'true'), ne( variables['PostBuildSign'], 'true'))
- variables:
- - template: common-variables.yml
- - name: AzDOProjectName
- value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOProjectName'] ]
- - name: AzDOPipelineId
- value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOPipelineId'] ]
- - name: AzDOBuildId
- value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOBuildId'] ]
pool:
- vmImage: 'windows-2019'
+ # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
+ ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
+ name: VSEngSS-MicroBuild2022-1ES
+ demands: Cmd
+ # If it's not devdiv, it's dnceng
+ ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}:
+ name: NetCore1ESPool-Svc-Internal
+ demands: ImageOverride -equals windows.vs2019.amd64
steps:
+ - template: setup-maestro-vars.yml
+ parameters:
+ BARBuildId: ${{ parameters.BARBuildId }}
+ PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
+
- task: DownloadBuildArtifacts@0
displayName: Download Package Artifacts
inputs:
@@ -158,7 +162,7 @@ stages:
# This is necessary whenever we want to publish/restore to an AzDO private feed
# Since sdk-task.ps1 tries to restore packages we need to do this authentication here
# otherwise it'll complain about accessing a private feed.
- - task: NuGetAuthenticate@0
+ - task: NuGetAuthenticate@1
displayName: 'Authenticate to AzDO Feeds'
- task: PowerShell@2
@@ -185,19 +189,22 @@ stages:
- job:
displayName: SourceLink Validation
- dependsOn: setupMaestroVars
condition: eq( ${{ parameters.enableSourceLinkValidation }}, 'true')
- variables:
- - template: common-variables.yml
- - name: AzDOProjectName
- value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOProjectName'] ]
- - name: AzDOPipelineId
- value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOPipelineId'] ]
- - name: AzDOBuildId
- value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.AzDOBuildId'] ]
pool:
- vmImage: 'windows-2019'
+ # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
+ ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
+ name: VSEngSS-MicroBuild2022-1ES
+ demands: Cmd
+ # If it's not devdiv, it's dnceng
+ ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}:
+ name: NetCore1ESPool-Svc-Internal
+ demands: ImageOverride -equals windows.vs2019.amd64
steps:
+ - template: setup-maestro-vars.yml
+ parameters:
+ BARBuildId: ${{ parameters.BARBuildId }}
+ PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
+
- task: DownloadBuildArtifacts@0
displayName: Download Blob Artifacts
inputs:
@@ -213,9 +220,9 @@ stages:
displayName: Validate
inputs:
filePath: $(Build.SourcesDirectory)/eng/common/post-build/sourcelink-validation.ps1
- arguments: -InputPath $(Build.ArtifactStagingDirectory)/BlobArtifacts/
- -ExtractPath $(Agent.BuildDirectory)/Extract/
- -GHRepoName $(Build.Repository.Name)
+ arguments: -InputPath $(Build.ArtifactStagingDirectory)/BlobArtifacts/
+ -ExtractPath $(Agent.BuildDirectory)/Extract/
+ -GHRepoName $(Build.Repository.Name)
-GHCommit $(Build.SourceVersion)
-SourcelinkCliVersion $(SourceLinkCLIVersion)
continueOnError: true
@@ -223,367 +230,46 @@ stages:
- template: /eng/common/templates/job/execute-sdl.yml
parameters:
enable: ${{ parameters.SDLValidationParameters.enable }}
- dependsOn: setupMaestroVars
additionalParameters: ${{ parameters.SDLValidationParameters.params }}
continueOnError: ${{ parameters.SDLValidationParameters.continueOnError }}
artifactNames: ${{ parameters.SDLValidationParameters.artifactNames }}
downloadArtifacts: ${{ parameters.SDLValidationParameters.downloadArtifacts }}
-- ${{ if or(ge(parameters.publishingInfraVersion, 3), eq(parameters.inline, 'false')) }}:
- - stage: publish_using_darc
- ${{ if or(eq(parameters.enableNugetValidation, 'true'), eq(parameters.enableSigningValidation, 'true'), eq(parameters.enableSourceLinkValidation, 'true'), eq(parameters.SDLValidationParameters.enable, 'true')) }}:
- dependsOn: ${{ parameters.publishDependsOn }}
- ${{ if and(ne(parameters.enableNugetValidation, 'true'), ne(parameters.enableSigningValidation, 'true'), ne(parameters.enableSourceLinkValidation, 'true'), ne(parameters.SDLValidationParameters.enable, 'true')) }}:
- dependsOn: ${{ parameters.validateDependsOn }}
- displayName: Publish using Darc
- variables:
- - template: common-variables.yml
- jobs:
- - template: setup-maestro-vars.yml
- parameters:
- BARBuildId: ${{ parameters.BARBuildId }}
- PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
-
- - job:
- displayName: Publish Using Darc
- dependsOn: setupMaestroVars
- timeoutInMinutes: 120
- variables:
- - name: BARBuildId
- value: $[ dependencies.setupMaestroVars.outputs['setReleaseVars.BARBuildId'] ]
- pool:
- vmImage: 'windows-2019'
- steps:
- - task: PowerShell@2
- displayName: Publish Using Darc
- inputs:
- filePath: $(Build.SourcesDirectory)/eng/common/post-build/publish-using-darc.ps1
- arguments: -BuildId $(BARBuildId)
- -PublishingInfraVersion ${{ parameters.PublishingInfraVersion }}
- -AzdoToken '$(publishing-dnceng-devdiv-code-r-build-re)'
- -MaestroToken '$(MaestroApiAccessToken)'
- -WaitPublishingFinish ${{ parameters.waitPublishingFinish }}
- -PublishInstallersAndChecksums ${{ parameters.publishInstallersAndChecksums }}
- -ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}'
- -SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}'
-
-- ${{ if and(le(parameters.publishingInfraVersion, 2), eq(parameters.inline, 'true')) }}:
- - template: \eng\common\templates\post-build\channels\generic-public-channel.yml
- parameters:
- BARBuildId: ${{ parameters.BARBuildId }}
- PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
- artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
- dependsOn: ${{ parameters.publishDependsOn }}
- publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
- symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
- stageName: 'NetCore_Dev5_Publish'
- channelName: '.NET 5 Dev'
- akaMSChannelName: 'net5/dev'
- channelId: ${{ parameters.NetDev5ChannelId }}
- transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5-transport/nuget/v3/index.json'
- shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5/nuget/v3/index.json'
- symbolsFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet5-symbols/nuget/v3/index.json'
-
- - template: \eng\common\templates\post-build\channels\generic-public-channel.yml
- parameters:
- BARBuildId: ${{ parameters.BARBuildId }}
- PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
- artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
- dependsOn: ${{ parameters.publishDependsOn }}
- publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
- symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
- stageName: 'NetCore_Dev6_Publish'
- channelName: '.NET 6 Dev'
- akaMSChannelName: 'net6/dev'
- channelId: ${{ parameters.NetDev6ChannelId }}
- transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet6-transport/nuget/v3/index.json'
- shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet6/nuget/v3/index.json'
- symbolsFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet6-symbols/nuget/v3/index.json'
-
- - template: \eng\common\templates\post-build\channels\generic-public-channel.yml
- parameters:
- BARBuildId: ${{ parameters.BARBuildId }}
- PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
- artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
- dependsOn: ${{ parameters.publishDependsOn }}
- publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
- symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
- stageName: 'Net_Eng_Latest_Publish'
- channelName: '.NET Eng - Latest'
- akaMSChannelName: 'eng/daily'
- channelId: ${{ parameters.NetEngLatestChannelId }}
- transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json'
- shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json'
- symbolsFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng-symbols/nuget/v3/index.json'
-
- - template: \eng\common\templates\post-build\channels\generic-public-channel.yml
- parameters:
- BARBuildId: ${{ parameters.BARBuildId }}
- PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
- artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
- dependsOn: ${{ parameters.publishDependsOn }}
- publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
- symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
- stageName: 'Net_Eng_Validation_Publish'
- channelName: '.NET Eng - Validation'
- akaMSChannelName: 'eng/validation'
- channelId: ${{ parameters.NetEngValidationChannelId }}
- transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json'
- shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json'
- symbolsFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng-symbols/nuget/v3/index.json'
-
- - template: \eng\common\templates\post-build\channels\generic-public-channel.yml
- parameters:
- BARBuildId: ${{ parameters.BARBuildId }}
- PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
- artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
- dependsOn: ${{ parameters.publishDependsOn }}
- publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
- symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
- stageName: 'General_Testing_Publish'
- channelName: 'General Testing'
- akaMSChannelName: 'generaltesting'
- channelId: ${{ parameters.GeneralTestingChannelId }}
- transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/general-testing/nuget/v3/index.json'
- shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/general-testing/nuget/v3/index.json'
- symbolsFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/general-testing-symbols/nuget/v3/index.json'
-
- - template: \eng\common\templates\post-build\channels\generic-public-channel.yml
- parameters:
- BARBuildId: ${{ parameters.BARBuildId }}
- PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
- artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
- dependsOn: ${{ parameters.publishDependsOn }}
- publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
- symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
- stageName: 'NETCore_Tooling_Dev_Publishing'
- channelName: '.NET Core Tooling Dev'
- channelId: ${{ parameters.NETCoreToolingDevChannelId }}
- transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json'
- shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json'
- symbolsFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools-symbols/nuget/v3/index.json'
-
- - template: \eng\common\templates\post-build\channels\generic-public-channel.yml
- parameters:
- BARBuildId: ${{ parameters.BARBuildId }}
- PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
- artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
- dependsOn: ${{ parameters.publishDependsOn }}
- publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
- symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
- stageName: 'NETCore_Tooling_Release_Publishing'
- channelName: '.NET Core Tooling Release'
- channelId: ${{ parameters.NETCoreToolingReleaseChannelId }}
- transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json'
- shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json'
- symbolsFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools-symbols/nuget/v3/index.json'
-
- - template: \eng\common\templates\post-build\channels\generic-internal-channel.yml
- parameters:
- BARBuildId: ${{ parameters.BARBuildId }}
- PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
- artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
- dependsOn: ${{ parameters.publishDependsOn }}
- publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
- symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
- stageName: 'NET_Internal_Tooling_Publishing'
- channelName: '.NET Internal Tooling'
- channelId: ${{ parameters.NETInternalToolingChannelId }}
- transportFeed: 'https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet-tools-internal/nuget/v3/index.json'
- shippingFeed: 'https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet-tools-internal/nuget/v3/index.json'
- symbolsFeed: 'https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet-tools-internal-symbols/nuget/v3/index.json'
-
- - template: \eng\common\templates\post-build\channels\generic-public-channel.yml
- parameters:
- BARBuildId: ${{ parameters.BARBuildId }}
- PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
- artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
- dependsOn: ${{ parameters.publishDependsOn }}
- publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
- symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
- stageName: 'NETCore_Experimental_Publishing'
- channelName: '.NET Core Experimental'
- channelId: ${{ parameters.NETCoreExperimentalChannelId }}
- transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-experimental/nuget/v3/index.json'
- shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-experimental/nuget/v3/index.json'
- symbolsFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-experimental-symbols/nuget/v3/index.json'
-
- - template: \eng\common\templates\post-build\channels\generic-public-channel.yml
- parameters:
- BARBuildId: ${{ parameters.BARBuildId }}
- PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
- artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
- dependsOn: ${{ parameters.publishDependsOn }}
- publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
- symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
- stageName: 'Net_Eng_Services_Int_Publish'
- channelName: '.NET Eng Services - Int'
- channelId: ${{ parameters.NetEngServicesIntChannelId }}
- transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json'
- shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json'
- symbolsFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng-symbols/nuget/v3/index.json'
-
- - template: \eng\common\templates\post-build\channels\generic-public-channel.yml
- parameters:
- BARBuildId: ${{ parameters.BARBuildId }}
- PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
- artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
- dependsOn: ${{ parameters.publishDependsOn }}
- publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
- symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
- stageName: 'Net_Eng_Services_Prod_Publish'
- channelName: '.NET Eng Services - Prod'
- channelId: ${{ parameters.NetEngServicesProdChannelId }}
- transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json'
- shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json'
- symbolsFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng-symbols/nuget/v3/index.json'
-
- - template: \eng\common\templates\post-build\channels\generic-public-channel.yml
- parameters:
- BARBuildId: ${{ parameters.BARBuildId }}
- PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
- artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
- dependsOn: ${{ parameters.publishDependsOn }}
- publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
- symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
- stageName: 'NETCore_SDK_314xx_Publishing'
- channelName: '.NET Core SDK 3.1.4xx'
- channelId: ${{ parameters.NetCoreSDK314xxChannelId }}
- transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet3.1-transport/nuget/v3/index.json'
- shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet3.1/nuget/v3/index.json'
- symbolsFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet3.1-symbols/nuget/v3/index.json'
-
- - template: \eng\common\templates\post-build\channels\generic-internal-channel.yml
- parameters:
- BARBuildId: ${{ parameters.BARBuildId }}
- PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
- artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
- dependsOn: ${{ parameters.publishDependsOn }}
- publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
- symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
- stageName: 'NETCore_SDK_314xx_Internal_Publishing'
- channelName: '.NET Core SDK 3.1.4xx Internal'
- channelId: ${{ parameters.NetCoreSDK314xxInternalChannelId }}
- transportFeed: 'https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal-transport/nuget/v3/index.json'
- shippingFeed: 'https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal/nuget/v3/index.json'
- symbolsFeed: 'https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal-symbols/nuget/v3/index.json'
-
- - template: \eng\common\templates\post-build\channels\generic-public-channel.yml
- parameters:
- BARBuildId: ${{ parameters.BARBuildId }}
- PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
- artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
- dependsOn: ${{ parameters.publishDependsOn }}
- publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
- symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
- stageName: 'NETCore_SDK_313xx_Publishing'
- channelName: '.NET Core SDK 3.1.3xx'
- channelId: ${{ parameters.NetCoreSDK313xxChannelId }}
- transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet3.1-transport/nuget/v3/index.json'
- shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet3.1/nuget/v3/index.json'
- symbolsFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet3.1-symbols/nuget/v3/index.json'
-
- - template: \eng\common\templates\post-build\channels\generic-internal-channel.yml
- parameters:
- BARBuildId: ${{ parameters.BARBuildId }}
- PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
- artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
- dependsOn: ${{ parameters.publishDependsOn }}
- publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
- symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
- stageName: 'NETCore_SDK_313xx_Internal_Publishing'
- channelName: '.NET Core SDK 3.1.3xx Internal'
- channelId: ${{ parameters.NetCoreSDK313xxInternalChannelId }}
- transportFeed: 'https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal-transport/nuget/v3/index.json'
- shippingFeed: 'https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal/nuget/v3/index.json'
- symbolsFeed: 'https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal-symbols/nuget/v3/index.json'
-
- - template: \eng\common\templates\post-build\channels\generic-public-channel.yml
- parameters:
- BARBuildId: ${{ parameters.BARBuildId }}
- PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
- artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
- dependsOn: ${{ parameters.publishDependsOn }}
- publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
- symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
- stageName: 'VS16_6_Publishing'
- channelName: 'VS 16.6'
- channelId: ${{ parameters.VS166ChannelId }}
- transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools-transport/nuget/v3/index.json'
- shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json'
- symbolsFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools-symbols/nuget/v3/index.json'
-
- - template: \eng\common\templates\post-build\channels\generic-public-channel.yml
- parameters:
- BARBuildId: ${{ parameters.BARBuildId }}
- PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
- artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
- dependsOn: ${{ parameters.publishDependsOn }}
- publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
- symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
- stageName: 'VS16_7_Publishing'
- channelName: 'VS 16.7'
- channelId: ${{ parameters.VS167ChannelId }}
- transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools-transport/nuget/v3/index.json'
- shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json'
- symbolsFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools-symbols/nuget/v3/index.json'
-
- - template: \eng\common\templates\post-build\channels\generic-public-channel.yml
- parameters:
- BARBuildId: ${{ parameters.BARBuildId }}
- PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
- artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
- dependsOn: ${{ parameters.publishDependsOn }}
- publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
- symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
- stageName: 'VS16_8_Publishing'
- channelName: 'VS 16.8'
- channelId: ${{ parameters.VS168ChannelId }}
- transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools-transport/nuget/v3/index.json'
- shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json'
- symbolsFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools-symbols/nuget/v3/index.json'
-
- - template: \eng\common\templates\post-build\channels\generic-public-channel.yml
- parameters:
- BARBuildId: ${{ parameters.BARBuildId }}
- PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
- artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
- dependsOn: ${{ parameters.publishDependsOn }}
- publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
- symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
- stageName: 'VS_Master_Publishing'
- channelName: 'VS Master'
- channelId: ${{ parameters.VSMasterChannelId }}
- transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools-transport/nuget/v3/index.json'
- shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json'
- symbolsFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools-symbols/nuget/v3/index.json'
-
- - template: \eng\common\templates\post-build\channels\generic-public-channel.yml
- parameters:
- BARBuildId: ${{ parameters.BARBuildId }}
- PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
- artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
- dependsOn: ${{ parameters.publishDependsOn }}
- publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
- symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
- stageName: 'VS_16_9_Publishing'
- channelName: 'VS 16.9'
- channelId: ${{ parameters.VS169ChannelId }}
- transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools-transport/nuget/v3/index.json'
- shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json'
- symbolsFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools-symbols/nuget/v3/index.json'
-
- - template: \eng\common\templates\post-build\channels\generic-public-channel.yml
- parameters:
- BARBuildId: ${{ parameters.BARBuildId }}
- PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
- artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }}
- dependsOn: ${{ parameters.publishDependsOn }}
- publishInstallersAndChecksums: ${{ parameters.publishInstallersAndChecksums }}
- symbolPublishingAdditionalParameters: ${{ parameters.symbolPublishingAdditionalParameters }}
- stageName: 'VS_16_10_Publishing'
- channelName: 'VS 16.10'
- channelId: ${{ parameters.VS1610ChannelId }}
- transportFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools-transport/nuget/v3/index.json'
- shippingFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json'
- symbolsFeed: 'https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools-symbols/nuget/v3/index.json'
+- stage: publish_using_darc
+ ${{ if or(eq(parameters.enableNugetValidation, 'true'), eq(parameters.enableSigningValidation, 'true'), eq(parameters.enableSourceLinkValidation, 'true'), eq(parameters.SDLValidationParameters.enable, 'true')) }}:
+ dependsOn: ${{ parameters.publishDependsOn }}
+ ${{ if and(ne(parameters.enableNugetValidation, 'true'), ne(parameters.enableSigningValidation, 'true'), ne(parameters.enableSourceLinkValidation, 'true'), ne(parameters.SDLValidationParameters.enable, 'true')) }}:
+ dependsOn: ${{ parameters.validateDependsOn }}
+ displayName: Publish using Darc
+ variables:
+ - template: common-variables.yml
+ jobs:
+ - job:
+ displayName: Publish Using Darc
+ timeoutInMinutes: 120
+ pool:
+ # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
+ ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
+ name: VSEngSS-MicroBuild2022-1ES
+ demands: Cmd
+ # If it's not devdiv, it's dnceng
+ ${{ else }}:
+ name: NetCore1ESPool-Publishing-Internal
+ demands: ImageOverride -equals windows.vs2019.amd64
+ steps:
+ - template: setup-maestro-vars.yml
+ parameters:
+ BARBuildId: ${{ parameters.BARBuildId }}
+ PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
+
+ - task: PowerShell@2
+ displayName: Publish Using Darc
+ inputs:
+ filePath: $(Build.SourcesDirectory)/eng/common/post-build/publish-using-darc.ps1
+ arguments: -BuildId $(BARBuildId)
+ -PublishingInfraVersion ${{ parameters.publishingInfraVersion }}
+ -AzdoToken '$(publishing-dnceng-devdiv-code-r-build-re)'
+ -MaestroToken '$(MaestroApiAccessToken)'
+ -WaitPublishingFinish true
+ -ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}'
+ -SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}'
diff --git a/eng/common/templates/post-build/setup-maestro-vars.yml b/eng/common/templates/post-build/setup-maestro-vars.yml
index 4a22b2e6f6de79..0c87f149a4ad77 100644
--- a/eng/common/templates/post-build/setup-maestro-vars.yml
+++ b/eng/common/templates/post-build/setup-maestro-vars.yml
@@ -2,77 +2,69 @@ parameters:
BARBuildId: ''
PromoteToChannelIds: ''
-jobs:
-- job: setupMaestroVars
- displayName: Setup Maestro Vars
- variables:
- - template: common-variables.yml
- pool:
- vmImage: 'windows-2019'
- steps:
- - checkout: none
-
- - ${{ if eq(coalesce(parameters.PromoteToChannelIds, 0), 0) }}:
- - task: DownloadBuildArtifacts@0
- displayName: Download Release Configs
- inputs:
- buildType: current
- artifactName: ReleaseConfigs
- checkDownloadedFiles: true
-
- - task: PowerShell@2
- name: setReleaseVars
- displayName: Set Release Configs Vars
+steps:
+ - ${{ if eq(coalesce(parameters.PromoteToChannelIds, 0), 0) }}:
+ - task: DownloadBuildArtifacts@0
+ displayName: Download Release Configs
inputs:
- targetType: inline
- script: |
- try {
- if (!$Env:PromoteToMaestroChannels -or $Env:PromoteToMaestroChannels.Trim() -eq '') {
- $Content = Get-Content $(Build.StagingDirectory)/ReleaseConfigs/ReleaseConfigs.txt
+ buildType: current
+ artifactName: ReleaseConfigs
+ checkDownloadedFiles: true
- $BarId = $Content | Select -Index 0
- $Channels = $Content | Select -Index 1
- $IsStableBuild = $Content | Select -Index 2
+ - task: PowerShell@2
+ name: setReleaseVars
+ displayName: Set Release Configs Vars
+ inputs:
+ targetType: inline
+ pwsh: true
+ script: |
+ try {
+ if (!$Env:PromoteToMaestroChannels -or $Env:PromoteToMaestroChannels.Trim() -eq '') {
+ $Content = Get-Content $(Build.StagingDirectory)/ReleaseConfigs/ReleaseConfigs.txt
- $AzureDevOpsProject = $Env:System_TeamProject
- $AzureDevOpsBuildDefinitionId = $Env:System_DefinitionId
- $AzureDevOpsBuildId = $Env:Build_BuildId
- }
- else {
- $buildApiEndpoint = "${Env:MaestroApiEndPoint}/api/builds/${Env:BARBuildId}?api-version=${Env:MaestroApiVersion}"
+ $BarId = $Content | Select -Index 0
+ $Channels = $Content | Select -Index 1
+ $IsStableBuild = $Content | Select -Index 2
- $apiHeaders = New-Object 'System.Collections.Generic.Dictionary[[String],[String]]'
- $apiHeaders.Add('Accept', 'application/json')
- $apiHeaders.Add('Authorization',"Bearer ${Env:MAESTRO_API_TOKEN}")
-
- $buildInfo = try { Invoke-WebRequest -Method Get -Uri $buildApiEndpoint -Headers $apiHeaders | ConvertFrom-Json } catch { Write-Host "Error: $_" }
-
- $BarId = $Env:BARBuildId
- $Channels = $Env:PromoteToMaestroChannels -split ","
- $Channels = $Channels -join "]["
- $Channels = "[$Channels]"
+ $AzureDevOpsProject = $Env:System_TeamProject
+ $AzureDevOpsBuildDefinitionId = $Env:System_DefinitionId
+ $AzureDevOpsBuildId = $Env:Build_BuildId
+ }
+ else {
+ $buildApiEndpoint = "${Env:MaestroApiEndPoint}/api/builds/${Env:BARBuildId}?api-version=${Env:MaestroApiVersion}"
- $IsStableBuild = $buildInfo.stable
- $AzureDevOpsProject = $buildInfo.azureDevOpsProject
- $AzureDevOpsBuildDefinitionId = $buildInfo.azureDevOpsBuildDefinitionId
- $AzureDevOpsBuildId = $buildInfo.azureDevOpsBuildId
- }
+ $apiHeaders = New-Object 'System.Collections.Generic.Dictionary[[String],[String]]'
+ $apiHeaders.Add('Accept', 'application/json')
+ $apiHeaders.Add('Authorization',"Bearer ${Env:MAESTRO_API_TOKEN}")
- Write-Host "##vso[task.setvariable variable=BARBuildId;isOutput=true]$BarId"
- Write-Host "##vso[task.setvariable variable=TargetChannels;isOutput=true]$Channels"
- Write-Host "##vso[task.setvariable variable=IsStableBuild;isOutput=true]$IsStableBuild"
+ $buildInfo = try { Invoke-WebRequest -Method Get -Uri $buildApiEndpoint -Headers $apiHeaders | ConvertFrom-Json } catch { Write-Host "Error: $_" }
+
+ $BarId = $Env:BARBuildId
+ $Channels = $Env:PromoteToMaestroChannels -split ","
+ $Channels = $Channels -join "]["
+ $Channels = "[$Channels]"
- Write-Host "##vso[task.setvariable variable=AzDOProjectName;isOutput=true]$AzureDevOpsProject"
- Write-Host "##vso[task.setvariable variable=AzDOPipelineId;isOutput=true]$AzureDevOpsBuildDefinitionId"
- Write-Host "##vso[task.setvariable variable=AzDOBuildId;isOutput=true]$AzureDevOpsBuildId"
+ $IsStableBuild = $buildInfo.stable
+ $AzureDevOpsProject = $buildInfo.azureDevOpsProject
+ $AzureDevOpsBuildDefinitionId = $buildInfo.azureDevOpsBuildDefinitionId
+ $AzureDevOpsBuildId = $buildInfo.azureDevOpsBuildId
}
- catch {
- Write-Host $_
- Write-Host $_.Exception
- Write-Host $_.ScriptStackTrace
- exit 1
- }
- env:
- MAESTRO_API_TOKEN: $(MaestroApiAccessToken)
- BARBuildId: ${{ parameters.BARBuildId }}
- PromoteToMaestroChannels: ${{ parameters.PromoteToChannelIds }}
+
+ Write-Host "##vso[task.setvariable variable=BARBuildId]$BarId"
+ Write-Host "##vso[task.setvariable variable=TargetChannels]$Channels"
+ Write-Host "##vso[task.setvariable variable=IsStableBuild]$IsStableBuild"
+
+ Write-Host "##vso[task.setvariable variable=AzDOProjectName]$AzureDevOpsProject"
+ Write-Host "##vso[task.setvariable variable=AzDOPipelineId]$AzureDevOpsBuildDefinitionId"
+ Write-Host "##vso[task.setvariable variable=AzDOBuildId]$AzureDevOpsBuildId"
+ }
+ catch {
+ Write-Host $_
+ Write-Host $_.Exception
+ Write-Host $_.ScriptStackTrace
+ exit 1
+ }
+ env:
+ MAESTRO_API_TOKEN: $(MaestroApiAccessToken)
+ BARBuildId: ${{ parameters.BARBuildId }}
+ PromoteToMaestroChannels: ${{ parameters.PromoteToChannelIds }}
diff --git a/eng/common/templates/steps/component-governance.yml b/eng/common/templates/steps/component-governance.yml
new file mode 100644
index 00000000000000..12527b80ea9cdc
--- /dev/null
+++ b/eng/common/templates/steps/component-governance.yml
@@ -0,0 +1,10 @@
+parameters:
+ disableComponentGovernance: false
+
+steps:
+- ${{ if eq(parameters.disableComponentGovernance, 'true') }}:
+ - script: echo "##vso[task.setvariable variable=skipComponentGovernanceDetection]true"
+ displayName: Set skipComponentGovernanceDetection variable
+- ${{ if ne(parameters.disableComponentGovernance, 'true') }}:
+ - task: ComponentGovernanceComponentDetection@0
+ continueOnError: true
\ No newline at end of file
diff --git a/eng/common/templates/steps/execute-codeql.yml b/eng/common/templates/steps/execute-codeql.yml
new file mode 100644
index 00000000000000..3930b1630214b3
--- /dev/null
+++ b/eng/common/templates/steps/execute-codeql.yml
@@ -0,0 +1,32 @@
+parameters:
+ # Language that should be analyzed. Defaults to csharp
+ language: csharp
+ # Build Commands
+ buildCommands: ''
+ overrideParameters: '' # Optional: to override values for parameters.
+ additionalParameters: '' # Optional: parameters that need user specific values eg: '-SourceToolsList @("abc","def") -ArtifactToolsList @("ghi","jkl")'
+ # Optional: if specified, restore and use this version of Guardian instead of the default.
+ overrideGuardianVersion: ''
+ # Optional: if true, publish the '.gdn' folder as a pipeline artifact. This can help with in-depth
+ # diagnosis of problems with specific tool configurations.
+ publishGuardianDirectoryToPipeline: false
+ # The script to run to execute all SDL tools. Use this if you want to use a script to define SDL
+ # parameters rather than relying on YAML. It may be better to use a local script, because you can
+ # reproduce results locally without piecing together a command based on the YAML.
+ executeAllSdlToolsScript: 'eng/common/sdl/execute-all-sdl-tools.ps1'
+ # There is some sort of bug (has been reported) in Azure DevOps where if this parameter is named
+ # 'continueOnError', the parameter value is not correctly picked up.
+ # This can also be remedied by the caller (post-build.yml) if it does not use a nested parameter
+ # optional: determines whether to continue the build if the step errors;
+ sdlContinueOnError: false
+
+steps:
+- template: /eng/common/templates/steps/execute-sdl.yml
+ parameters:
+ overrideGuardianVersion: ${{ parameters.overrideGuardianVersion }}
+ executeAllSdlToolsScript: ${{ parameters.executeAllSdlToolsScript }}
+ overrideParameters: ${{ parameters.overrideParameters }}
+ additionalParameters: '${{ parameters.additionalParameters }}
+ -CodeQLAdditionalRunConfigParams @("BuildCommands < ${{ parameters.buildCommands }}", "Language < ${{ parameters.language }}")'
+ publishGuardianDirectoryToPipeline: ${{ parameters.publishGuardianDirectoryToPipeline }}
+ sdlContinueOnError: ${{ parameters.sdlContinueOnError }}
\ No newline at end of file
diff --git a/eng/common/templates/steps/execute-sdl.yml b/eng/common/templates/steps/execute-sdl.yml
new file mode 100644
index 00000000000000..9dd5709f66dc71
--- /dev/null
+++ b/eng/common/templates/steps/execute-sdl.yml
@@ -0,0 +1,88 @@
+parameters:
+ overrideGuardianVersion: ''
+ executeAllSdlToolsScript: ''
+ overrideParameters: ''
+ additionalParameters: ''
+ publishGuardianDirectoryToPipeline: false
+ sdlContinueOnError: false
+ condition: ''
+
+steps:
+- task: NuGetAuthenticate@1
+ inputs:
+ nuGetServiceConnections: GuardianConnect
+
+- task: NuGetToolInstaller@1
+ displayName: 'Install NuGet.exe'
+
+- ${{ if ne(parameters.overrideGuardianVersion, '') }}:
+ - pwsh: |
+ Set-Location -Path $(Build.SourcesDirectory)\eng\common\sdl
+ . .\sdl.ps1
+ $guardianCliLocation = Install-Gdn -Path $(Build.SourcesDirectory)\.artifacts -Version ${{ parameters.overrideGuardianVersion }}
+ Write-Host "##vso[task.setvariable variable=GuardianCliLocation]$guardianCliLocation"
+ displayName: Install Guardian (Overridden)
+
+- ${{ if eq(parameters.overrideGuardianVersion, '') }}:
+ - pwsh: |
+ Set-Location -Path $(Build.SourcesDirectory)\eng\common\sdl
+ . .\sdl.ps1
+ $guardianCliLocation = Install-Gdn -Path $(Build.SourcesDirectory)\.artifacts
+ Write-Host "##vso[task.setvariable variable=GuardianCliLocation]$guardianCliLocation"
+ displayName: Install Guardian
+
+- ${{ if ne(parameters.overrideParameters, '') }}:
+ - powershell: ${{ parameters.executeAllSdlToolsScript }} ${{ parameters.overrideParameters }}
+ displayName: Execute SDL
+ continueOnError: ${{ parameters.sdlContinueOnError }}
+ condition: ${{ parameters.condition }}
+
+- ${{ if eq(parameters.overrideParameters, '') }}:
+ - powershell: ${{ parameters.executeAllSdlToolsScript }}
+ -GuardianCliLocation $(GuardianCliLocation)
+ -NugetPackageDirectory $(Build.SourcesDirectory)\.packages
+ -AzureDevOpsAccessToken $(dn-bot-dotnet-build-rw-code-rw)
+ ${{ parameters.additionalParameters }}
+ displayName: Execute SDL
+ continueOnError: ${{ parameters.sdlContinueOnError }}
+ condition: ${{ parameters.condition }}
+
+- ${{ if ne(parameters.publishGuardianDirectoryToPipeline, 'false') }}:
+ # We want to publish the Guardian results and configuration for easy diagnosis. However, the
+ # '.gdn' dir is a mix of configuration, results, extracted dependencies, and Guardian default
+ # tooling files. Some of these files are large and aren't useful during an investigation, so
+ # exclude them by simply deleting them before publishing. (As of writing, there is no documented
+ # way to selectively exclude a dir from the pipeline artifact publish task.)
+ - task: DeleteFiles@1
+ displayName: Delete Guardian dependencies to avoid uploading
+ inputs:
+ SourceFolder: $(Agent.BuildDirectory)/.gdn
+ Contents: |
+ c
+ i
+ condition: succeededOrFailed()
+
+ - publish: $(Agent.BuildDirectory)/.gdn
+ artifact: GuardianConfiguration
+ displayName: Publish GuardianConfiguration
+ condition: succeededOrFailed()
+
+ # Publish the SARIF files in a container named CodeAnalysisLogs to enable integration
+ # with the "SARIF SAST Scans Tab" Azure DevOps extension
+ - task: CopyFiles@2
+ displayName: Copy SARIF files
+ inputs:
+ flattenFolders: true
+ sourceFolder: $(Agent.BuildDirectory)/.gdn/rc/
+ contents: '**/*.sarif'
+ targetFolder: $(Build.SourcesDirectory)/CodeAnalysisLogs
+ condition: succeededOrFailed()
+
+ # Use PublishBuildArtifacts because the SARIF extension only checks this case
+ # see microsoft/sarif-azuredevops-extension#4
+ - task: PublishBuildArtifacts@1
+ displayName: Publish SARIF files to CodeAnalysisLogs container
+ inputs:
+ pathToPublish: $(Build.SourcesDirectory)/CodeAnalysisLogs
+ artifactName: CodeAnalysisLogs
+ condition: succeededOrFailed()
\ No newline at end of file
diff --git a/eng/common/templates/steps/generate-sbom.yml b/eng/common/templates/steps/generate-sbom.yml
new file mode 100644
index 00000000000000..f4d7937f3798c7
--- /dev/null
+++ b/eng/common/templates/steps/generate-sbom.yml
@@ -0,0 +1,44 @@
+# BuildDropPath - The root folder of the drop directory for which the manifest file will be generated.
+# PackageName - The name of the package this SBOM represents.
+# PackageVersion - The version of the package this SBOM represents.
+# ManifestDirPath - The path of the directory where the generated manifest files will be placed
+
+parameters:
+ PackageVersion: 6.0.0
+ BuildDropPath: '$(Build.SourcesDirectory)/artifacts'
+ PackageName: '.NET'
+ ManifestDirPath: $(Build.ArtifactStagingDirectory)/sbom
+ sbomContinueOnError: true
+
+steps:
+- task: PowerShell@2
+ displayName: Prep for SBOM generation in (Non-linux)
+ condition: or(eq(variables['Agent.Os'], 'Windows_NT'), eq(variables['Agent.Os'], 'Darwin'))
+ inputs:
+ filePath: ./eng/common/generate-sbom-prep.ps1
+ arguments: ${{parameters.manifestDirPath}}
+
+# Chmodding is a workaround for https://github.com/dotnet/arcade/issues/8461
+- script: |
+ chmod +x ./eng/common/generate-sbom-prep.sh
+ ./eng/common/generate-sbom-prep.sh ${{parameters.manifestDirPath}}
+ displayName: Prep for SBOM generation in (Linux)
+ condition: eq(variables['Agent.Os'], 'Linux')
+ continueOnError: ${{ parameters.sbomContinueOnError }}
+
+- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0
+ displayName: 'Generate SBOM manifest'
+ continueOnError: ${{ parameters.sbomContinueOnError }}
+ inputs:
+ PackageName: ${{ parameters.packageName }}
+ BuildDropPath: ${{ parameters.buildDropPath }}
+ PackageVersion: ${{ parameters.packageVersion }}
+ ManifestDirPath: ${{ parameters.manifestDirPath }}
+
+- task: PublishPipelineArtifact@1
+ displayName: Publish SBOM manifest
+ continueOnError: ${{parameters.sbomContinueOnError}}
+ inputs:
+ targetPath: '${{parameters.manifestDirPath}}'
+ artifactName: $(ARTIFACT_NAME)
+
diff --git a/eng/common/templates/steps/retain-build.yml b/eng/common/templates/steps/retain-build.yml
new file mode 100644
index 00000000000000..83d97a26a01ff9
--- /dev/null
+++ b/eng/common/templates/steps/retain-build.yml
@@ -0,0 +1,28 @@
+parameters:
+ # Optional azure devops PAT with build execute permissions for the build's organization,
+ # only needed if the build that should be retained ran on a different organization than
+ # the pipeline where this template is executing from
+ Token: ''
+ # Optional BuildId to retain, defaults to the current running build
+ BuildId: ''
+ # Azure devops Organization URI for the build in the https://dev.azure.com/ format.
+ # Defaults to the organization the current pipeline is running on
+ AzdoOrgUri: '$(System.CollectionUri)'
+ # Azure devops project for the build. Defaults to the project the current pipeline is running on
+ AzdoProject: '$(System.TeamProject)'
+
+steps:
+ - task: powershell@2
+ inputs:
+ targetType: 'filePath'
+ filePath: eng/common/retain-build.ps1
+ pwsh: true
+ arguments: >
+ -AzdoOrgUri: ${{parameters.AzdoOrgUri}}
+ -AzdoProject ${{parameters.AzdoProject}}
+ -Token ${{coalesce(parameters.Token, '$env:SYSTEM_ACCESSTOKEN') }}
+ -BuildId ${{coalesce(parameters.BuildId, '$env:BUILD_ID')}}
+ displayName: Enable permanent build retention
+ env:
+ SYSTEM_ACCESSTOKEN: $(System.AccessToken)
+ BUILD_ID: $(Build.BuildId)
\ No newline at end of file
diff --git a/eng/common/templates/steps/source-build.yml b/eng/common/templates/steps/source-build.yml
index ba40dc82f1411b..b5b3e5aeb3b915 100644
--- a/eng/common/templates/steps/source-build.yml
+++ b/eng/common/templates/steps/source-build.yml
@@ -43,8 +43,8 @@ steps:
# In that case, add variables to allow the download of internal runtimes if the specified versions are not found
# in the default public locations.
internalRuntimeDownloadArgs=
- if [ '$(dotnetclimsrc-read-sas-token-base64)' != '$''(dotnetclimsrc-read-sas-token-base64)' ]; then
- internalRuntimeDownloadArgs='/p:DotNetRuntimeSourceFeed=https://dotnetclimsrc.blob.core.windows.net/dotnet /p:DotNetRuntimeSourceFeedKey=$(dotnetclimsrc-read-sas-token-base64) --runtimesourcefeed https://dotnetclimsrc.blob.core.windows.net/dotnet --runtimesourcefeedkey $(dotnetclimsrc-read-sas-token-base64)'
+ if [ '$(dotnetbuilds-internal-container-read-token-base64)' != '$''(dotnetbuilds-internal-container-read-token-base64)' ]; then
+ internalRuntimeDownloadArgs='/p:DotNetRuntimeSourceFeed=https://dotnetbuilds.blob.core.windows.net/internal /p:DotNetRuntimeSourceFeedKey=$(dotnetbuilds-internal-container-read-token-base64) --runtimesourcefeed https://dotnetbuilds.blob.core.windows.net/internal --runtimesourcefeedkey $(dotnetbuilds-internal-container-read-token-base64)'
fi
buildConfig=Release
@@ -63,6 +63,11 @@ steps:
targetRidArgs='/p:TargetRid=${{ parameters.platform.targetRID }}'
fi
+ runtimeOsArgs=
+ if [ '${{ parameters.platform.runtimeOS }}' != '' ]; then
+ runtimeOsArgs='/p:RuntimeOS=${{ parameters.platform.runtimeOS }}'
+ fi
+
publishArgs=
if [ '${{ parameters.platform.skipPublishValidation }}' != 'true' ]; then
publishArgs='--publish'
@@ -75,6 +80,7 @@ steps:
$internalRuntimeDownloadArgs \
$internalRestoreArgs \
$targetRidArgs \
+ $runtimeOsArgs \
/p:SourceBuildNonPortable=${{ parameters.platform.nonPortable }} \
/p:ArcadeBuildFromSource=true
displayName: Build
diff --git a/eng/common/templates/variables/sdl-variables.yml b/eng/common/templates/variables/sdl-variables.yml
new file mode 100644
index 00000000000000..1a860bd0406475
--- /dev/null
+++ b/eng/common/templates/variables/sdl-variables.yml
@@ -0,0 +1,7 @@
+variables:
+# The Guardian version specified in 'eng/common/sdl/packages.config'. This value must be kept in
+# sync with the packages.config file.
+- name: DefaultGuardianVersion
+ value: 0.110.1
+- name: GuardianPackagesConfigFile
+ value: $(Build.SourcesDirectory)\eng\common\sdl\packages.config
\ No newline at end of file
diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1
index 5d526c74d518ce..81d7b0355e3821 100644
--- a/eng/common/tools.ps1
+++ b/eng/common/tools.ps1
@@ -298,31 +298,44 @@ function InstallDotNet([string] $dotnetRoot,
if ($skipNonVersionedFiles) { $installParameters.SkipNonVersionedFiles = $skipNonVersionedFiles }
if ($noPath) { $installParameters.NoPath = $True }
- try {
- & $installScript @installParameters
- }
- catch {
- if ($runtimeSourceFeed -or $runtimeSourceFeedKey) {
- Write-Host "Failed to install dotnet from public location. Trying from '$runtimeSourceFeed'"
- if ($runtimeSourceFeed) { $installParameters.AzureFeed = $runtimeSourceFeed }
+ $variations = @()
+ $variations += @($installParameters)
- if ($runtimeSourceFeedKey) {
- $decodedBytes = [System.Convert]::FromBase64String($runtimeSourceFeedKey)
- $decodedString = [System.Text.Encoding]::UTF8.GetString($decodedBytes)
- $installParameters.FeedCredential = $decodedString
- }
+ $dotnetBuilds = $installParameters.Clone()
+ $dotnetbuilds.AzureFeed = "https://dotnetbuilds.azureedge.net/public"
+ $variations += @($dotnetBuilds)
- try {
- & $installScript @installParameters
- }
- catch {
- Write-PipelineTelemetryError -Category 'InitializeToolset' -Message "Failed to install dotnet from custom location '$runtimeSourceFeed'."
- ExitWithExitCode 1
- }
+ if ($runtimeSourceFeed) {
+ $runtimeSource = $installParameters.Clone()
+ $runtimeSource.AzureFeed = $runtimeSourceFeed
+ if ($runtimeSourceFeedKey) {
+ $decodedBytes = [System.Convert]::FromBase64String($runtimeSourceFeedKey)
+ $decodedString = [System.Text.Encoding]::UTF8.GetString($decodedBytes)
+ $runtimeSource.FeedCredential = $decodedString
+ }
+ $variations += @($runtimeSource)
+ }
+
+ $installSuccess = $false
+ foreach ($variation in $variations) {
+ if ($variation | Get-Member AzureFeed) {
+ $location = $variation.AzureFeed
} else {
- Write-PipelineTelemetryError -Category 'InitializeToolset' -Message "Failed to install dotnet from public location."
- ExitWithExitCode 1
+ $location = "public location";
+ }
+ Write-Host "Attempting to install dotnet from $location."
+ try {
+ & $installScript @variation
+ $installSuccess = $true
+ break
}
+ catch {
+ Write-Host "Failed to install dotnet from $location."
+ }
+ }
+ if (-not $installSuccess) {
+ Write-PipelineTelemetryError -Category 'InitializeToolset' -Message "Failed to install dotnet from any of the specified locations."
+ ExitWithExitCode 1
}
}
@@ -622,6 +635,10 @@ function InitializeNativeTools() {
InstallDirectory = "$ToolsDir"
}
}
+ if ($env:NativeToolsOnMachine) {
+ Write-Host "Variable NativeToolsOnMachine detected, enabling native tool path promotion..."
+ $nativeArgs += @{ PathPromotion = $true }
+ }
& "$PSScriptRoot/init-tools-native.ps1" @nativeArgs
}
}
@@ -706,6 +723,8 @@ function MSBuild() {
Write-PipelineSetVariable -Name 'NUGET_PLUGIN_REQUEST_TIMEOUT_IN_SECONDS' -Value '20'
}
+ Enable-Nuget-EnhancedRetry
+
$toolsetBuildProject = InitializeToolset
$basePath = Split-Path -parent $toolsetBuildProject
$possiblePaths = @(
@@ -714,6 +733,8 @@ function MSBuild() {
(Join-Path $basePath (Join-Path $buildTool.Framework 'Microsoft.DotNet.Arcade.Sdk.dll')),
(Join-Path $basePath (Join-Path netcoreapp2.1 'Microsoft.DotNet.ArcadeLogging.dll')),
(Join-Path $basePath (Join-Path netcoreapp2.1 'Microsoft.DotNet.Arcade.Sdk.dll'))
+ (Join-Path $basePath (Join-Path netcoreapp3.1 'Microsoft.DotNet.ArcadeLogging.dll')),
+ (Join-Path $basePath (Join-Path netcoreapp3.1 'Microsoft.DotNet.Arcade.Sdk.dll'))
)
$selectedPath = $null
foreach ($path in $possiblePaths) {
@@ -750,6 +771,8 @@ function MSBuild-Core() {
}
}
+ Enable-Nuget-EnhancedRetry
+
$buildTool = InitializeBuildTool
$cmdArgs = "$($buildTool.Command) /m /nologo /clp:Summary /v:$verbosity /nr:$nodeReuse /p:ContinuousIntegrationBuild=$ci"
@@ -872,3 +895,18 @@ if (!$disableConfigureToolsetImport) {
}
}
}
+
+#
+# If $ci flag is set, turn on (and log that we did) special environment variables for improved Nuget client retry logic.
+#
+function Enable-Nuget-EnhancedRetry() {
+ if ($ci) {
+ Write-Host "Setting NUGET enhanced retry environment variables"
+ $env:NUGET_ENABLE_EXPERIMENTAL_HTTP_RETRY = 'true'
+ $env:NUGET_EXPERIMENTAL_MAX_NETWORK_TRY_COUNT = 6
+ $env:NUGET_EXPERIMENTAL_NETWORK_RETRY_DELAY_MILLISECONDS = 1000
+ Write-PipelineSetVariable -Name 'NUGET_ENABLE_EXPERIMENTAL_HTTP_RETRY' -Value 'true'
+ Write-PipelineSetVariable -Name 'NUGET_EXPERIMENTAL_MAX_NETWORK_TRY_COUNT' -Value '6'
+ Write-PipelineSetVariable -Name 'NUGET_EXPERIMENTAL_NETWORK_RETRY_DELAY_MILLISECONDS' -Value '1000'
+ }
+}
diff --git a/eng/common/tools.sh b/eng/common/tools.sh
index 828119be411b3d..e555c34269f6e8 100755
--- a/eng/common/tools.sh
+++ b/eng/common/tools.sh
@@ -188,28 +188,29 @@ function InstallDotNet {
GetDotNetInstallScript "$root"
local install_script=$_GetDotNetInstallScript
- local archArg=''
+ local installParameters=(--version $version --install-dir "$root")
+
if [[ -n "${3:-}" ]] && [ "$3" != 'unset' ]; then
- archArg="--architecture $3"
+ installParameters+=(--architecture $3)
fi
- local runtimeArg=''
if [[ -n "${4:-}" ]] && [ "$4" != 'sdk' ]; then
- runtimeArg="--runtime $4"
+ installParameters+=(--runtime $4)
fi
- local skipNonVersionedFilesArg=""
if [[ "$#" -ge "5" ]] && [[ "$5" != 'false' ]]; then
- skipNonVersionedFilesArg="--skip-non-versioned-files"
+ installParameters+=(--skip-non-versioned-files)
fi
- bash "$install_script" --version $version --install-dir "$root" $archArg $runtimeArg $skipNonVersionedFilesArg || {
- local exit_code=$?
- echo "Failed to install dotnet SDK from public location (exit code '$exit_code')."
- local runtimeSourceFeed=''
- if [[ -n "${6:-}" ]]; then
- runtimeSourceFeed="--azure-feed $6"
- fi
+ local variations=() # list of variable names with parameter arrays in them
+
+ local public_location=("${installParameters[@]}")
+ variations+=(public_location)
- local runtimeSourceFeedKey=''
+ local dotnetbuilds=("${installParameters[@]}" --azure-feed "https://dotnetbuilds.azureedge.net/public")
+ variations+=(dotnetbuilds)
+
+ if [[ -n "${6:-}" ]]; then
+ variations+=(private_feed)
+ local private_feed=("${installParameters[@]}" --azure-feed $6)
if [[ -n "${7:-}" ]]; then
# The 'base64' binary on alpine uses '-d' and doesn't support '--decode'
# '-d'. To work around this, do a simple detection and switch the parameter
@@ -219,22 +220,27 @@ function InstallDotNet {
decodeArg="-d"
fi
decodedFeedKey=`echo $7 | base64 $decodeArg`
- runtimeSourceFeedKey="--feed-credential $decodedFeedKey"
+ private_feed+=(--feed-credential $decodedFeedKey)
fi
+ fi
- if [[ -n "$runtimeSourceFeed" || -n "$runtimeSourceFeedKey" ]]; then
- bash "$install_script" --version $version --install-dir "$root" $archArg $runtimeArg $skipNonVersionedFilesArg $runtimeSourceFeed $runtimeSourceFeedKey || {
- local exit_code=$?
- Write-PipelineTelemetryError -category 'InitializeToolset' "Failed to install dotnet SDK from custom location '$runtimeSourceFeed' (exit code '$exit_code')."
- ExitWithExitCode $exit_code
- }
- else
- if [[ $exit_code != 0 ]]; then
- Write-PipelineTelemetryError -category 'InitializeToolset' "Failed to install dotnet SDK from public location (exit code '$exit_code')."
- fi
- ExitWithExitCode $exit_code
+ local installSuccess=0
+ for variationName in "${variations[@]}"; do
+ local name="$variationName[@]"
+ local variation=("${!name}")
+ echo "Attempting to install dotnet from $variationName."
+ bash "$install_script" "${variation[@]}" && installSuccess=1
+ if [[ "$installSuccess" -eq 1 ]]; then
+ break
fi
- }
+
+ echo "Failed to install dotnet from $variationName."
+ done
+
+ if [[ "$installSuccess" -eq 0 ]]; then
+ Write-PipelineTelemetryError -category 'InitializeToolset' "Failed to install dotnet SDK from any of the specified locations."
+ ExitWithExitCode 1
+ fi
}
function with_retries {
@@ -410,6 +416,13 @@ function MSBuild {
export NUGET_PLUGIN_REQUEST_TIMEOUT_IN_SECONDS=20
Write-PipelineSetVariable -name "NUGET_PLUGIN_HANDSHAKE_TIMEOUT_IN_SECONDS" -value "20"
Write-PipelineSetVariable -name "NUGET_PLUGIN_REQUEST_TIMEOUT_IN_SECONDS" -value "20"
+
+ export NUGET_ENABLE_EXPERIMENTAL_HTTP_RETRY=true
+ export NUGET_EXPERIMENTAL_MAX_NETWORK_TRY_COUNT=6
+ export NUGET_EXPERIMENTAL_NETWORK_RETRY_DELAY_MILLISECONDS=1000
+ Write-PipelineSetVariable -name "NUGET_ENABLE_EXPERIMENTAL_HTTP_RETRY" -value "true"
+ Write-PipelineSetVariable -name "NUGET_EXPERIMENTAL_MAX_NETWORK_TRY_COUNT" -value "6"
+ Write-PipelineSetVariable -name "NUGET_EXPERIMENTAL_NETWORK_RETRY_DELAY_MILLISECONDS" -value "1000"
fi
local toolset_dir="${_InitializeToolset%/*}"
@@ -420,6 +433,8 @@ function MSBuild {
possiblePaths+=( "$toolset_dir/$_InitializeBuildToolFramework/Microsoft.DotNet.Arcade.Sdk.dll" )
possiblePaths+=( "$toolset_dir/netcoreapp2.1/Microsoft.DotNet.ArcadeLogging.dll" )
possiblePaths+=( "$toolset_dir/netcoreapp2.1/Microsoft.DotNet.Arcade.Sdk.dll" )
+ possiblePaths+=( "$toolset_dir/netcoreapp3.1/Microsoft.DotNet.ArcadeLogging.dll" )
+ possiblePaths+=( "$toolset_dir/netcoreapp3.1/Microsoft.DotNet.Arcade.Sdk.dll" )
for path in "${possiblePaths[@]}"; do
if [[ -f $path ]]; then
selectedPath=$path
diff --git a/eng/install-native-dependencies.sh b/eng/install-native-dependencies.sh
index a29dfdf78aae49..b7d7c33a010b80 100755
--- a/eng/install-native-dependencies.sh
+++ b/eng/install-native-dependencies.sh
@@ -1,49 +1,51 @@
-#!/usr/bin/env bash
+#!/bin/sh
+
+set -e
# This is a simple script primarily used for CI to install necessary dependencies
#
-# For CI typical usage is
-#
-# ./install-native-dependencies.sh azDO
-#
-# For developer use it is not recommended to include the azDO final argument as that
-# makes installation and configuration setting only required for azDO
-#
-# So simple developer usage would currently be
+# Usage:
#
# ./install-native-dependencies.sh
-if [ "$1" = "Linux" ]; then
- sudo apt update
- if [ "$?" != "0" ]; then
- exit 1;
- fi
- sudo apt install cmake llvm-3.9 clang-3.9 lldb-3.9 liblldb-3.9-dev libunwind8 libunwind8-dev gettext libicu-dev liblttng-ust-dev libcurl4-openssl-dev libssl-dev libkrb5-dev libnuma-dev build-essential
- if [ "$?" != "0" ]; then
- exit 1;
- fi
-elif [ "$1" = "MacCatalyst" ] || [ "$1" = "OSX" ] || [ "$1" = "tvOS" ] || [ "$1" = "iOS" ]; then
- engdir=$(dirname "${BASH_SOURCE[0]}")
-
- echo "Installed xcode version: `xcode-select -p`"
-
- if [ "$3" = "azDO" ]; then
- # workaround for old osx images on hosted agents
- # piped in case we get an agent without these values installed
- if ! brew_output="$(brew uninstall openssl@1.0.2t 2>&1 >/dev/null)"; then
- echo "didn't uninstall openssl@1.0.2t"
- else
- echo "succesfully uninstalled openssl@1.0.2t"
- fi
- fi
-
- brew update --preinstall
- brew bundle --no-upgrade --no-lock --file "${engdir}/Brewfile"
- if [ "$?" != "0" ]; then
- exit 1;
- fi
-else
- echo "Must pass \"Linux\", \"tvOS\", \"iOS\" or \"OSX\" as first argument."
- exit 1
+os="$(echo "$1" | tr "[:upper:]" "[:lower:]")"
+
+if [ -z "$os" ]; then
+ . "$(dirname "$0")"/native/init-os-and-arch.sh
+ os="$(echo "$os" | tr "[:upper:]" "[:lower:]")"
fi
+case "$os" in
+ linux)
+ if [ -e /etc/os-release ]; then
+ . /etc/os-release
+ fi
+
+ if [ "$ID" != "debian" ] && [ "$ID_LIKE" != "debian" ]; then
+ echo "Unsupported distro. distro: $ID"
+ exit 1
+ fi
+
+ apt update
+
+ apt install -y build-essential gettext locales cmake llvm clang lldb liblldb-dev libunwind8-dev libicu-dev liblttng-ust-dev \
+ libssl-dev libkrb5-dev libnuma-dev zlib1g-dev
+
+ localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8
+ ;;
+
+ osx|mac*|ios*|tvos*)
+ echo "Installed xcode version: $(xcode-select -p)"
+
+ export HOMEBREW_NO_INSTALL_CLEANUP=1
+ export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
+ # Skip brew update for now, see https://github.com/actions/setup-python/issues/577
+ # brew update --preinstall
+ brew bundle --no-upgrade --no-lock --file "$(dirname "$0")/Brewfile"
+ ;;
+
+ *)
+ echo "Unsupported platform. OS: $os"
+ exit 1
+ ;;
+esac
diff --git a/eng/liveBuilds.targets b/eng/liveBuilds.targets
index d62f4bcd438d8c..0834d63b159424 100644
--- a/eng/liveBuilds.targets
+++ b/eng/liveBuilds.targets
@@ -193,6 +193,8 @@
- $(RuntimeIdGraphDefinitionFile)
+
+ $([MSBuild]::NormalizePath('$(ArtifactsBinDir)', 'Microsoft.NETCore.Platforms', 'runtime.json'))
+ $([MSBuild]::NormalizePath('$(LibrariesProjectRoot)', 'Microsoft.NETCore.Platforms', 'src', 'runtime.json'))
diff --git a/eng/native/build-commons.sh b/eng/native/build-commons.sh
index e07b5e0048cf14..85a6f50ec66680 100755
--- a/eng/native/build-commons.sh
+++ b/eng/native/build-commons.sh
@@ -27,7 +27,7 @@ isMSBuildOnNETCoreSupported()
return
fi
- if [[ ( "$__HostOS" == "Linux" ) && ( "$__HostArch" == "x64" || "$__HostArch" == "arm" || "$__HostArch" == "armel" || "$__HostArch" == "arm64" ) ]]; then
+ if [[ ( "$__HostOS" == "Linux" ) && ( "$__HostArch" == "x64" || "$__HostArch" == "arm" || "$__HostArch" == "armel" || "$__HostArch" == "arm64" || "$__HostArch" == "s390x" ) ]]; then
__IsMSBuildOnNETCoreSupported=1
elif [[ ( "$__HostOS" == "OSX" || "$__HostOS" == "FreeBSD" ) && "$__HostArch" == "x64" ]]; then
__IsMSBuildOnNETCoreSupported=1
@@ -230,7 +230,7 @@ usage()
echo ""
echo "Common Options:"
echo ""
- echo "BuildArch can be: -arm, -armel, -arm64, x64, x86, -wasm"
+ echo "BuildArch can be: -arm, -armel, -arm64, -s390x, x64, x86, -wasm"
echo "BuildType can be: -debug, -checked, -release"
echo "-os: target OS (defaults to running OS)"
echo "-bindir: output directory (defaults to $__ProjectRoot/artifacts)"
@@ -246,6 +246,7 @@ usage()
echo "-msbuildonunsupportedplatform: build managed binaries even if distro is not officially supported."
echo "-ninja: target ninja instead of GNU make"
echo "-numproc: set the number of build processes."
+ echo "-outputrid: optional argument that overrides the target rid name."
echo "-portablebuild: pass -portablebuild=false to force a non-portable build."
echo "-skipconfigure: skip build configuration."
echo "-skipgenerateversion: disable version generation even if MSBuild is supported."
@@ -268,6 +269,7 @@ __HostArch=$arch
__TargetOS=$os
__HostOS=$os
__BuildOS=$os
+__OutputRid=''
__msbuildonunsupportedplatform=0
@@ -443,6 +445,16 @@ while :; do
__BuildArch=wasm
;;
+ outputrid|-outputrid)
+ if [[ -n "$2" ]]; then
+ __OutputRid="$2"
+ shift
+ else
+ echo "ERROR: 'outputrid' requires a non-empty option argument"
+ exit 1
+ fi
+ ;;
+
os|-os)
if [[ -n "$2" ]]; then
__TargetOS="$2"
@@ -508,5 +520,8 @@ fi
# init the target distro name
initTargetDistroRid
+if [ -z "$__OutputRid" ]; then
+ __OutputRid="$(echo $__DistroRid | tr '[:upper:]' '[:lower:]')"
+fi
# Init if MSBuild for .NET Core is supported for this platform
isMSBuildOnNETCoreSupported
diff --git a/eng/native/configurecompiler.cmake b/eng/native/configurecompiler.cmake
index 496384c35a70ea..88b3cd93745ca7 100644
--- a/eng/native/configurecompiler.cmake
+++ b/eng/native/configurecompiler.cmake
@@ -68,12 +68,14 @@ if (MSVC)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /PDBCOMPRESS")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /DEBUG")
+ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /DEBUGTYPE:CV,FIXUP")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /IGNORE:4197,4013,4254,4070,4221")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SUBSYSTEM:WINDOWS,${WINDOWS_SUBSYSTEM_VERSION}")
set(CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS} /IGNORE:4221")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /DEBUG")
+ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /DEBUGTYPE:CV,FIXUP")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /PDBCOMPRESS")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:1572864")
@@ -338,15 +340,17 @@ if (CLR_CMAKE_HOST_UNIX)
#These seem to indicate real issues
add_compile_options($<$:-Wno-invalid-offsetof>)
- if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ add_compile_options(-Wno-unused-but-set-variable)
+
+ if (CMAKE_C_COMPILER_ID MATCHES "Clang")
+ add_compile_options(-Wno-unknown-warning-option)
+
# The -ferror-limit is helpful during the porting, it makes sure the compiler doesn't stop
# after hitting just about 20 errors.
add_compile_options(-ferror-limit=4096)
# Disabled warnings
add_compile_options(-Wno-unused-private-field)
- # Explicit constructor calls are not supported by clang (this->ClassName::ClassName())
- add_compile_options(-Wno-microsoft)
# There are constants of type BOOL used in a condition. But BOOL is defined as int
# and so the compiler thinks that there is a mistake.
add_compile_options(-Wno-constant-logical-operand)
@@ -361,8 +365,21 @@ if (CLR_CMAKE_HOST_UNIX)
# to a struct or a class that has virtual members or a base class. In that case, clang
# may not generate the same object layout as MSVC.
add_compile_options(-Wno-incompatible-ms-struct)
+
+ add_compile_options(-Wno-reserved-identifier)
+
+ # clang 16.0 introduced buffer hardening https://discourse.llvm.org/t/rfc-c-buffer-hardening/65734
+ # which we are not conforming to yet.
+ add_compile_options(-Wno-unsafe-buffer-usage)
+
+ # other clang 16.0 suppressions
+ add_compile_options(-Wno-single-bit-bitfield-constant-conversion)
+ add_compile_options(-Wno-cast-function-type-strict)
+ add_compile_options(-Wno-incompatible-function-pointer-types-strict)
+
+ # clang 18.1 supressions
+ add_compile_options(-Wno-switch-default)
else()
- add_compile_options(-Wno-unused-but-set-variable)
add_compile_options(-Wno-unknown-pragmas)
add_compile_options(-Wno-uninitialized)
add_compile_options(-Wno-strict-aliasing)
@@ -415,7 +432,7 @@ if (CLR_CMAKE_HOST_UNIX)
set(CMAKE_OSX_DEPLOYMENT_TARGET "11.0")
add_compile_options(-arch arm64)
elseif(CLR_CMAKE_HOST_ARCH_AMD64)
- set(CMAKE_OSX_DEPLOYMENT_TARGET "10.13")
+ set(CMAKE_OSX_DEPLOYMENT_TARGET "10.14")
add_compile_options(-arch x86_64)
else()
clr_unknown_arch()
@@ -573,7 +590,7 @@ if (MSVC)
set(CMAKE_ASM_MASM_FLAGS "${CMAKE_ASM_MASM_FLAGS} /guard:ehcont")
add_linker_flag(/guard:ehcont)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /CETCOMPAT")
- endif (CLR_CMAKE_HOST_ARCH_AMD64)
+ endif (CLR_CMAKE_HOST_ARCH_AMD64 AND NOT CLR_CMAKE_RUNTIME_MONO)
# Statically linked CRT (libcmt[d].lib, libvcruntime[d].lib and libucrt[d].lib) by default. This is done to avoid
# linking in VCRUNTIME140.DLL for a simplified xcopy experience by reducing the dependency on VC REDIST.
@@ -665,6 +682,13 @@ if (CLR_CMAKE_HOST_WIN32)
endif()
else (CLR_CMAKE_HOST_WIN32)
+ # This is a workaround for upstream issue: https://gitlab.kitware.com/cmake/cmake/-/issues/22995.
+ #
+ # In Clang.cmake, the decision to use single or double hyphen for target and gcc-toolchain
+ # is made based on CMAKE_${LANG}_COMPILER_VERSION, but CMAKE_ASM_COMPILER_VERSION is empty
+ # so it picks up single hyphen options, which new clang versions don't recognize.
+ set (CMAKE_ASM_COMPILER_VERSION "${CMAKE_C_COMPILER_VERSION}")
+
enable_language(ASM)
endif(CLR_CMAKE_HOST_WIN32)
diff --git a/eng/native/configureplatform.cmake b/eng/native/configureplatform.cmake
index 5194317720045f..99556d80c052f9 100644
--- a/eng/native/configureplatform.cmake
+++ b/eng/native/configureplatform.cmake
@@ -2,7 +2,7 @@ include(${CMAKE_CURRENT_LIST_DIR}/functions.cmake)
# If set, indicates that this is not an officially supported release
# Keep in sync with IsPrerelease in Directory.Build.props
-set(PRERELEASE 1)
+set(PRERELEASE 0)
#----------------------------------------
# Detect and set platform variable names
@@ -36,7 +36,7 @@ if(CLR_CMAKE_HOST_OS STREQUAL Linux)
# "amd64" string. Accept either of the two here.
if(CMAKE_SYSTEM_PROCESSOR STREQUAL x86_64 OR CMAKE_SYSTEM_PROCESSOR STREQUAL amd64)
set(CLR_CMAKE_HOST_UNIX_AMD64 1)
- elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL armv7l)
+ elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL armv7l OR CMAKE_SYSTEM_PROCESSOR STREQUAL armv8l)
set(CLR_CMAKE_HOST_UNIX_ARM 1)
set(CLR_CMAKE_HOST_UNIX_ARMV7L 1)
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL arm OR CMAKE_SYSTEM_PROCESSOR STREQUAL armv7-a)
diff --git a/eng/native/configuretools.cmake b/eng/native/configuretools.cmake
index 136cd67925d0cb..2113153aac0b8c 100644
--- a/eng/native/configuretools.cmake
+++ b/eng/native/configuretools.cmake
@@ -53,7 +53,8 @@ if(NOT WIN32 AND NOT CLR_CMAKE_TARGET_BROWSER)
if(CLR_CMAKE_TARGET_ANDROID)
set(TOOLSET_PREFIX ${ANDROID_TOOLCHAIN_PREFIX})
elseif(CMAKE_CROSSCOMPILING AND NOT DEFINED CLR_CROSS_COMPONENTS_BUILD AND (CMAKE_SYSTEM_PROCESSOR STREQUAL armv7l OR
- CMAKE_SYSTEM_PROCESSOR STREQUAL aarch64 OR CMAKE_SYSTEM_PROCESSOR STREQUAL arm OR CMAKE_SYSTEM_PROCESSOR STREQUAL s390x))
+ CMAKE_SYSTEM_PROCESSOR STREQUAL aarch64 OR CMAKE_SYSTEM_PROCESSOR STREQUAL arm OR CMAKE_SYSTEM_PROCESSOR STREQUAL s390x OR
+ CMAKE_SYSTEM_PROCESSOR STREQUAL armv8l))
set(TOOLSET_PREFIX "${TOOLCHAIN}-")
else()
set(TOOLSET_PREFIX "")
diff --git a/eng/native/functions.cmake b/eng/native/functions.cmake
index 0d03cc3d2d46eb..2b97b1f0fa46f3 100644
--- a/eng/native/functions.cmake
+++ b/eng/native/functions.cmake
@@ -89,6 +89,10 @@ function(find_unwind_libs UnwindLibs)
find_library(UNWIND_ARCH NAMES unwind-x86_64)
endif()
+ if(CLR_CMAKE_HOST_ARCH_S390X)
+ find_library(UNWIND_ARCH NAMES unwind-s390x)
+ endif()
+
if(NOT UNWIND_ARCH STREQUAL UNWIND_ARCH-NOTFOUND)
set(UNWIND_LIBS ${UNWIND_ARCH})
endif()
@@ -114,7 +118,8 @@ endfunction(find_unwind_libs)
function(convert_to_absolute_path RetSources)
set(Sources ${ARGN})
foreach(Source IN LISTS Sources)
- list(APPEND AbsolutePathSources ${CMAKE_CURRENT_SOURCE_DIR}/${Source})
+ get_filename_component(AbsolutePathSource ${Source} ABSOLUTE BASE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
+ list(APPEND AbsolutePathSources ${AbsolutePathSource})
endforeach()
set(${RetSources} ${AbsolutePathSources} PARENT_SCOPE)
endfunction(convert_to_absolute_path)
@@ -311,11 +316,21 @@ function(strip_symbols targetName outputFilename)
set(strip_command)
endif ()
+ execute_process(
+ COMMAND ${DSYMUTIL} --help
+ OUTPUT_VARIABLE DSYMUTIL_HELP_OUTPUT
+ )
+
+ set(DSYMUTIL_OPTS "--flat")
+ if ("${DSYMUTIL_HELP_OUTPUT}" MATCHES "--minimize")
+ list(APPEND DSYMUTIL_OPTS "--minimize")
+ endif ()
+
add_custom_command(
TARGET ${targetName}
POST_BUILD
VERBATIM
- COMMAND ${DSYMUTIL} --flat --minimize ${strip_source_file}
+ COMMAND ${DSYMUTIL} ${DSYMUTIL_OPTS} ${strip_source_file}
COMMAND ${strip_command}
COMMENT "Stripping symbols from ${strip_source_file} into file ${strip_destination_file}"
)
diff --git a/eng/native/init-compiler.sh b/eng/native/init-compiler.sh
index 567d18da4747a1..04761fe1b482f9 100755
--- a/eng/native/init-compiler.sh
+++ b/eng/native/init-compiler.sh
@@ -46,8 +46,8 @@ if [[ -z "$CLR_CC" ]]; then
# Set default versions
if [[ -z "$majorVersion" ]]; then
# note: gcc (all versions) and clang versions higher than 6 do not have minor version in file name, if it is zero.
- if [[ "$compiler" == "clang" ]]; then versions=( 11 10 9 8 7 6.0 5.0 4.0 3.9 3.8 3.7 3.6 3.5 )
- elif [[ "$compiler" == "gcc" ]]; then versions=( 11 10 9 8 7 6 5 4.9 ); fi
+ if [[ "$compiler" == "clang" ]]; then versions=( 18 17 16 15 14 13 12 11 10 9 8 7 6.0 5.0 4.0 3.9 3.8 3.7 3.6 3.5 )
+ elif [[ "$compiler" == "gcc" ]]; then versions=( 12 11 10 9 8 7 6 5 4.9 ); fi
for version in "${versions[@]}"; do
parts=(${version//./ })
diff --git a/eng/native/init-distro-rid.sh b/eng/native/init-distro-rid.sh
index f71aa8640b1606..24d548993268ed 100644
--- a/eng/native/init-distro-rid.sh
+++ b/eng/native/init-distro-rid.sh
@@ -41,7 +41,7 @@ initNonPortableDistroRid()
# We have forced __PortableBuild=0. This is because -portablebuld
# has been passed as false.
if (( isPortable == 0 )); then
- if [ "${ID}" = "rhel" ]; then
+ if [[ "${ID}" == "rhel" || "${ID}" == "rocky" || "${ID}" == "alpine" ]]; then
# remove the last version digit
VERSION_ID="${VERSION_ID%.*}"
fi
diff --git a/eng/native/init-os-and-arch.sh b/eng/native/init-os-and-arch.sh
index fc4078fa3a9aa4..9ba5b3c227adf1 100644
--- a/eng/native/init-os-and-arch.sh
+++ b/eng/native/init-os-and-arch.sh
@@ -41,7 +41,7 @@ case "$CPUName" in
arch=x64
;;
- armv7l)
+ armv7l|armv8l)
if (NAME=""; . /etc/os-release; test "$NAME" = "Tizen"); then
arch=armel
else
diff --git a/eng/packaging.targets b/eng/packaging.targets
index f450f05adc55c9..77f0805b438f01 100644
--- a/eng/packaging.targets
+++ b/eng/packaging.targets
@@ -1,18 +1,17 @@
- true
true
- $([MSBuild]::Subtract($(MajorVersion), 1)).0.0
+ 6.0.0
- AddNETStandardCompatErrorFileForPackaging;IncludeAnalyzersInPackage;$(PackDependsOn)
- AddNETStandardCompatErrorFileForPackaging;IncludeAnalyzersInPackage;$(BeforePack)
+ BeforePack must be used. Setting both to ensure that we are always running before other targets. -->
+ IncludeAnalyzersInPackage;AddNETStandardCompatErrorFileForPackaging;$(PackDependsOn)
+ IncludeAnalyzersInPackage;AddNETStandardCompatErrorFileForPackaging;$(BeforePack)
$(PackageOutputPath)
$(TargetsForTfmSpecificContentInPackage);AddRuntimeSpecificFilesToPackage;IncludePrivateProjectReferencesWithPackAttributeInPackage
$(TargetsForTfmSpecificDebugSymbolsInPackage);AddRuntimeSpecificSymbolToPackage
- false
+ false
true
$(MSBuildThisFileDirectory)useSharedDesignerContext.txt
@@ -24,23 +23,40 @@
'$(IsRIDSpecificProject)' == 'true') and
'$(PreReleaseVersionLabel)' != 'servicing' and
'$(GitHubRepositoryName)' != 'runtimelab'">true
+ false
+
+ true
- $(XmlDocFileRoot)1033\$(AssemblyName).xml
+ $([MSBuild]::NormalizePath('$(XmlDocFileRoot)', 'net', '1033', '$(AssemblyName).xml'))
+ $(IntellisenseNetFile)
+ $([MSBuild]::NormalizePath('$(XmlDocFileRoot)', 'dotnet-plat-ext', '1033', '$(AssemblyName).xml'))
+ $(IntellisenseDotNetPlatExtFile)
true
-
+
+
+ 0
+
- $(MajorVersion).$(MinorVersion).$(ServicingVersion)
+ $(MajorVersion).$(MinorVersion).$(ServicingVersion)
+ $(Version)-$(VersionSuffix)
<_IsWindowsDesktopApp Condition="$(WindowsDesktopCoreAppLibrary.Contains('$(AssemblyName);'))">true
<_IsAspNetCoreApp Condition="$(AspNetCoreAppLibrary.Contains('$(AssemblyName);'))">true
- <_AssemblyInTargetingPack Condition="'$(IsNETCoreAppSrc)' == 'true' or '$(_IsAspNetCoreApp)' == 'true' or '$(_IsWindowsDesktopApp)' == 'true'">true
-
- $(MajorVersion).$(MinorVersion).0.$(ServicingVersion)
+ <_AssemblyInTargetingPack Condition="('$(IsNETCoreAppSrc)' == 'true' or '$(IsNetCoreAppRef)' == 'true' or '$(_IsAspNetCoreApp)' == 'true' or '$(_IsWindowsDesktopApp)' == 'true') and '$(TargetFrameworkIdentifier)' != '.NETFramework'">true
+
+ $(MajorVersion).$(MinorVersion).0.$(ServicingVersion)
-
+
@@ -150,6 +166,40 @@
+
+ <_MultiTargetRoslynComponentTargetsTemplate>$(MSBuildThisFileDirectory)MultiTargetRoslynComponent.targets.template
+ $(IntermediateOutputPath)MultiTargetRoslynComponent.targets
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+ <_MultiTargetRoslynComponentTargetPrefix>$(PackageId.Replace('.', '_'))
+ <_MultiTargetRoslynComponentDisableSourceGeneratorPropertyName>Disable$(PackageId.Replace('.', ''))SourceGenerator
+ <_MultiTargetRoslynComponentDisableSourceGeneratorPropertyName>$(_MultiTargetRoslynComponentDisableSourceGeneratorPropertyName.Replace('Abstractions', ''))
+
+
+
+
+
@@ -176,6 +226,7 @@
]]>
+ <_NETStandardCompatErrorPlaceholderFilePackagePath>buildTransitive$([System.IO.Path]::DirectorySeparatorChar)%(NETStandardCompatError.Supported)
+ <_PackageBuildFile Include="@(None->Metadata('PackagePath'));
+ @(Content->Metadata('PackagePath'))" />
+ <_PackageBuildFile PackagePathWithoutFilename="$([System.IO.Path]::GetDirectoryName('%(Identity)'))" />
+
+
+ PackagePath="$(_NETStandardCompatErrorPlaceholderFilePackagePath)\"
+ Pack="true"
+ Condition="'@(_PackageBuildFile)' == '' or
+ !@(_PackageBuildFile->AnyHaveMetadataValue('PackagePathWithoutFilename', '$(_NETStandardCompatErrorPlaceholderFilePackagePath)'))" />
@@ -221,4 +279,16 @@
+
+
+
+
+
+
+
+
diff --git a/eng/pipelines/common/global-build-job.yml b/eng/pipelines/common/global-build-job.yml
index 84f1786bd2171d..56fa7022289fc9 100644
--- a/eng/pipelines/common/global-build-job.yml
+++ b/eng/pipelines/common/global-build-job.yml
@@ -14,7 +14,6 @@ parameters:
dependsOn: []
pool: ''
platform: ''
- pgoType: ''
condition: true
useContinueOnErrorDuringBuild: false
shouldContinueOnError: false
@@ -26,8 +25,7 @@ parameters:
helixQueues: ''
enablePublishTestResults: false
testResultsFormat: ''
- extraStepsTemplate: ''
- extraStepsParameters: {}
+ postBuildSteps: []
enableRichCodeNavigation: false
richCodeNavigationLanguage: 'csharp'
richCodeNavigationEnvironment: 'production'
@@ -60,6 +58,10 @@ jobs:
- ${{ parameters.dependsOn }}
variables:
+ - ${{ if eq(variables['System.TeamProject'], 'internal') }}:
+ - group: DotNet-HelixApi-Access
+ - group: AzureDevOps-Artifact-Feeds-Pats
+
- name: _osParameter
value: -os ${{ parameters.osGroup }}
@@ -113,14 +115,43 @@ jobs:
- ${{ if eq(parameters.isOfficialBuild, true) }}:
- template: /eng/pipelines/common/restore-internal-tools.yml
+ # Do not set up nuget sources for source build because the source build scripts already do this.
+ # This will cause the working tree to be dirty, which breaks the stash command when shallow clones are used, like in CI or official builds.
+ - ${{ if and(ne(variables['System.TeamProject'], 'public'), ne(parameters.buildingOnSourceBuildImage, true)) }}:
+ - ${{ if ne(parameters.osGroup, 'windows') }}:
+ - task: Bash@3
+ displayName: Setup Private Feeds Credentials
+ inputs:
+ filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.sh
+ arguments: $(Build.SourcesDirectory)/NuGet.config $Token
+ env:
+ Token: $(dn-bot-dnceng-artifact-feeds-rw)
+ - ${{ if eq(parameters.osGroup, 'windows') }}:
+ - task: PowerShell@2
+ displayName: Setup Private Feeds Credentials
+ inputs:
+ filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.ps1
+ arguments: -ConfigFile $(Build.SourcesDirectory)/NuGet.config -Password $Env:Token
+ env:
+ Token: $(dn-bot-dnceng-artifact-feeds-rw)
+
- ${{ each monoCrossAOTTargetOS in parameters.monoCrossAOTTargetOS }}:
- task: DownloadPipelineArtifact@2
displayName: Download ${{monoCrossAOTTargetOS}} AOT offset files
inputs:
artifact: Mono_Offsets_${{monoCrossAOTTargetOS}}
path: '$(Build.SourcesDirectory)/artifacts/obj/mono/offsetfiles'
+
+ - ${{ if eq(parameters.buildingOnSourceBuildImage, true) }}:
+ - template: /eng/common/templates/steps/source-build.yml
+ parameters:
+ platform:
+ buildScript: $(_sclEnableCommand) $(Build.SourcesDirectory)$(dir)build$(scriptExt)
+ nonPortable: true
+ targetRID: banana.24-x64
+ runtimeOS: linux
- - ${{ if in(parameters.osGroup, 'OSX', 'iOS', 'tvOS', 'MacCatalyst') }}:
+ - ${{ if in(parameters.osGroup, 'OSX', 'MacCatalyst', 'iOS', 'iOSSimulator', 'tvOS', 'tvOSSimulator') }}:
- script: $(Build.SourcesDirectory)/eng/install-native-dependencies.sh ${{ parameters.osGroup }} ${{ parameters.archType }} azDO
displayName: Install Build Dependencies
@@ -140,10 +171,11 @@ jobs:
displayName: Install native dependencies
# Build
- - script: $(_sclEnableCommand) $(Build.SourcesDirectory)$(dir)build$(scriptExt) -ci -arch ${{ parameters.archType }} $(_osParameter) ${{ parameters.buildArgs }} $(_officialBuildParameter) $(_crossBuildPropertyArg) $(_cxx11Parameter) $(_richCodeNavigationParam) $(_buildDarwinFrameworksParameter)
- displayName: Build product
- ${{ if eq(parameters.useContinueOnErrorDuringBuild, true) }}:
- continueOnError: ${{ parameters.shouldContinueOnError }}
+ - ${{ if eq(parameters.buildingOnSourceBuildImage, false) }}:
+ - script: $(_sclEnableCommand) $(Build.SourcesDirectory)$(dir)build$(scriptExt) -ci -arch ${{ parameters.archType }} $(_osParameter) ${{ parameters.buildArgs }} $(_officialBuildParameter) $(_crossBuildPropertyArg) $(_cxx11Parameter) $(_richCodeNavigationParam) $(_buildDarwinFrameworksParameter)
+ displayName: Build product
+ ${{ if eq(parameters.useContinueOnErrorDuringBuild, true) }}:
+ continueOnError: ${{ parameters.shouldContinueOnError }}
- ${{ if in(parameters.osGroup, 'OSX', 'iOS', 'tvOS', 'Android') }}:
- script: |
@@ -153,22 +185,29 @@ jobs:
condition: always()
# If intended to send extra steps after regular build add them here.
- - ${{ if ne(parameters.extraStepsTemplate, '') }}:
- - template: ${{ parameters.extraStepsTemplate }}
- parameters:
- osGroup: ${{ parameters.osGroup }}
- osSubgroup: ${{ parameters.osSubgroup }}
- archType: ${{ parameters.archType }}
- buildConfig: ${{ parameters.buildConfig }}
- runtimeFlavor: ${{ parameters.runtimeFlavor }}
- runtimeVariant: ${{ parameters.runtimeVariant }}
- helixQueues: ${{ parameters.helixQueues }}
- targetRid: ${{ parameters.targetRid }}
- nameSuffix: ${{ parameters.nameSuffix }}
- platform: ${{ parameters.platform }}
- pgoType: ${{ parameters.pgoType }}
- shouldContinueOnError: ${{ parameters.shouldContinueOnError }}
- ${{ insert }}: ${{ parameters.extraStepsParameters }}
+ - ${{ if ne(parameters.postBuildSteps,'') }}:
+ - ${{ each postBuildStep in parameters.postBuildSteps }}:
+ - ${{ if ne(postBuildStep.template, '') }}:
+ - template: ${{ postBuildStep.template }}
+ parameters:
+ osGroup: ${{ parameters.osGroup }}
+ osSubgroup: ${{ parameters.osSubgroup }}
+ archType: ${{ parameters.archType }}
+ buildConfig: ${{ parameters.buildConfig }}
+ runtimeFlavor: ${{ parameters.runtimeFlavor }}
+ runtimeVariant: ${{ parameters.runtimeVariant }}
+ helixQueues: ${{ parameters.helixQueues }}
+ targetRid: ${{ parameters.targetRid }}
+ nameSuffix: ${{ parameters.nameSuffix }}
+ platform: ${{ parameters.platform }}
+ shouldContinueOnError: ${{ parameters.shouldContinueOnError }}
+ ${{ if ne(postBuildStep.forwardedParameters, '') }}:
+ ${{ each parameter in postBuildStep.forwardedParameters }}:
+ ${{ parameter }}: ${{ parameters[parameter] }}
+ ${{ if ne(postBuildStep.parameters, '') }}:
+ ${{ insert }}: ${{ postBuildStep.parameters }}
+ - ${{ else }}:
+ - ${{ postBuildStep }}
- task: PublishBuildArtifacts@1
displayName: Publish Logs
diff --git a/eng/pipelines/common/platform-matrix.yml b/eng/pipelines/common/platform-matrix.yml
index 15fe948e92967e..fbc12a81b5abc6 100644
--- a/eng/pipelines/common/platform-matrix.yml
+++ b/eng/pipelines/common/platform-matrix.yml
@@ -91,7 +91,7 @@ jobs:
targetRid: linux-musl-x64
platform: Linux_musl_x64
container:
- image: alpine-3.9-WithNode-20210714125437-9b5bbc2
+ image: alpine-3.13-WithNode-20210910135845-c401c85
registry: mcr
jobParameters:
runtimeFlavor: ${{ parameters.runtimeFlavor }}
@@ -205,6 +205,32 @@ jobs:
${{ insert }}: ${{ parameters.jobParameters }}
buildingOnSourceBuildImage: true
+# Linux s390x
+
+- ${{ if containsValue(parameters.platforms, 'Linux_s390x') }}:
+ - template: xplat-setup.yml
+ parameters:
+ jobTemplate: ${{ parameters.jobTemplate }}
+ helixQueuesTemplate: ${{ parameters.helixQueuesTemplate }}
+ variables: ${{ parameters.variables }}
+ osGroup: Linux
+ archType: s390x
+ targetRid: linux-s390x
+ platform: Linux_s390x
+ container:
+ image: ubuntu-18.04-cross-s390x-20201102145728-d6e0352
+ registry: mcr
+ jobParameters:
+ runtimeFlavor: ${{ parameters.runtimeFlavor }}
+ stagedBuild: ${{ parameters.stagedBuild }}
+ buildConfig: ${{ parameters.buildConfig }}
+ ${{ if eq(parameters.passPlatforms, true) }}:
+ platforms: ${{ parameters.platforms }}
+ helixQueueGroup: ${{ parameters.helixQueueGroup }}
+ crossBuild: true
+ crossrootfsDir: '/crossrootfs/s390x'
+ ${{ insert }}: ${{ parameters.jobParameters }}
+
# WebAssembly
- ${{ if containsValue(parameters.platforms, 'Browser_wasm') }}:
diff --git a/eng/pipelines/common/restore-internal-tools.yml b/eng/pipelines/common/restore-internal-tools.yml
index d289d82b53505c..fdec41da53da55 100644
--- a/eng/pipelines/common/restore-internal-tools.yml
+++ b/eng/pipelines/common/restore-internal-tools.yml
@@ -1,7 +1,7 @@
steps:
- - task: NuGetAuthenticate@0
+ - task: NuGetAuthenticate@1
inputs:
- nuGetServiceConnections: 'dotnet-core-internal-tooling'
+ nuGetServiceConnections: 'devdiv/dotnet-core-internal-tooling'
forceReinstallCredentialProvider: true
- script: $(Build.SourcesDirectory)$(dir)build$(scriptExt)
diff --git a/eng/pipelines/common/templates/runtimes/build-test-job.yml b/eng/pipelines/common/templates/runtimes/build-test-job.yml
index b2252563496cc1..b04cc92688c17f 100644
--- a/eng/pipelines/common/templates/runtimes/build-test-job.yml
+++ b/eng/pipelines/common/templates/runtimes/build-test-job.yml
@@ -23,7 +23,6 @@ parameters:
runtimeVariant: ''
dependsOn: []
dependOnEvaluatePaths: false
- pgoType: ''
### Build managed test components (native components are getting built as part
### of the the product build job).
@@ -108,7 +107,7 @@ jobs:
steps:
# Install test build dependencies
- - ${{ if eq(parameters.osGroup, 'OSX') }}:
+ - ${{ if in(parameters.osGroup, 'OSX', 'MacCatalyst', 'iOS', 'iOSSimulator', 'tvOS', 'tvOSSimulator') }}:
- script: $(Build.SourcesDirectory)/eng/install-native-dependencies.sh $(osGroup) ${{ parameters.archType }} azDO
displayName: Install native dependencies
- ${{ if eq(parameters.osGroup, 'windows') }}:
diff --git a/eng/pipelines/common/variables.yml b/eng/pipelines/common/variables.yml
index 760543475a7519..f302f02a38c8db 100644
--- a/eng/pipelines/common/variables.yml
+++ b/eng/pipelines/common/variables.yml
@@ -1,12 +1,23 @@
variables:
+
+# These values enable longer delays, configurable number of retries, and special understanding of TCP hang-up
+# See https://github.com/NuGet/Home/issues/11027 for details
+- name: NUGET_ENABLE_EXPERIMENTAL_HTTP_RETRY
+ value: true
+- name: NUGET_EXPERIMENTAL_MAX_NETWORK_TRY_COUNT
+ value: 6
+- name: NUGET_EXPERIMENTAL_NETWORK_RETRY_DELAY_MILLISECONDS
+ value: 1000
+
- name: isOfficialBuild
- value: ${{ and(ne(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest')) }}
+ value: ${{ and(eq(variables['Build.DefinitionName'], 'dotnet-runtime-official'), eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}
- name: isFullMatrix
- value: ${{ and(eq(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest')) }}
+ value: ${{ ne(variables['Build.Reason'], 'PullRequest') }}
-# We only run evaluate paths on runtime and runtime-staging pipelines on PRs
+# We only run evaluate paths on runtime, runtime-staging and runtime-community pipelines on PRs
+# keep in sync with /eng/pipelines/common/xplat-setup.yml
- name: dependOnEvaluatePaths
- value: ${{ and(eq(variables['Build.Reason'], 'PullRequest'), in(variables['Build.DefinitionName'], 'runtime', 'runtime-staging')) }}
+ value: ${{ and(eq(variables['Build.Reason'], 'PullRequest'), in(variables['Build.DefinitionName'], 'runtime', 'runtime-staging', 'runtime-community')) }}
- name: debugOnPrReleaseOnRolling
${{ if ne(variables['Build.Reason'], 'PullRequest') }}:
value: Release
diff --git a/eng/pipelines/common/xplat-setup.yml b/eng/pipelines/common/xplat-setup.yml
index 74441b1168913b..58338384ec8496 100644
--- a/eng/pipelines/common/xplat-setup.yml
+++ b/eng/pipelines/common/xplat-setup.yml
@@ -22,7 +22,7 @@ jobs:
shouldContinueOnError: ${{ and(endsWith(variables['Build.DefinitionName'], 'staging'), eq(variables['Build.Reason'], 'PullRequest')) }}
# keep in sync with /eng/pipelines/common/variables.yml
- dependOnEvaluatePaths: ${{ and(eq(variables['Build.Reason'], 'PullRequest'), in(variables['Build.DefinitionName'], 'runtime', 'runtime-staging')) }}
+ dependOnEvaluatePaths: ${{ and(eq(variables['Build.Reason'], 'PullRequest'), in(variables['Build.DefinitionName'], 'runtime', 'runtime-staging', 'runtime-community')) }}
variables:
# Disable component governance in our CI builds. These builds are not shipping nor
@@ -111,27 +111,27 @@ jobs:
pool:
# Public Linux Build Pool
${{ if and(or(in(parameters.osGroup, 'Linux', 'FreeBSD', 'Android'), eq(parameters.hostedOs, 'Linux')), eq(variables['System.TeamProject'], 'public')) }}:
- name: NetCorePublic-Pool
- queue: BuildPool.Ubuntu.1804.Amd64.Open
+ name: NetCore-Svc-Public
+ demands: ImageOverride -equals Build.Ubuntu.1804.Amd64.Open
# Official Build Linux Pool
${{ if and(or(in(parameters.osGroup, 'Linux', 'FreeBSD', 'Browser', 'Android'), eq(parameters.hostedOs, 'Linux')), ne(variables['System.TeamProject'], 'public')) }}:
- name: NetCoreInternal-Pool
- queue: BuildPool.Ubuntu.1804.Amd64
+ name: NetCore1ESPool-Svc-Internal
+ demands: ImageOverride -equals Build.Ubuntu.1804.Amd64
# OSX Build Pool (we don't have on-prem OSX BuildPool
${{ if in(parameters.osGroup, 'OSX', 'MacCatalyst', 'iOS', 'iOSSimulator', 'tvOS', 'tvOSSimulator') }}:
- vmImage: 'macOS-10.15'
+ vmImage: 'macOS-11'
# Official Build Windows Pool
${{ if and(eq(parameters.osGroup, 'windows'), ne(variables['System.TeamProject'], 'public')) }}:
- name: NetCoreInternal-Pool
- queue: BuildPool.Windows.10.Amd64.VS2019
+ name: NetCore1ESPool-Svc-Internal
+ demands: ImageOverride -equals windows.vs2019.amd64
# Public Windows Build Pool
${{ if and(or(eq(parameters.osGroup, 'windows'), eq(parameters.hostedOs, 'windows')), eq(variables['System.TeamProject'], 'public')) }}:
- name: NetCorePublic-Pool
- queue: BuildPool.Windows.10.Amd64.VS2019.Open
+ name: NetCore-Svc-Public
+ demands: ImageOverride -equals windows.vs2019.amd64.open
${{ if eq(parameters.helixQueuesTemplate, '') }}:
diff --git a/eng/pipelines/coreclr/ci.yml b/eng/pipelines/coreclr/ci.yml
index c4cbf06a14bde6..282d83d4030e54 100644
--- a/eng/pipelines/coreclr/ci.yml
+++ b/eng/pipelines/coreclr/ci.yml
@@ -150,13 +150,3 @@ jobs:
crossgen2: true
displayNameArgs: R2R_CG2
liveLibrariesBuildConfig: Release
-
-#
-# Formatting
-#
-- template: /eng/pipelines/common/platform-matrix.yml
- parameters:
- jobTemplate: /eng/pipelines/coreclr/templates/format-job.yml
- platforms:
- - Linux_x64
- - windows_x64
diff --git a/eng/pipelines/coreclr/perf.yml b/eng/pipelines/coreclr/perf.yml
index 5726e5ac7c0de6..02a3057996fa45 100644
--- a/eng/pipelines/coreclr/perf.yml
+++ b/eng/pipelines/coreclr/perf.yml
@@ -3,7 +3,7 @@ trigger:
branches:
include:
- main
- - release/*
+ - release/6.0
paths:
include:
- '*'
@@ -65,14 +65,15 @@ jobs:
buildArgs: -s mono+libs+host+packs -c $(_BuildConfig)
nameSuffix: wasm
isOfficialBuild: false
- extraStepsTemplate: /eng/pipelines/common/upload-artifact-step.yml
- extraStepsParameters:
- rootFolder: '$(Build.SourcesDirectory)/artifacts/'
- includeRootFolder: true
- displayName: Browser Wasm Artifacts
- artifactName: BrowserWasm
- archiveType: zip
- archiveExtension: .zip
+ postBuildSteps:
+ - template: /eng/pipelines/common/upload-artifact-step.yml
+ parameters:
+ rootFolder: '$(Build.SourcesDirectory)/artifacts/'
+ includeRootFolder: true
+ displayName: Browser Wasm Artifacts
+ artifactName: BrowserWasm
+ archiveType: zip
+ archiveExtension: .zip
#run mono wasm microbenchmarks perf job
- template: /eng/pipelines/common/platform-matrix.yml
@@ -139,14 +140,15 @@ jobs:
buildArgs: -s mono+libs+host+packs -c $(_BuildConfig)
nameSuffix: wasm
isOfficialBuild: false
- extraStepsTemplate: /eng/pipelines/common/upload-artifact-step.yml
- extraStepsParameters:
- rootFolder: '$(Build.SourcesDirectory)/artifacts/'
- includeRootFolder: true
- displayName: Browser Wasm Artifacts
- artifactName: BrowserWasm
- archiveType: zip
- archiveExtension: .zip
+ postBuildSteps:
+ - template: /eng/pipelines/common/upload-artifact-step.yml
+ parameters:
+ rootFolder: '$(Build.SourcesDirectory)/artifacts/'
+ includeRootFolder: true
+ displayName: Browser Wasm Artifacts
+ artifactName: BrowserWasm
+ archiveType: zip
+ archiveExtension: .zip
# build mono for AOT
- template: /eng/pipelines/common/platform-matrix.yml
@@ -160,15 +162,16 @@ jobs:
buildArgs: -s mono+libs+host+packs -c $(_BuildConfig)
nameSuffix: AOT
isOfficialBuild: false
- extraStepsTemplate: /eng/pipelines/common/upload-artifact-step.yml
- extraStepsParameters:
- rootFolder: '$(Build.SourcesDirectory)/artifacts/'
- includeRootFolder: true
- displayName: AOT Mono Artifacts
- artifactName: LinuxMonoAOTx64
- archiveExtension: '.tar.gz'
- archiveType: tar
- tarCompression: gz
+ postBuildSteps:
+ - template: /eng/pipelines/common/upload-artifact-step.yml
+ parameters:
+ rootFolder: '$(Build.SourcesDirectory)/artifacts/'
+ includeRootFolder: true
+ displayName: AOT Mono Artifacts
+ artifactName: LinuxMonoAOTx64
+ archiveExtension: '.tar.gz'
+ archiveType: tar
+ tarCompression: gz
# build mono Android scenarios
- template: /eng/pipelines/common/platform-matrix.yml
@@ -182,15 +185,16 @@ jobs:
buildArgs: -s mono+libs+host+packs -c $(_BuildConfig)
nameSuffix: AndroidMono
isOfficialBuild: false
- extraStepsTemplate: /eng/pipelines/coreclr/templates/build-perf-sample-apps.yml
- extraStepsParameters:
- rootFolder: '$(Build.SourcesDirectory)/artifacts/'
- includeRootFolder: true
- displayName: Android Mono Artifacts
- artifactName: AndroidMonoarm64
- archiveExtension: '.tar.gz'
- archiveType: tar
- tarCompression: gz
+ postBuildSteps:
+ - template: /eng/pipelines/coreclr/templates/build-perf-sample-apps.yml
+ parameters:
+ rootFolder: '$(Build.SourcesDirectory)/artifacts/'
+ includeRootFolder: true
+ displayName: Android Mono Artifacts
+ artifactName: AndroidMonoarm64
+ archiveExtension: '.tar.gz'
+ archiveType: tar
+ tarCompression: gz
# build mono iOS scenarios
- template: /eng/pipelines/common/platform-matrix.yml
@@ -204,15 +208,16 @@ jobs:
buildArgs: -s mono+libs+host+packs -c $(_BuildConfig)
nameSuffix: iOSMono
isOfficialBuild: false
- extraStepsTemplate: /eng/pipelines/coreclr/templates/build-perf-sample-apps.yml
- extraStepsParameters:
- rootFolder: '$(Build.SourcesDirectory)/artifacts/'
- includeRootFolder: true
- displayName: iOS Mono Artifacts
- artifactName: iOSMonoarm64
- archiveExtension: '.tar.gz'
- archiveType: tar
- tarCompression: gz
+ postBuildSteps:
+ - template: /eng/pipelines/coreclr/templates/build-perf-sample-apps.yml
+ parameters:
+ rootFolder: '$(Build.SourcesDirectory)/artifacts/'
+ includeRootFolder: true
+ displayName: iOS Mono Artifacts
+ artifactName: iOSMonoarm64
+ archiveExtension: '.tar.gz'
+ archiveType: tar
+ tarCompression: gz
# build mono
- template: /eng/pipelines/common/platform-matrix.yml
@@ -464,7 +469,7 @@ jobs:
projectFile: crossgen_perf.proj
runKind: crossgen_scenarios
runJobTemplate: /eng/pipelines/coreclr/templates/run-scenarios-job.yml
- logicalmachine: 'perftiger'
+ logicalmachine: 'perftiger_crossgen'
# run mono wasm blazor perf job
- template: /eng/pipelines/common/platform-matrix.yml
diff --git a/eng/pipelines/coreclr/perf_slow.yml b/eng/pipelines/coreclr/perf_slow.yml
index 1ad80465846984..ab85e0a2458cdc 100644
--- a/eng/pipelines/coreclr/perf_slow.yml
+++ b/eng/pipelines/coreclr/perf_slow.yml
@@ -1,23 +1,4 @@
-trigger:
- batch: true
- branches:
- include:
- - main
- - release/*
- paths:
- include:
- - '*'
- - src/libraries/System.Private.CoreLib/*
- exclude:
- - .github/*
- - docs/*
- - CODE-OF-CONDUCT.md
- - CONTRIBUTING.md
- - LICENSE.TXT
- - PATENTS.TXT
- - README.md
- - SECURITY.md
- - THIRD-PARTY-NOTICES.TXT
+trigger: none
variables:
- template: /eng/pipelines/common/variables.yml
@@ -83,14 +64,15 @@ jobs:
buildArgs: -s mono+libs+host+packs -c $(_BuildConfig)
nameSuffix: wasm
isOfficialBuild: false
- extraStepsTemplate: /eng/pipelines/common/upload-artifact-step.yml
- extraStepsParameters:
- rootFolder: '$(Build.SourcesDirectory)/artifacts/'
- includeRootFolder: true
- displayName: Browser Wasm Artifacts
- artifactName: BrowserWasm
- archiveType: zip
- archiveExtension: .zip
+ postBuildSteps:
+ - template: /eng/pipelines/common/upload-artifact-step.yml
+ parameters:
+ rootFolder: '$(Build.SourcesDirectory)/artifacts/'
+ includeRootFolder: true
+ displayName: Browser Wasm Artifacts
+ artifactName: BrowserWasm
+ archiveType: zip
+ archiveExtension: .zip
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'Schedule')) }}:
@@ -117,14 +99,15 @@ jobs:
buildArgs: -s mono+libs+host+packs -c $(_BuildConfig)
nameSuffix: wasm
isOfficialBuild: false
- extraStepsTemplate: /eng/pipelines/common/upload-artifact-step.yml
- extraStepsParameters:
- rootFolder: '$(Build.SourcesDirectory)/artifacts/'
- includeRootFolder: true
- displayName: Browser Wasm Artifacts
- artifactName: BrowserWasm
- archiveType: zip
- archiveExtension: .zip
+ postBuildSteps:
+ - template: /eng/pipelines/common/upload-artifact-step.yml
+ parameters:
+ rootFolder: '$(Build.SourcesDirectory)/artifacts/'
+ includeRootFolder: true
+ displayName: Browser Wasm Artifacts
+ artifactName: BrowserWasm
+ archiveType: zip
+ archiveExtension: .zip
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
@@ -137,15 +120,16 @@ jobs:
buildArgs: -s mono+libs+host+packs -c $(_BuildConfig)
nameSuffix: AOT
isOfficialBuild: false
- extraStepsTemplate: /eng/pipelines/common/upload-artifact-step.yml
- extraStepsParameters:
- rootFolder: '$(Build.SourcesDirectory)/artifacts/'
- includeRootFolder: true
- displayName: AOT Mono Artifacts
- artifactName: LinuxMonoAOTarm64
- archiveExtension: '.tar.gz'
- archiveType: tar
- tarCompression: gz
+ postBuildSteps:
+ - template: /eng/pipelines/common/upload-artifact-step.yml
+ parameters:
+ rootFolder: '$(Build.SourcesDirectory)/artifacts/'
+ includeRootFolder: true
+ displayName: AOT Mono Artifacts
+ artifactName: LinuxMonoAOTarm64
+ archiveExtension: '.tar.gz'
+ archiveType: tar
+ tarCompression: gz
# run mono aot microbenchmarks perf job
- template: /eng/pipelines/common/platform-matrix.yml
@@ -195,5 +179,37 @@ jobs:
projectFile: microbenchmarks.proj
runKind: micro
runJobTemplate: /eng/pipelines/coreclr/templates/run-performance-job.yml
- logicalmachine: 'perfsurf'
+ logicalmachine: 'perfsurf'
+
+# Uncomment once we fix https://github.com/dotnet/performance/issues/1950
+# # run coreclr linux crossgen perf job
+# - template: /eng/pipelines/common/platform-matrix.yml
+# parameters:
+# jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml
+# buildConfig: release
+# runtimeFlavor: coreclr
+# platforms:
+# - Linux_arm64
+# jobParameters:
+# testGroup: perf
+# liveLibrariesBuildConfig: Release
+# projectFile: crossgen_perf.proj
+# runKind: crossgen_scenarios
+# runJobTemplate: /eng/pipelines/coreclr/templates/run-scenarios-job.yml
+# logicalmachine: 'perfa64'
+# # run coreclr windows crossgen perf job
+# - template: /eng/pipelines/common/platform-matrix.yml
+# parameters:
+# jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml
+# buildConfig: release
+# runtimeFlavor: coreclr
+# platforms:
+# - windows_arm64
+# jobParameters:
+# testGroup: perf
+# liveLibrariesBuildConfig: Release
+# projectFile: crossgen_perf.proj
+# runKind: crossgen_scenarios
+# runJobTemplate: /eng/pipelines/coreclr/templates/run-scenarios-job.yml
+# logicalmachine: 'perfsurf'
\ No newline at end of file
diff --git a/eng/pipelines/coreclr/templates/build-jit-job.yml b/eng/pipelines/coreclr/templates/build-jit-job.yml
index 5ac3f54679d862..a804944df11953 100644
--- a/eng/pipelines/coreclr/templates/build-jit-job.yml
+++ b/eng/pipelines/coreclr/templates/build-jit-job.yml
@@ -86,7 +86,7 @@ jobs:
# Linux builds use docker images with dependencies preinstalled,
# and FreeBSD builds use a build agent with dependencies
# preinstalled, so we only need this step for OSX and Windows.
- - ${{ if eq(parameters.osGroup, 'OSX') }}:
+ - ${{ if in(parameters.osGroup, 'OSX', 'MacCatalyst', 'iOS', 'iOSSimulator', 'tvOS', 'tvOSSimulator') }}:
- script: $(Build.SourcesDirectory)/eng/install-native-dependencies.sh $(osGroup) ${{ parameters.archType }} azDO
displayName: Install native dependencies (OSX)
- ${{ if eq(parameters.osGroup, 'windows') }}:
diff --git a/eng/pipelines/coreclr/templates/build-job.yml b/eng/pipelines/coreclr/templates/build-job.yml
index e94d630ba2e957..1fe647f427f5c3 100644
--- a/eng/pipelines/coreclr/templates/build-job.yml
+++ b/eng/pipelines/coreclr/templates/build-job.yml
@@ -20,7 +20,6 @@ parameters:
testGroup: ''
timeoutInMinutes: ''
variables: {}
- pgoType: ''
### Product build
jobs:
@@ -38,25 +37,22 @@ jobs:
pool: ${{ parameters.pool }}
condition: ${{ parameters.condition }}
dependOnEvaluatePaths: ${{ parameters.dependOnEvaluatePaths }}
- pgoType: ${{ parameters.pgoType }}
# Compute job name from template parameters
${{ if and(ne(parameters.testGroup, 'clrTools'), eq(parameters.compilerName, 'gcc')) }}:
name: ${{ format('coreclr_{0}_product_build_{1}{1}_{3}_{4}', parameters.compilerName, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
displayName: ${{ format('CoreCLR GCC Product Build {0}{1} {2} {3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
${{ if and(ne(parameters.testGroup, 'clrTools'), ne(parameters.compilerName, 'gcc')) }}:
- name: ${{ format('coreclr_{0}_product_build_{1}{2}_{3}_{4}{5}',
+ name: ${{ format('coreclr_{0}_product_build_{1}{2}_{3}_{4}',
parameters.runtimeVariant,
parameters.osGroup,
parameters.osSubgroup,
parameters.archType,
- parameters.buildConfig,
- parameters.pgoType) }}
- displayName: ${{ format('CoreCLR {0} Product Build {1}{2} {3} {4} {5}',
+ parameters.buildConfig) }}
+ displayName: ${{ format('CoreCLR {0} Product Build {1}{2} {3} {4}',
parameters.runtimeVariant, parameters.osGroup, parameters.osSubgroup,
parameters.archType,
- parameters.buildConfig,
- parameters.pgoType) }}
+ parameters.buildConfig) }}
${{ if eq(parameters.testGroup, 'clrTools') }}:
name: ${{ format('coreclr_{0}_tools_unittests_{1}{2}_{3}_{4}', parameters.runtimeVariant, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
displayName: ${{ format('CoreCLR {0} Tools Unit Tests {1}{2} {3} {4}', parameters.runtimeVariant, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
@@ -108,15 +104,17 @@ jobs:
# Variables used by arcade to gather asset manifests
- name: _DotNetPublishToBlobFeed
value: true
+ - ${{ if eq(variables['System.TeamProject'], 'internal') }}:
+ - group: AzureDevOps-Artifact-Feeds-Pats
- name: officialBuildIdArg
value: ''
- - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}:
+ - ${{ if eq(parameters.isOfficialBuild, true) }}:
- name: officialBuildIdArg
value: '/p:OfficialBuildId=$(Build.BuildNumber)'
- name: enforcePgoArg
value: ''
# The EnforcePGO script is only supported on Windows and is not supported on arm or arm64.
- - ${{ if and(eq(parameters.buildConfig, 'Release'), and(eq(parameters.osGroup, 'windows'), not(or(eq(parameters.archType, 'arm64'), eq(parameters.archType, 'arm')))), ne(parameters.pgoType, 'pgo')) }}:
+ - ${{ if and(eq(parameters.buildConfig, 'Release'), and(eq(parameters.osGroup, 'windows'), not(or(eq(parameters.archType, 'arm64'), eq(parameters.archType, 'arm'))))) }}:
- name: enforcePgoArg
value: '-enforcepgo'
@@ -132,12 +130,6 @@ jobs:
- name: clrBuildPALTestsBuildArg
value: '-component runtime -component alljits -component paltests '
- - name: pgoInstrumentArg
- value: ''
- - ${{ if eq(parameters.pgoType, 'PGO' )}}:
- - name: pgoInstrumentArg
- value: '-pgoinstrument '
-
- name: SignType
value: $[ coalesce(variables.OfficialSignType, 'real') ]
@@ -149,7 +141,7 @@ jobs:
# Linux builds use docker images with dependencies preinstalled,
# and FreeBSD builds use a build agent with dependencies
# preinstalled, so we only need this step for OSX and Windows.
- - ${{ if eq(parameters.osGroup, 'OSX') }}:
+ - ${{ if in(parameters.osGroup, 'OSX', 'MacCatalyst', 'iOS', 'iOSSimulator', 'tvOS', 'tvOSSimulator') }}:
- script: $(Build.SourcesDirectory)/eng/install-native-dependencies.sh $(osGroup) ${{ parameters.archType }} azDO
displayName: Install native dependencies
- ${{ if eq(parameters.osGroup, 'windows') }}:
@@ -175,6 +167,24 @@ jobs:
continueOnError: false
condition: and(succeeded(), in(variables['SignType'], 'real', 'test'))
+ - ${{ if ne(variables['System.TeamProject'], 'public') }}:
+ - ${{ if ne(parameters.osGroup, 'windows') }}:
+ - task: Bash@3
+ displayName: Setup Private Feeds Credentials
+ inputs:
+ filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.sh
+ arguments: $(Build.SourcesDirectory)/NuGet.config $Token
+ env:
+ Token: $(dn-bot-dnceng-artifact-feeds-rw)
+ - ${{ if eq(parameters.osGroup, 'windows') }}:
+ - task: PowerShell@2
+ displayName: Setup Private Feeds Credentials
+ inputs:
+ filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.ps1
+ arguments: -ConfigFile $(Build.SourcesDirectory)/NuGet.config -Password $Env:Token
+ env:
+ Token: $(dn-bot-dnceng-artifact-feeds-rw)
+
- ${{ if in(parameters.osGroup, 'OSX', 'iOS', 'tvOS') }}:
- script: |
du -sh $(Build.SourcesDirectory)/*
@@ -188,10 +198,10 @@ jobs:
# Build CoreCLR Runtime
- ${{ if ne(parameters.osGroup, 'windows') }}:
- - script: $(Build.SourcesDirectory)/src/coreclr/build-runtime$(scriptExt) $(buildConfig) $(archType) $(crossArg) $(osArg) -ci $(compilerArg) $(clrBuildPALTestsBuildArg) $(pgoInstrumentArg) $(officialBuildIdArg) $(clrInterpreterBuildArg)
+ - script: $(Build.SourcesDirectory)/src/coreclr/build-runtime$(scriptExt) $(buildConfig) $(archType) $(crossArg) $(osArg) -ci $(compilerArg) $(clrBuildPALTestsBuildArg) $(officialBuildIdArg) $(clrInterpreterBuildArg)
displayName: Build CoreCLR Runtime
- ${{ if eq(parameters.osGroup, 'windows') }}:
- - script: set __TestIntermediateDir=int&&$(Build.SourcesDirectory)/src/coreclr/build-runtime$(scriptExt) $(buildConfig) $(archType) -ci $(enforcePgoArg) $(pgoInstrumentArg) $(officialBuildIdArg) $(clrInterpreterBuildArg)
+ - script: set __TestIntermediateDir=int&&$(Build.SourcesDirectory)/src/coreclr/build-runtime$(scriptExt) $(buildConfig) $(archType) -ci $(enforcePgoArg) $(officialBuildIdArg) $(clrInterpreterBuildArg)
displayName: Build CoreCLR Runtime
- ${{ if in(parameters.osGroup, 'OSX', 'iOS', 'tvOS') }}:
@@ -201,7 +211,7 @@ jobs:
displayName: Disk Usage after Build
# Build CoreCLR Managed Components
- - script: $(Build.SourcesDirectory)$(dir)build$(scriptExt) -subset clr.corelib+clr.nativecorelib+clr.tools+clr.packages+clr.paltestlist $(crossArg) -arch $(archType) $(osArg) -c $(buildConfig) $(pgoInstrumentArg) $(officialBuildIdArg) -ci
+ - script: $(Build.SourcesDirectory)$(dir)build$(scriptExt) -subset clr.corelib+clr.nativecorelib+clr.tools+clr.packages+clr.paltestlist $(crossArg) -arch $(archType) $(osArg) -c $(buildConfig) $(officialBuildIdArg) -ci
displayName: Build managed product components and packages
# Run CoreCLR Tools unit tests
@@ -238,23 +248,11 @@ jobs:
# Sign diagnostic files on Windows
- ${{ if and(eq(parameters.osGroup, 'windows'), eq(parameters.signBinaries, true)) }}:
- - powershell: >-
- eng\common\build.ps1 -ci -sign -restore -configuration:$(buildConfig) -warnaserror:0 $(officialBuildIdArg)
- /p:DiagnosticsFilesRoot="$(buildProductRootFolderPath)"
- /p:SignDiagnostics=true
- /p:DotNetSignType=$(SignType)
- -noBl
- /bl:$(Build.SourcesDirectory)/artifacts/log/$(buildConfig)/SignDiagnostics.binlog
- -projects $(Build.SourcesDirectory)\eng\empty.csproj
- displayName: Sign Diagnostic Binaries
-
- - task: PublishPipelineArtifact@1
- displayName: Publish Signing Logs
- inputs:
- targetPath: '$(Build.SourcesDirectory)/artifacts/log/'
- artifactName: ${{ format('SignLogs_{0}{1}_{2}_{3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
- continueOnError: true
- condition: always()
+ - template: /eng/pipelines/coreclr/templates/sign-diagnostic-files.yml
+ parameters:
+ basePath: $(buildProductRootFolderPath)
+ isOfficialBuild: ${{ parameters.isOfficialBuild }}
+ timeoutInMinutes: 30
# Builds using gcc are not tested, and clrTools unitests do not publish the build artifacts
- ${{ if and(ne(parameters.compilerName, 'gcc'), ne(parameters.testGroup, 'clrTools')) }}:
@@ -269,16 +267,17 @@ jobs:
artifactName: $(buildProductArtifactName)
displayName: 'product build'
- - ${{ if and(in(parameters.osGroup, 'windows', 'Linux'), ne(parameters.archType, 'x86'), ne(parameters.compilerName, 'gcc'), ne(parameters.testGroup, 'clrTools'), eq(parameters.pgoType, '')) }}:
+ - ${{ if and(in(parameters.osGroup, 'windows', 'Linux'), ne(parameters.archType, 'x86'), ne(parameters.compilerName, 'gcc'), ne(parameters.testGroup, 'clrTools')) }}:
- template: /eng/pipelines/coreclr/templates/crossdac-build.yml
parameters:
archType: ${{ parameters.archType }}
osGroup: ${{ parameters.osGroup }}
osSubgroup: ${{ parameters.osSubgroup }}
+ isOfficialBuild: ${{ parameters.isOfficialBuild }}
- ${{ if and(ne(parameters.compilerName, 'gcc'), ne(parameters.testGroup, ''), ne(parameters.testGroup, 'clrTools')) }}:
# Publish test native components for consumption by test execution.
- - ${{ if and(ne(parameters.isOfficialBuild, true), eq(parameters.pgoType, '')) }}:
+ - ${{ if ne(parameters.isOfficialBuild, true) }}:
- template: /eng/pipelines/common/upload-artifact-step.yml
parameters:
rootFolder: $(nativeTestArtifactRootFolderPath)
@@ -319,6 +318,6 @@ jobs:
displayName: Publish Logs
inputs:
targetPath: $(Build.SourcesDirectory)/artifacts/log
- artifactName: '$(publishLogsArtifactPrefix)${{ parameters.pgoType }}_$(osGroup)$(osSubgroup)_$(archType)_$(buildConfig)'
+ artifactName: '$(publishLogsArtifactPrefix)_$(osGroup)$(osSubgroup)_$(archType)_$(buildConfig)'
continueOnError: true
condition: always()
diff --git a/eng/pipelines/coreclr/templates/build-perf-sample-apps.yml b/eng/pipelines/coreclr/templates/build-perf-sample-apps.yml
index 65b6226093a10f..3d5d83b6dadc88 100644
--- a/eng/pipelines/coreclr/templates/build-perf-sample-apps.yml
+++ b/eng/pipelines/coreclr/templates/build-perf-sample-apps.yml
@@ -24,7 +24,7 @@ steps:
workingDirectory: $(Build.SourcesDirectory)/src/mono/sample/Android
displayName: Build HelloAndroid sample app
- ${{ if eq(parameters.osGroup, 'iOS') }}:
- - script: make build-appbundle TARGET=iOS MONO_ARCH=arm64 MONO_CONFIG=Release AOT=True USE_LLVM=False
+ - script: make build-appbundle TARGET=iOS MONO_ARCH=arm64 MONO_CONFIG=Release AOT=True USE_LLVM=False DEPLOY_AND_RUN=false
env:
DevTeamProvisioning: '-'
workingDirectory: $(Build.SourcesDirectory)/src/mono/sample/iOS
@@ -47,7 +47,7 @@ steps:
- script: rm -r -f $(Build.SourcesDirectory)/src/mono/sample/iOS/bin
workingDirectory: $(Build.SourcesDirectory)/src/mono/sample/iOS
displayName: Clean bindir
- - script: make build-appbundle TARGET=iOS MONO_ARCH=arm64 MONO_CONFIG=Release AOT=True USE_LLVM=True
+ - script: make build-appbundle TARGET=iOS MONO_ARCH=arm64 MONO_CONFIG=Release AOT=True USE_LLVM=True DEPLOY_AND_RUN=false
env:
DevTeamProvisioning: '-'
workingDirectory: $(Build.SourcesDirectory)/src/mono/sample/iOS
diff --git a/eng/pipelines/coreclr/templates/crossdac-build.yml b/eng/pipelines/coreclr/templates/crossdac-build.yml
index f38341c95e9b64..98cc123878ebb9 100644
--- a/eng/pipelines/coreclr/templates/crossdac-build.yml
+++ b/eng/pipelines/coreclr/templates/crossdac-build.yml
@@ -2,6 +2,7 @@ parameters:
archType: ''
osGroup: ''
osSubgroup: ''
+ isOfficialBuild: false
steps:
# Always build the crossdac, that way we know in CI/PR if things break to build.
@@ -30,6 +31,12 @@ steps:
!**/sharedFramework/**/*
TargetFolder: '$(buildMuslDacStagingPath)'
+ - template: /eng/pipelines/coreclr/templates/sign-diagnostic-files.yml
+ parameters:
+ basePath: $(crossDacArtifactPath)
+ isOfficialBuild: ${{ parameters.isOfficialBuild }}
+ timeoutInMinutes: 30
+
- ${{ if eq(parameters.osGroup, 'Linux') }}:
- task: CopyFiles@2
displayName: Gather runtime for CrossDac
diff --git a/eng/pipelines/coreclr/templates/crossdac-pack.yml b/eng/pipelines/coreclr/templates/crossdac-pack.yml
index 40e375bb9375c4..fc3ef404c171a9 100644
--- a/eng/pipelines/coreclr/templates/crossdac-pack.yml
+++ b/eng/pipelines/coreclr/templates/crossdac-pack.yml
@@ -54,19 +54,6 @@ jobs:
- ${{ parameters.runtimeFlavor }}_${{ parameters.runtimeVariant }}_product_build_${{ platform }}_${{ parameters.buildConfig }}
steps:
- # Install MicroBuild for signing the package
- - ${{ if eq(parameters.isOfficialBuild, true) }}:
- - template: /eng/pipelines/common/restore-internal-tools.yml
-
- - task: MicroBuildSigningPlugin@2
- displayName: Install MicroBuild plugin for Signing
- inputs:
- signType: $(SignType)
- zipSources: false
- feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json
- continueOnError: false
- condition: and(succeeded(), in(variables['SignType'], 'real', 'test'))
-
- task: DownloadBuildArtifacts@0
displayName: Download CrossDac artifacts
inputs:
@@ -77,16 +64,6 @@ jobs:
- script: $(Build.SourcesDirectory)$(dir)build$(scriptExt) -subset crossdacpack -arch $(archType) $(osArg) -c $(buildConfig) $(officialBuildIdArg) $(crossDacArgs) -ci
displayName: Build crossdac packaging
- # Sign diagnostic files
- - ${{ if eq(parameters.isOfficialBuild, true) }}:
- - powershell: >-
- eng\common\build.ps1 -ci -sign -restore -configuration:$(buildConfig) -warnaserror:0 $(officialBuildIdArg)
- /p:PackagesFolder="$(Build.SourcesDirectory)/artifacts/packages/$(buildConfig)"
- /p:SignDiagnosticsPackages=true
- /p:DotNetSignType=$(SignType)
- -projects $(Build.SourcesDirectory)\eng\empty.csproj
- displayName: Sign CrossDac package and contents
-
# Save packages using the prepare-signed-artifacts format.
- template: /eng/pipelines/common/upload-intermediate-artifacts-step.yml
parameters:
diff --git a/eng/pipelines/coreclr/templates/helix-queues-setup.yml b/eng/pipelines/coreclr/templates/helix-queues-setup.yml
index 2b3a80ce94349c..3bdaeb1a049438 100644
--- a/eng/pipelines/coreclr/templates/helix-queues-setup.yml
+++ b/eng/pipelines/coreclr/templates/helix-queues-setup.yml
@@ -28,7 +28,7 @@ jobs:
# iOS/tvOS simulator x64/x86
- ${{ if in(parameters.platform, 'iOSSimulator_x64', 'tvOSSimulator_x64') }}:
- - OSX.1015.Amd64.Open
+ - OSX.1200.Amd64.Open
# Android arm64
- ${{ if in(parameters.platform, 'Android_arm64') }}:
@@ -36,7 +36,7 @@ jobs:
# Android x64
- ${{ if in(parameters.platform, 'Android_x64') }}:
- - Ubuntu.1804.Amd64.Android.Open
+ - Ubuntu.1804.Amd64.Android.29.Open
# Browser wasm
- ${{ if eq(parameters.platform, 'Browser_wasm') }}:
@@ -45,58 +45,59 @@ jobs:
# Linux arm
- ${{ if eq(parameters.platform, 'Linux_arm') }}:
- ${{ if eq(variables['System.TeamProject'], 'public') }}:
- - (Ubuntu.1804.Arm32.Open)Ubuntu.1804.Armarch.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-18.04-helix-arm32v7-bfcd90a-20200121150440
+ - (Ubuntu.1804.Arm32.Open)Ubuntu.1804.Armarch.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-18.04-helix-arm32v7
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
- - (Debian.9.Arm32)Ubuntu.1804.Armarch@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-9-helix-arm32v7-bfcd90a-20200121150037
- - (Ubuntu.1804.Arm32)Ubuntu.1804.Armarch@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-18.04-helix-arm32v7-bfcd90a-20200121150440
+ - (Debian.10.Arm32)Ubuntu.1804.Armarch@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-10-helix-arm32v7
+ - (Debian.11.Arm32)Ubuntu.1804.ArmArch@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-11-helix-arm32v7
+ - (Ubuntu.1804.Arm32)Ubuntu.1804.Armarch@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-18.04-helix-arm32v7
# Linux arm64
- ${{ if eq(parameters.platform, 'Linux_arm64') }}:
- ${{ if eq(variables['System.TeamProject'], 'public') }}:
- - (Ubuntu.1804.Arm64.Open)Ubuntu.1804.Armarch.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-18.04-helix-arm64v8-20210531091519-97d8652
+ - (Ubuntu.1804.Arm64.Open)Ubuntu.1804.Armarch.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-18.04-helix-arm64v8
- ${{ if and(eq(variables['System.TeamProject'], 'public'), notIn(parameters.jobParameters.helixQueueGroup, 'pr', 'ci', 'libraries')) }}:
- - (Debian.9.Arm64.Open)Ubuntu.1804.Armarch.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-9-helix-arm64v8-bfcd90a-20200121150055
+ - (Debian.10.Arm64.Open)Ubuntu.1804.Armarch.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-10-helix-arm64v8
+ - (Debian.11.Arm64.Open)Ubuntu.1804.Armarch.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-11-helix-arm64v8
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
- - (Debian.9.Arm64)Ubuntu.1804.ArmArch@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-9-helix-arm64v8-bfcd90a-20200121150055
- - (Ubuntu.1804.Arm64)Ubuntu.1804.ArmArch@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-18.04-helix-arm64v8-20210531091519-97d8652
+ - (Debian.10.Arm64)Ubuntu.1804.ArmArch@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-10-helix-arm64v8
+ - (Debian.11.Arm64)Ubuntu.1804.ArmArch@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-11-helix-arm64v8
+ - (Ubuntu.1804.Arm64)Ubuntu.1804.ArmArch@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-18.04-helix-arm64v8
# Linux musl x64
- - ${{ if eq(parameters.platform, 'Linux_musl_x64') }}:
+ - ${{ if eq(parameters.platform, 'linux_musl_x64') }}:
- ${{ if eq(variables['System.TeamProject'], 'public') }}:
- - (Alpine.312.Amd64.Open)ubuntu.1604.amd64.open@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.12-helix-20200602002622-e06dc59
+ - (Alpine.317.Amd64.Open)Ubuntu.2204.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.17-helix-amd64
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
- - (Alpine.312.Amd64)ubuntu.1604.amd64@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.12-helix-20200602002622-e06dc59
+ - (Alpine.319.Amd64)Ubuntu.2204.Amd64@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.19-helix-amd64
# Linux musl arm32
- - ${{ if eq(parameters.platform, 'Linux_musl_arm') }}:
+ - ${{ if eq(parameters.platform, 'linux_musl_arm') }}:
- ${{ if eq(variables['System.TeamProject'], 'public') }}:
- - (Alpine.313.Arm32.Open)Ubuntu.1804.ArmArch.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.13-helix-arm32v7-20210414141857-1ea6b0a
+ - (Alpine.317.Arm32.Open)Ubuntu.2204.ArmArch.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.17-helix-arm32v7
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
- - (Alpine.313.Arm32)Ubuntu.1804.ArmArch@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.13-helix-arm32v7-20210414141857-1ea6b0a
+ - (Alpine.319.Arm32)Ubuntu.2204.ArmArch@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.19-helix-arm32v7
# Linux musl arm64
- - ${{ if eq(parameters.platform, 'Linux_musl_arm64') }}:
+ - ${{ if eq(parameters.platform, 'linux_musl_arm64') }}:
- ${{ if eq(variables['System.TeamProject'], 'public') }}:
- - (Alpine.312.Arm64.Open)Ubuntu.1804.ArmArch.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.12-helix-arm64v8-20200602002604-25f8a3e
+ - (Alpine.317.Arm64.Open)Ubuntu.2204.ArmArch.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.17-helix-arm64v8
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
- - (Alpine.312.Arm64)Ubuntu.1804.ArmArch@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.12-helix-arm64v8-20200602002604-25f8a3e
+ - (Alpine.319.Arm64)Ubuntu.2204.ArmArch@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.19-helix-arm64v8
# Linux x64
- ${{ if eq(parameters.platform, 'Linux_x64') }}:
- ${{ if and(eq(variables['System.TeamProject'], 'public'), in(parameters.jobParameters.helixQueueGroup, 'pr', 'ci', 'libraries')) }}:
- Ubuntu.1804.Amd64.Open
- ${{ if and(eq(variables['System.TeamProject'], 'public'), notIn(parameters.jobParameters.helixQueueGroup, 'pr', 'ci', 'libraries')) }}:
- - Debian.9.Amd64.Open
- - Ubuntu.1604.Amd64.Open
+ - (Debian.10.Amd64.Open)Ubuntu.1804.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-10-helix-amd64
+ - (Debian.11.Amd64.Open)Ubuntu.1804.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-11-helix-amd64
- Ubuntu.1804.Amd64.Open
- - (Centos.8.Amd64.Open)Ubuntu.1604.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:centos-8-helix-20201229003624-c1bf759
- RedHat.7.Amd64.Open
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
- - Debian.9.Amd64
- - Ubuntu.1604.Amd64
+ - (Debian.10.Amd64)Ubuntu.1804.amd64@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-10-helix-amd64
+ - (Debian.11.Amd64)Ubuntu.1804.amd64@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-11-helix-amd64
- Ubuntu.1804.Amd64
- - (Centos.8.Amd64)Ubuntu.1604.amd64@mcr.microsoft.com/dotnet-buildtools/prereqs:centos-8-helix-20201229003624-c1bf759
- - (Fedora.34.Amd64)Ubuntu.1604.amd64@mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-34-helix-20210728124700-4f64125
+ - (Fedora.34.Amd64)Ubuntu.2204.amd64.svc@mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-34-helix
- RedHat.7.Amd64
# OSX arm64
@@ -108,58 +109,43 @@ jobs:
# OSX x64
- ${{ if eq(parameters.platform, 'OSX_x64') }}:
- - ${{ if and(eq(variables['System.TeamProject'], 'public'), in(parameters.jobParameters.helixQueueGroup, 'pr', 'ci', 'libraries')) }}:
- - OSX.1013.Amd64.Open
- - ${{ if and(eq(variables['System.TeamProject'], 'public'), notIn(parameters.jobParameters.helixQueueGroup, 'pr', 'ci', 'libraries')) }}:
- - OSX.1013.Amd64.Open
- - OSX.1014.Amd64.Open
+ - ${{ if eq(variables['System.TeamProject'], 'public') }}:
+ - OSX.1200.Amd64.Open
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
- - OSX.1013.Amd64
- - OSX.1014.Amd64
- - OSX.1015.Amd64
+ - OSX.1200.Amd64
# windows x64
- ${{ if eq(parameters.platform, 'windows_x64') }}:
- ${{ if and(eq(variables['System.TeamProject'], 'public'), in(parameters.jobParameters.helixQueueGroup, 'pr', 'ci', 'libraries')) }}:
- Windows.10.Amd64.Open
- ${{ if and(eq(variables['System.TeamProject'], 'public'), notIn(parameters.jobParameters.helixQueueGroup, 'pr', 'ci', 'libraries')) }}:
- - (Windows.Nano.1809.Amd64.Open)windows.10.amd64.serverrs5.open@mcr.microsoft.com/dotnet-buildtools/prereqs:nanoserver-1809-helix-amd64-08e8e40-20200107182504
- - Windows.7.Amd64.Open
- - Windows.81.Amd64.Open
+ - (Windows.Nano.1809.Amd64.Open)windows.10.amd64.serverrs5.open@mcr.microsoft.com/dotnet-buildtools/prereqs:nanoserver-1809-helix-amd64
- Windows.10.Amd64.Open
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
- - Windows.7.Amd64
- - Windows.81.Amd64
- Windows.10.Amd64
- - Windows.10.Amd64.Core
- - (Windows.Nano.1809.Amd64.Open)windows.10.amd64.serverrs5.open@mcr.microsoft.com/dotnet-buildtools/prereqs:nanoserver-1809-helix-amd64-08e8e40-20200107182504
+ - (Windows.Nano.1809.Amd64)windows.10.amd64.serverrs5@mcr.microsoft.com/dotnet-buildtools/prereqs:nanoserver-1809-helix-amd64
# windows x86
- ${{ if eq(parameters.platform, 'windows_x86') }}:
- ${{ if and(eq(variables['System.TeamProject'], 'public'), in(parameters.jobParameters.helixQueueGroup, 'pr', 'ci', 'libraries')) }}:
- Windows.10.Amd64.Open
- ${{ if and(eq(variables['System.TeamProject'], 'public'), notIn(parameters.jobParameters.helixQueueGroup, 'pr', 'ci', 'libraries')) }}:
- - Windows.7.Amd64.Open
- - Windows.81.Amd64.Open
- Windows.10.Amd64.Open
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
- - Windows.7.Amd64
- - Windows.81.Amd64
- Windows.10.Amd64
- - Windows.10.Amd64.Core
# windows arm
- ${{ if eq(parameters.platform, 'windows_arm') }}:
- ${{ if and(eq(variables['System.TeamProject'], 'public'), in(parameters.jobParameters.helixQueueGroup, 'pr', 'ci', 'libraries')) }}:
- - Windows.10.Arm64v8.Open
+ - Windows.11.Arm64.Open
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
- - Windows.10.Arm64
+ - Windows.11.Arm64
# windows arm64
- ${{ if eq(parameters.platform, 'windows_arm64') }}:
- ${{ if and(eq(variables['System.TeamProject'], 'public'), in(parameters.jobParameters.helixQueueGroup, 'pr', 'ci', 'libraries')) }}:
- - Windows.10.Arm64v8.Open
+ - Windows.11.Arm64.Open
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
- - Windows.10.Arm64
+ - Windows.11.Arm64
${{ insert }}: ${{ parameters.jobParameters }}
diff --git a/eng/pipelines/coreclr/templates/perf-job.yml b/eng/pipelines/coreclr/templates/perf-job.yml
index b3f66a235ed920..89318b47e9ea08 100644
--- a/eng/pipelines/coreclr/templates/perf-job.yml
+++ b/eng/pipelines/coreclr/templates/perf-job.yml
@@ -94,7 +94,10 @@ jobs:
- ${{ parameters.framework }}
steps:
# Extra steps that will be passed to the performance template and run before sending the job to helix (all of which is done in the template)
-
+ - script: |
+ $(Build.SourcesDirectory)/eng/common/msbuild.sh $(Build.SourcesDirectory)/eng/testing/performance/add_properties_to_pipeline.proj /t:SetVariables
+ displayName: Add Properties To Pipeline Env
+
# Optionally download live-built libraries
- ${{ if ne(parameters.liveLibrariesBuildConfig, '') }}:
- template: /eng/pipelines/common/download-artifact-step.yml
@@ -181,10 +184,10 @@ jobs:
condition: and(succeeded(), ne(variables.runtimeFlavorName, 'Mono'))
# Copy the runtime directory into the testhost folder to include OOBs.
- - script: "build.cmd -subset libs.pretest -configuration release -ci -arch $(archType) -testscope innerloop /p:RuntimeArtifactsPath=$(librariesDownloadDir)\\bin\\mono\\$(osGroup).$(archType).$(buildConfigUpper) /p:RuntimeFlavor=mono;xcopy $(Build.SourcesDirectory)\\artifacts\\bin\\runtime\\$(_Framework)-$(osGroup)-$(buildConfigUpper)-$(archType)\\* $(Build.SourcesDirectory)\\artifacts\\bin\\testhost\\$(_Framework)-$(osGroup)-$(buildConfigUpper)-$(archType)\\shared\\Microsoft.NETCore.App\\6.0.0 /E /I /Y;xcopy $(Build.SourcesDirectory)\\artifacts\\bin\\testhost\\$(_Framework)-$(osGroup)-$(buildConfigUpper)-$(archType)\\* $(Build.SourcesDirectory)\\.dotnet-mono /E /I /Y;copy $(Build.SourcesDirectory)\\artifacts\\bin\\coreclr\\$(osGroup).$(archType).$(buildConfigUpper)\\corerun.exe $(Build.SourcesDirectory)\\.dotnet-mono\\shared\\Microsoft.NETCore.App\\6.0.0\\corerun.exe"
+ - script: "build.cmd -subset libs.pretest -configuration release -ci -arch $(archType) -testscope innerloop /p:RuntimeArtifactsPath=$(librariesDownloadDir)\\bin\\mono\\$(osGroup).$(archType).$(buildConfigUpper) /p:RuntimeFlavor=mono;xcopy $(Build.SourcesDirectory)\\artifacts\\bin\\runtime\\$(_Framework)-$(osGroup)-$(buildConfigUpper)-$(archType)\\* $(Build.SourcesDirectory)\\artifacts\\bin\\testhost\\$(_Framework)-$(osGroup)-$(buildConfigUpper)-$(archType)\\shared\\Microsoft.NETCore.App\\$(productVersion) /E /I /Y;xcopy $(Build.SourcesDirectory)\\artifacts\\bin\\testhost\\$(_Framework)-$(osGroup)-$(buildConfigUpper)-$(archType)\\* $(Build.SourcesDirectory)\\.dotnet-mono /E /I /Y;copy $(Build.SourcesDirectory)\\artifacts\\bin\\coreclr\\$(osGroup).$(archType).$(buildConfigUpper)\\corerun.exe $(Build.SourcesDirectory)\\.dotnet-mono\\shared\\Microsoft.NETCore.App\\$(productVersion)\\corerun.exe"
displayName: "Create mono dotnet (Windows)"
condition: and(and(succeeded(), eq(variables.runtimeFlavorName, 'Mono')), eq(variables.osGroup, 'windows'), not(in('${{ parameters.runtimeType }}', 'AndroidMono', 'iOSMono')))
- - script: "mkdir $(Build.SourcesDirectory)/.dotnet-mono;./build.sh -subset libs.pretest -configuration release -ci -arch $(archType) -testscope innerloop /p:RuntimeArtifactsPath=$(librariesDownloadDir)/bin/mono/$(osGroup).$(archType).$(buildConfigUpper) /p:RuntimeFlavor=mono;cp $(Build.SourcesDirectory)/artifacts/bin/runtime/$(_Framework)-$(osGroup)-$(buildConfigUpper)-$(archType)/* $(Build.SourcesDirectory)/artifacts/bin/testhost/$(_Framework)-$(osGroup)-$(buildConfigUpper)-$(archType)/shared/Microsoft.NETCore.App/6.0.0 -rf;cp $(Build.SourcesDirectory)/artifacts/bin/testhost/$(_Framework)-$(osGroup)-$(buildConfigUpper)-$(archType)/* $(Build.SourcesDirectory)/.dotnet-mono -r;cp $(Build.SourcesDirectory)/artifacts/bin/coreclr/$(osGroup).$(archType).$(buildConfigUpper)/corerun $(Build.SourcesDirectory)/.dotnet-mono/shared/Microsoft.NETCore.App/6.0.0/corerun"
+ - script: "mkdir $(Build.SourcesDirectory)/.dotnet-mono;./build.sh -subset libs.pretest -configuration release -ci -arch $(archType) -testscope innerloop /p:RuntimeArtifactsPath=$(librariesDownloadDir)/bin/mono/$(osGroup).$(archType).$(buildConfigUpper) /p:RuntimeFlavor=mono;cp $(Build.SourcesDirectory)/artifacts/bin/runtime/$(_Framework)-$(osGroup)-$(buildConfigUpper)-$(archType)/* $(Build.SourcesDirectory)/artifacts/bin/testhost/$(_Framework)-$(osGroup)-$(buildConfigUpper)-$(archType)/shared/Microsoft.NETCore.App/$(productVersion) -rf;cp $(Build.SourcesDirectory)/artifacts/bin/testhost/$(_Framework)-$(osGroup)-$(buildConfigUpper)-$(archType)/* $(Build.SourcesDirectory)/.dotnet-mono -r;cp $(Build.SourcesDirectory)/artifacts/bin/coreclr/$(osGroup).$(archType).$(buildConfigUpper)/corerun $(Build.SourcesDirectory)/.dotnet-mono/shared/Microsoft.NETCore.App/$(productVersion)/corerun"
displayName: "Create mono dotnet (Linux)"
condition: and(and(succeeded(), eq(variables.runtimeFlavorName, 'Mono')), ne(variables.osGroup, 'windows'), not(in('${{ parameters.runtimeType }}', 'AndroidMono', 'iOSMono')))
diff --git a/eng/pipelines/coreclr/templates/run-performance-job.yml b/eng/pipelines/coreclr/templates/run-performance-job.yml
index de523bb2d99e61..888febcb9b430c 100644
--- a/eng/pipelines/coreclr/templates/run-performance-job.yml
+++ b/eng/pipelines/coreclr/templates/run-performance-job.yml
@@ -23,7 +23,7 @@ parameters:
runKind: '' # required -- test category
logicalMachine: '' # required -- Used to specify a which pool of machines the test should run against
javascriptEngine: 'NoJS'
-
+
jobs:
- template: xplat-pipeline-job.yml
parameters:
@@ -36,7 +36,7 @@ jobs:
enableTelemetry: ${{ parameters.enableTelemetry }}
enablePublishBuildArtifacts: true
continueOnError: ${{ parameters.continueOnError }}
-
+
${{ if ne(parameters.displayName, '') }}:
displayName: '${{ parameters.displayName }}'
${{ if eq(parameters.displayName, '') }}:
@@ -55,9 +55,9 @@ jobs:
- IsInternal: ''
- HelixApiAccessToken: ''
- - HelixPreCommandStemWindows: 'py -m pip install -U pip;py -3 -m venv %HELIX_WORKITEM_PAYLOAD%\.venv;call %HELIX_WORKITEM_PAYLOAD%\.venv\Scripts\activate.bat;set PYTHONPATH=;py -3 -m pip install -U pip;py -3 -m pip install azure.storage.blob==12.0.0;py -3 -m pip install azure.storage.queue==12.0.0;set "PERFLAB_UPLOAD_TOKEN=$(PerfCommandUploadToken)"'
- - HelixPreCommandStemLinux: 'python3 -m pip install -U pip;sudo apt-get -y install python3-venv;python3 -m venv $HELIX_WORKITEM_PAYLOAD/.venv;source $HELIX_WORKITEM_PAYLOAD/.venv/Scripts/activate;export PYTHONPATH=;python3 -m pip install -U pip;pip3 install azure.storage.blob==12.0.0;pip3 install azure.storage.queue==12.0.0;sudo apt-get update;sudo apt -y install curl dirmngr apt-transport-https lsb-release ca-certificates;curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -;sudo apt-get -y install nodejs;sudo apt-get -y install npm;npm install --prefix $HELIX_WORKITEM_PAYLOAD jsvu -g;$HELIX_WORKITEM_PAYLOAD/bin/jsvu --os=linux64 --engines=v8,javascriptcore;export PERFLAB_UPLOAD_TOKEN="$(PerfCommandUploadTokenLinux)"'
- - HelixPreCommandStemMsul: 'sudo apk add icu-libs krb5-libs libgcc libintl libssl1.1 libstdc++ zlib;sudo apk add cargo --repository http://dl-cdn.alpinelinux.org/alpine/v3.12/community ;sudo apk add libgdiplus --repository http://dl-cdn.alpinelinux.org/alpine/edge/testing; python3 -m venv $HELIX_WORKITEM_PAYLOAD/.venv;source $HELIX_WORKITEM_PAYLOAD/.venv/bin/activate;export PYTHONPATH=;python3 -m pip install -U pip;pip3 install azure.storage.blob==12.7.1;pip3 install azure.storage.queue==12.1.5;export PERFLAB_UPLOAD_TOKEN="$(PerfCommandUploadTokenLinux)"'
+ - HelixPreCommandStemWindows: 'set ORIGPYPATH=%PYTHONPATH%;py -m pip install -U pip;py -3 -m venv %HELIX_WORKITEM_PAYLOAD%\.venv;call %HELIX_WORKITEM_PAYLOAD%\.venv\Scripts\activate.bat;set PYTHONPATH=;py -3 -m pip install -U pip;py -3 -m pip install urllib3==1.26.15;py -3 -m pip install azure.storage.blob==12.0.0;py -3 -m pip install azure.storage.queue==12.0.0;set "PERFLAB_UPLOAD_TOKEN=$(PerfCommandUploadToken)"'
+ - HelixPreCommandStemLinux: 'export ORIGPYPATH=$PYTHONPATH;python3 -m pip install -U pip;sudo apt-get -y install python3-venv;python3 -m venv $HELIX_WORKITEM_PAYLOAD/.venv;source $HELIX_WORKITEM_PAYLOAD/.venv/bin/activate;export PYTHONPATH=;python3 -m pip install -U pip;pip3 install urllib3==1.26.15;pip3 install azure.storage.blob==12.0.0;pip3 install azure.storage.queue==12.0.0;sudo apt-get update;sudo apt -y install curl dirmngr apt-transport-https lsb-release ca-certificates;curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -;sudo apt-get -y install nodejs;sudo apt-get -y install npm;npm install --prefix $HELIX_WORKITEM_PAYLOAD jsvu -g;$HELIX_WORKITEM_PAYLOAD/bin/jsvu --os=linux64 --engines=v8,javascriptcore;export PERFLAB_UPLOAD_TOKEN="$(PerfCommandUploadTokenLinux)"'
+ - HelixPreCommandStemMusl: 'export ORIGPYPATH=$PYTHONPATH;sudo apk add icu-libs krb5-libs libgcc libintl libssl1.1 libstdc++ zlib cargo;sudo apk add libgdiplus --repository http://dl-cdn.alpinelinux.org/alpine/edge/testing; python3 -m venv $HELIX_WORKITEM_PAYLOAD/.venv;source $HELIX_WORKITEM_PAYLOAD/.venv/bin/activate;export PYTHONPATH=;python3 -m pip install -U pip;pip3 install urllib3==1.26.15;pip3 install azure.storage.blob==12.7.1;pip3 install azure.storage.queue==12.1.5;export PERFLAB_UPLOAD_TOKEN="$(PerfCommandUploadTokenLinux)"'
- ExtraMSBuildLogsWindows: 'set MSBUILDDEBUGCOMM=1;set "MSBUILDDEBUGPATH=%HELIX_WORKITEM_UPLOAD_ROOT%"'
- ExtraMSBuildLogsLinux: 'export MSBUILDDEBUGCOMM=1;export "MSBUILDDEBUGPATH=$HELIX_WORKITEM_UPLOAD_ROOT"'
- HelixPreCommand: ''
@@ -66,13 +66,16 @@ jobs:
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
- ${{ if eq( parameters.osGroup, 'windows') }}:
- HelixPreCommand: $(HelixPreCommandStemWindows);$(ExtraMSBuildLogsWindows)
+ - HelixPostCommand: 'set PYTHONPATH=%ORIGPYPATH%'
- IsInternal: -Internal
- ${{ if ne(parameters.osGroup, 'windows') }}:
- ${{ if eq(parameters.osSubGroup, '_musl') }}:
- - HelixPreCommand: $(HelixPreCommandStemMsul);$(ExtraMSBuildLogsLinux)
+ - HelixPreCommand: $(HelixPreCommandStemMusl);$(ExtraMSBuildLogsLinux)
+ - HelixPostCommand: 'export PYTHONPATH=$ORIGPYPATH'
- IsInternal: --internal
- ${{ if ne(parameters.osSubGroup, '_musl') }}:
- HelixPreCommand: $(HelixPreCommandStemLinux);$(ExtraMSBuildLogsLinux)
+ - HelixPostCommand: 'export PYTHONPATH=$ORIGPYPATH'
- IsInternal: --internal
- group: DotNet-HelixApi-Access
- group: dotnet-benchview
@@ -82,7 +85,7 @@ jobs:
- HelixPreCommand: $(ExtraMSBuildLogsWindows)
- ${{ if ne(parameters.osGroup, 'windows') }}:
- HelixPreCommand: $(ExtraMSBuildLogsLinux);npm install --prefix $HELIX_WORKITEM_PAYLOAD jsvu -g;$HELIX_WORKITEM_PAYLOAD/bin/jsvu --os=linux64 --engines=v8,javascriptcore
-
+
- ${{ if and(eq(parameters.codeGenType, 'Interpreter'), eq(parameters.runtimeType, 'mono')) }}:
- ${{ if eq( parameters.osGroup, 'windows') }}:
@@ -132,6 +135,7 @@ jobs:
HelixAccessToken: $(HelixApiAccessToken)
HelixTargetQueues: $(Queue)
HelixPreCommands: $(HelixPreCommand)
+ HelixPostCommands: $(HelixPostCommand)
Creator: $(Creator)
WorkItemTimeout: 4:00 # 4 hours
WorkItemDirectory: '$(WorkItemDirectory)' # WorkItemDirectory can not be empty, so we send it some docs to keep it happy
diff --git a/eng/pipelines/coreclr/templates/run-scenarios-job.yml b/eng/pipelines/coreclr/templates/run-scenarios-job.yml
index 2fa6822205aa00..c3d78c9b529731 100644
--- a/eng/pipelines/coreclr/templates/run-scenarios-job.yml
+++ b/eng/pipelines/coreclr/templates/run-scenarios-job.yml
@@ -34,7 +34,7 @@ jobs:
enableTelemetry: ${{ parameters.enableTelemetry }}
enablePublishBuildArtifacts: true
continueOnError: ${{ parameters.continueOnError }}
-
+
${{ if ne(parameters.displayName, '') }}:
displayName: '${{ parameters.displayName }}'
${{ if eq(parameters.displayName, '') }}:
@@ -59,17 +59,20 @@ jobs:
- SharedHelixPreCommands: 'call %HELIX_WORKITEM_PAYLOAD%\machine-setup.cmd;set PYTHONPATH=%HELIX_WORKITEM_PAYLOAD%\scripts%3B%HELIX_WORKITEM_PAYLOAD%'
- ${{ if ne(parameters.osGroup, 'windows') }}:
- SharedHelixPreCommands: 'chmod +x $HELIX_WORKITEM_PAYLOAD/machine-setup.sh;. $HELIX_WORKITEM_PAYLOAD/machine-setup.sh;export PYTHONPATH=$HELIX_WORKITEM_PAYLOAD/scripts:$HELIX_WORKITEM_PAYLOAD'
-
+
# extra private job settings
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
- ${{ if eq(parameters.osGroup, 'windows') }}:
- - AdditionalHelixPreCommands: 'py -3 -m venv %HELIX_WORKITEM_PAYLOAD%\.venv;call %HELIX_WORKITEM_PAYLOAD%\.venv\Scripts\activate.bat;set PYTHONPATH=;py -3 -m pip install -U pip;py -3 -m pip install --user azure.storage.blob==12.0.0 --force-reinstall;py -3 -m pip install --user azure.storage.queue==12.0.0 --force-reinstall;set "PERFLAB_UPLOAD_TOKEN=$(PerfCommandUploadToken)"'
- - IsInternal: -Internal
+ - AdditionalHelixPreCommands: 'set ORIGPYPATH=%PYTHONPATH%;py -3 -m venv %HELIX_WORKITEM_PAYLOAD%\.venv;call %HELIX_WORKITEM_PAYLOAD%\.venv\Scripts\activate.bat;set PYTHONPATH=;py -3 -m pip install -U pip;py -3 -m pip install --user azure.storage.blob==12.0.0;py -3 -m pip install --user azure.storage.queue==12.0.0;py -3 -m pip install --user urllib3==1.26.15;set "PERFLAB_UPLOAD_TOKEN=$(PerfCommandUploadToken)"'
+ - AdditionalHelixPostCommands: 'set PYTHONPATH=%ORIGPYPATH%'
+ - IsInternal: -Internal
- ${{ if and(ne(parameters.osGroup, 'windows'), ne(parameters.osSubGroup, '_musl')) }}:
- - AdditionalHelixPreCommands: 'sudo apt-get -y install python3-venv;python3 -m venv $HELIX_WORKITEM_PAYLOAD/.venv;source $HELIX_WORKITEM_PAYLOAD/.venv/Scripts/activate;export PYTHONPATH=;python3 -m pip install -U pip;pip3 install --user azure.storage.blob==12.0.0 --force-reinstall;pip3 install --user azure.storage.queue==12.0.0 --force-reinstall;export PERFLAB_UPLOAD_TOKEN="$(PerfCommandUploadTokenLinux)"'
+ - AdditionalHelixPreCommands: 'export ORIGPYPATH=$PYTHONPATH;sudo apt-get -y install python3-venv;python3 -m venv $HELIX_WORKITEM_PAYLOAD/.venv;source $HELIX_WORKITEM_PAYLOAD/.venv/bin/activate;export PYTHONPATH=;python3 -m pip install -U pip;pip3 install --user azure.storage.blob==12.0.0;pip3 install --user azure.storage.queue==12.0.0;pip3 install --user urllib3==1.26.15;export PERFLAB_UPLOAD_TOKEN="$(PerfCommandUploadTokenLinux)"'
+ - AdditionalHelixPostCommands: 'export PYTHONPATH=$ORIGPYPATH'
- IsInternal: --internal
- ${{ if and(ne(parameters.osGroup, 'windows'), eq(parameters.osSubGroup, '_musl')) }}:
- - AdditionalHelixPreCommands: 'sudo apk add py3-virtualenv;python3 -m venv $HELIX_WORKITEM_PAYLOAD/.venv;source $HELIX_WORKITEM_PAYLOAD/.venv/Scripts/activate;export PYTHONPATH=;python3 -m pip install -U pip;pip3 install --user azure.storage.blob==12.0.0 --force-reinstall;pip3 install --user azure.storage.queue==12.0.0 --force-reinstall;export PERFLAB_UPLOAD_TOKEN="$(PerfCommandUploadTokenLinux)"'
+ - AdditionalHelixPreCommands: 'export ORIGPYPATH=$PYTHONPATH;sudo apk add py3-virtualenv;python3 -m venv $HELIX_WORKITEM_PAYLOAD/.venv;source $HELIX_WORKITEM_PAYLOAD/.venv/bin/activate;export PYTHONPATH=;python3 -m pip install -U pip;pip3 install --user azure.storage.blob==12.0.0;pip3 install --user azure.storage.queue==12.0.0;pip3 install --user urllib3==1.26.15;export PERFLAB_UPLOAD_TOKEN="$(PerfCommandUploadTokenLinux)"'
+ - AdditionalHelixPostCommands: 'export PYTHONPATH=$ORIGPYPATH'
- IsInternal: --internal
- group: DotNet-HelixApi-Access
- group: dotnet-benchview
@@ -97,7 +100,7 @@ jobs:
condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT'))
continueOnError: ${{ parameters.continueOnError }}
# run ci-setup
- - script: $(Python) $(PerformanceDirectory)\scripts\ci_setup.py $(SetupArguments) --install-dir $(PayloadDirectory)\dotnet --output-file $(WorkItemDirectory)\machine-setup.cmd
+ - script: $(Python) $(PerformanceDirectory)\scripts\ci_setup.py $(SetupArguments) --install-dir $(PayloadDirectory)\dotnet --output-file $(WorkItemDirectory)\machine-setup.cmd
displayName: Run ci setup script (Windows)
condition: and(succeeded(), eq(variables['Agent.Os'], 'Windows_NT'))
- script: $(Python) $(PerformanceDirectory)/scripts/ci_setup.py $(SetupArguments) --install-dir $(PayloadDirectory)/dotnet --output-file $(WorkItemDirectory)/machine-setup.sh
@@ -115,28 +118,28 @@ jobs:
displayName: Copy scenario support files (Linux)
condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT'))
# build Startup
- - script: $(PayloadDirectory)\dotnet\dotnet.exe publish -c Release -o $(WorkItemDirectory)\Startup -f netcoreapp3.1 -r win-$(Architecture) $(PerformanceDirectory)\src\tools\ScenarioMeasurement\Startup\Startup.csproj
+ - script: $(PayloadDirectory)\dotnet\dotnet.exe publish -c Release -o $(WorkItemDirectory)\Startup -f net6.0 -r win-$(Architecture) $(PerformanceDirectory)\src\tools\ScenarioMeasurement\Startup\Startup.csproj -p:DisableTransitiveFrameworkReferenceDownloads=true
displayName: Build Startup tool (Windows)
env:
- PERFLAB_TARGET_FRAMEWORKS: netcoreapp3.1
+ PERFLAB_TARGET_FRAMEWORKS: net6.0
condition: and(succeeded(), eq(variables['Agent.Os'], 'Windows_NT'))
- - script: $(PayloadDirectory)/dotnet/dotnet publish -c Release -o $(WorkItemDirectory)/startup -f netcoreapp3.1 -r linux-$(Architecture) $(PerformanceDirectory)/src/tools/ScenarioMeasurement/Startup/Startup.csproj
+ - script: $(PayloadDirectory)/dotnet/dotnet publish -c Release -o $(WorkItemDirectory)/startup -f net6.0 -r linux-$(Architecture) $(PerformanceDirectory)/src/tools/ScenarioMeasurement/Startup/Startup.csproj -p:DisableTransitiveFrameworkReferenceDownloads=true
displayName: Build Startup tool (Linux)
env:
- PERFLAB_TARGET_FRAMEWORKS: netcoreapp3.1
+ PERFLAB_TARGET_FRAMEWORKS: net6.0
condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT'))
# build SizeOnDisk
- - script: $(PayloadDirectory)\dotnet\dotnet.exe publish -c Release -o $(WorkItemDirectory)\SOD -f netcoreapp3.1 -r win-$(Architecture) $(PerformanceDirectory)\src\tools\ScenarioMeasurement\SizeOnDisk\SizeOnDisk.csproj
+ - script: $(PayloadDirectory)\dotnet\dotnet.exe publish -c Release -o $(WorkItemDirectory)\SOD -f net6.0 -r win-$(Architecture) $(PerformanceDirectory)\src\tools\ScenarioMeasurement\SizeOnDisk\SizeOnDisk.csproj -p:DisableTransitiveFrameworkReferenceDownloads=true
displayName: Build SizeOnDisk tool (Windows)
env:
- PERFLAB_TARGET_FRAMEWORKS: netcoreapp3.1
+ PERFLAB_TARGET_FRAMEWORKS: net6.0
condition: and(succeeded(), eq(variables['Agent.Os'], 'Windows_NT'))
- - script: $(PayloadDirectory)/dotnet/dotnet publish -c Release -o $(WorkItemDirectory)/SOD -f netcoreapp3.1 -r linux-$(Architecture) $(PerformanceDirectory)/src/tools/ScenarioMeasurement/SizeOnDisk/SizeOnDisk.csproj
+ - script: $(PayloadDirectory)/dotnet/dotnet publish -c Release -o $(WorkItemDirectory)/SOD -f net6.0 -r linux-$(Architecture) $(PerformanceDirectory)/src/tools/ScenarioMeasurement/SizeOnDisk/SizeOnDisk.csproj -p:DisableTransitiveFrameworkReferenceDownloads=true
displayName: Build SizeOnDisk tool (Linux)
env:
- PERFLAB_TARGET_FRAMEWORKS: netcoreapp3.1
+ PERFLAB_TARGET_FRAMEWORKS: net6.0
condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT'))
-
+
# run perf testing in helix
- template: /eng/pipelines/coreclr/templates/perf-send-to-helix.yml
parameters:
@@ -145,6 +148,7 @@ jobs:
HelixAccessToken: $(HelixApiAccessToken)
HelixTargetQueues: $(Queue)
HelixPreCommands: '$(AdditionalHelixPreCommands);$(SharedHelixPreCommands)' # $(HelixPreCommands) should follow $(AdditionalHelixPreCommands) because PYTHONPATH is cleared by the former
+ HelixPostCommands: $(AdditionalHelixPostCommands)
Creator: $(Creator)
WorkItemTimeout: 4:00 # 4 hours
WorkItemDirectory: '$(WorkItemDirectory)' # contains scenario tools, shared python scripts, dotnet tool
diff --git a/eng/pipelines/coreclr/templates/sign-diagnostic-files.yml b/eng/pipelines/coreclr/templates/sign-diagnostic-files.yml
new file mode 100644
index 00000000000000..25f97276c74f26
--- /dev/null
+++ b/eng/pipelines/coreclr/templates/sign-diagnostic-files.yml
@@ -0,0 +1,75 @@
+parameters:
+ basePath: ''
+ isOfficialBuild: ''
+ timeoutInMinutes: ''
+
+steps:
+- ${{ if and(eq(parameters.isOfficialBuild, true), ne(variables['Build.Reason'], 'PullRequest'), or(startswith(variables['Build.SourceBranch'], 'refs/heads/release/'), startswith(variables['Build.SourceBranch'], 'refs/heads/internal/release/'))) }}:
+ - task: EsrpCodeSigning@5
+ displayName: Sign Diagnostic Binaries
+ inputs:
+ ConnectedServiceName: 'diagnostics-esrp-kvcertuser'
+ AppRegistrationClientId: '2234cdec-a13f-4bb2-aa63-04c57fd7a1f9'
+ AppRegistrationTenantId: '72f988bf-86f1-41af-91ab-2d7cd011db47'
+ AuthAKVName: 'clrdiag-esrp-id'
+ AuthCertName: 'dotnetesrp-diagnostics-aad-ssl-cert'
+ AuthSignCertName: 'dotnet-diagnostics-esrp-pki-onecert'
+ FolderPath: ${{ parameters.basePath }}
+ Pattern: |
+ **/mscordaccore*.dll
+ **/mscordbi*.dll
+ UseMinimatch: true
+ signConfigType: 'inlineSignParams'
+ inlineOperation: >-
+ [
+ {
+ "keyCode": "CP-471322",
+ "operationCode": "SigntoolSign",
+ "parameters": {
+ "OpusName": "Microsoft",
+ "OpusInfo": "http://www.microsoft.com",
+ "PageHash": "/NPH",
+ "FileDigest": "/fd sha256",
+ "TimeStamp": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256"
+ },
+ "toolName": "sign",
+ "toolVersion": "1.0"
+ },
+ {
+ "KeyCode": "CP-471322",
+ "OperationCode": "SigntoolVerify",
+ "Parameters": {},
+ "ToolName": "sign",
+ "ToolVersion": "1.0"
+ }
+ ]
+ SessionTimeout: ${{ parameters.timeoutInMinutes }}
+ MaxConcurrency: '50'
+ MaxRetryAttempts: '5'
+ PendingAnalysisWaitTimeoutMinutes: '5'
+
+ - powershell: |
+ $filesToSign = $(Get-ChildItem -Recurse ${{ parameters.basePath }} -Include mscordaccore*.dll, mscordbi*.dll)
+ foreach ($file in $filesToSign) {
+ $signingCert = $(Get-AuthenticodeSignature $file).SignerCertificate
+ if ($signingCert -eq $null)
+ {
+ throw "File $file does not contain a signature."
+ }
+
+ if ($signingCert.Subject -ne "CN=.NET DAC, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" `
+ -or $signingCert.Issuer -ne "CN=Microsoft Code Signing PCA 2010, O=Microsoft Corporation, L=Redmond, S=Washington, C=US")
+ {
+ throw "File $file not in expected trust chain."
+ }
+
+ $certEKU = $signingCert.Extensions.Where({ $_.Oid.FriendlyName -eq "Enhanced Key Usage" }) | Select -First 1
+
+ if ($certEKU.EnhancedKeyUsages.Where({ $_.Value -eq "1.3.6.1.4.1.311.84.4.1" }).Count -ne 1)
+ {
+ throw "Signature for $file does not contain expected EKU."
+ }
+
+ Write-Host "$file is correctly signed."
+ }
+ displayName: Validate diagnostic signatures
diff --git a/eng/pipelines/coreclr/templates/xplat-pipeline-job.yml b/eng/pipelines/coreclr/templates/xplat-pipeline-job.yml
index dd27c1211844fa..7a57236ee14067 100644
--- a/eng/pipelines/coreclr/templates/xplat-pipeline-job.yml
+++ b/eng/pipelines/coreclr/templates/xplat-pipeline-job.yml
@@ -41,7 +41,6 @@ jobs:
stagedBuild: ${{ parameters.stagedBuild }}
strategy: ${{ parameters.strategy }}
pool: ${{ parameters.pool }}
- pgoType: ${{ parameters.pgoType }}
# arcade-specific parameters
condition: and(succeeded(), ${{ parameters.condition }})
@@ -67,7 +66,7 @@ jobs:
# Build product defines what we are trying to build, either coreclr or mono
- name: buildProductArtifactName
- value: 'CoreCLRProduct_${{ parameters.pgoType }}_${{ parameters.runtimeVariant }}_$(osGroup)$(osSubgroup)_$(archType)_$(buildConfig)'
+ value: 'CoreCLRProduct_${{ parameters.runtimeVariant }}_$(osGroup)$(osSubgroup)_$(archType)_$(buildConfig)'
- name: buildProductRootFolderPath
value: '$(Build.SourcesDirectory)/artifacts/bin/coreclr/$(osGroup).$(archType).$(buildConfigUpper)'
@@ -99,13 +98,13 @@ jobs:
# We need this because both mono and coreclr build currently depends on CoreClr
- name: coreClrProductArtifactName
- value: 'CoreCLRProduct_${{ parameters.pgoType }}_${{ parameters.runtimeVariant }}_$(osGroup)$(osSubgroup)_$(archType)_$(buildConfig)'
+ value: 'CoreCLRProduct_${{ parameters.runtimeVariant }}_$(osGroup)$(osSubgroup)_$(archType)_$(buildConfig)'
- name: coreClrProductRootFolderPath
value: '$(Build.SourcesDirectory)/artifacts/bin/coreclr/$(osGroup).$(archType).$(buildConfigUpper)'
- name: corelibProductArtifactName
- value: 'CoreLib_${{ parameters.pgoType }}_$(osGroup)$(osSubgroup)_$(archType)_$(buildConfig)'
+ value: 'CoreLib_$(osGroup)$(osSubgroup)_$(archType)_$(buildConfig)'
- name: managedGenericTestArtifactName
value: 'CoreCLRManagedTestArtifacts_AnyOS_AnyCPU_$(buildConfig)'
diff --git a/eng/pipelines/global-build.yml b/eng/pipelines/global-build.yml
index 289f7d0033e9c2..420ba301ad12ee 100644
--- a/eng/pipelines/global-build.yml
+++ b/eng/pipelines/global-build.yml
@@ -133,5 +133,4 @@ jobs:
- SourceBuild_Linux_x64
jobParameters:
nameSuffix: SourceBuild
- buildArgs: -subset clr+libs+host+packs /p:DotNetBuildFromSource=true --portableBuild false
timeoutInMinutes: 90
diff --git a/eng/pipelines/installer/jobs/base-job.yml b/eng/pipelines/installer/jobs/base-job.yml
index f40ab73d7d4289..6a2d1f919f22ce 100644
--- a/eng/pipelines/installer/jobs/base-job.yml
+++ b/eng/pipelines/installer/jobs/base-job.yml
@@ -12,7 +12,6 @@ parameters:
container: ''
buildSteps: []
dependsOn: []
- dependsOnGlobalBuild: false
dependOnEvaluatePaths: false
globalBuildSuffix: ''
variables: []
@@ -20,7 +19,6 @@ parameters:
displayName: ''
runtimeVariant: ''
pool: ''
- pgoType: ''
packageDistroList:
- image: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-14.04-debpkg-e5cf912-20175003025046
@@ -39,8 +37,8 @@ parameters:
platforms: []
jobs:
-- job: ${{ format('installer_{0}_{1}_{2}_{3}_{4}_', parameters.pgoType, parameters.runtimeFlavor, parameters.runtimeVariant, coalesce(parameters.name, parameters.platform), parameters.buildConfig) }}
- displayName: ${{ format('{0} Installer Build and Test {1} {2} {3} {4}', parameters.pgoType, parameters.runtimeFlavor, parameters.runtimeVariant, coalesce(parameters.name, parameters.platform), parameters.buildConfig) }}
+- job: ${{ format('installer_{0}_{1}_{2}_{3}_', parameters.runtimeFlavor, parameters.runtimeVariant, coalesce(parameters.name, parameters.platform), parameters.buildConfig) }}
+ displayName: ${{ format('Installer Build and Test {0} {1} {2} {3}', parameters.runtimeFlavor, parameters.runtimeVariant, coalesce(parameters.name, parameters.platform), parameters.buildConfig) }}
condition: and(succeeded(), ${{ parameters.condition }})
pool: ${{ parameters.pool }}
@@ -65,8 +63,7 @@ jobs:
not(in(parameters.archType, 'x64', 'x86')),
eq(parameters.runtimeFlavor, 'mono'),
eq(parameters.isOfficialBuild, true),
- eq(parameters.crossBuild, true),
- eq(parameters.pgoType, 'PGO')) }}
+ eq(parameters.crossBuild, true)) }}
- name: BuildAction
value: -test
@@ -78,12 +75,6 @@ jobs:
- name: SignType
value: test
- - name: pgoInstrumentArg
- value: ''
- - ${{ if eq(parameters.pgoType, 'PGO' )}}:
- - name: pgoInstrumentArg
- value: '-pgoinstrument '
-
# Set up non-PR build from internal project
- ${{ if eq(parameters.isOfficialBuild, true) }}:
- name: SignType
@@ -98,6 +89,9 @@ jobs:
${{ if in(parameters.osGroup, 'Linux', 'FreeBSD') }}:
value: '/root/runtime/'
+ - ${{ if eq(variables['System.TeamProject'], 'internal') }}:
+ - group: AzureDevOps-Artifact-Feeds-Pats
+
###
### Platform-specific variable setup
###
@@ -123,7 +117,6 @@ jobs:
build.cmd -subset host+packs -ci
$(BuildAction)
-configuration $(_BuildConfig)
- $(pgoInstrumentArg)
$(LiveOverridePathArgs)
$(CommonMSBuildArgs)
$(MsbuildSigningArguments)
@@ -225,7 +218,6 @@ jobs:
/p:CrossBuild=${{ parameters.crossBuild }}
/p:PortableBuild=$(_PortableBuild)
/p:SkipTests=$(SkipTests)
- $(pgoInstrumentArg)
$(LiveOverridePathArgs)
$(CommonMSBuildArgs)
$(OutputRidArg)
@@ -287,7 +279,7 @@ jobs:
/p:RuntimeArtifactsPath=$(buildCommandSourcesDirectory)$(RuntimeDownloadPath)
/p:RuntimeConfiguration=${{ parameters.liveRuntimeBuildConfig }}
- name: RuntimeArtifactName
- value: $(runtimeFlavorName)Product_${{ parameters.pgoType }}_${{ parameters.runtimeVariant }}_$(liveRuntimeLegName)
+ value: $(runtimeFlavorName)Product_${{ parameters.runtimeVariant }}_$(liveRuntimeLegName)
- ${{ if ne(parameters.liveLibrariesBuildConfig, '') }}:
- name: liveLibrariesLegName
@@ -308,14 +300,13 @@ jobs:
- evaluate_paths
- ${{ parameters.dependsOn }}
- ${{ if ne(parameters.liveRuntimeBuildConfig, '') }}:
- - ${{ format('{0}_{1}_product_build_{2}{3}_{4}_{5}{6}',
+ - ${{ format('{0}_{1}_product_build_{2}{3}_{4}_{5}',
parameters.runtimeFlavor,
parameters.runtimeVariant,
parameters.osGroup,
parameters.osSubgroup,
parameters.archType,
- parameters.liveRuntimeBuildConfig,
- parameters.pgoType) }}
+ parameters.liveRuntimeBuildConfig) }}
- ${{ if ne(parameters.liveLibrariesBuildConfig, '') }}:
- libraries_build_${{ format('{0}{1}_{2}_{3}',
parameters.osGroup,
@@ -341,7 +332,7 @@ jobs:
displayName: Clean up old artifacts owned by root
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
- - task: NuGetAuthenticate@0
+ - task: NuGetAuthenticate@1
- ${{ if eq(parameters.osGroup, 'windows') }}:
# NuGet's http cache lasts 30 minutes. If we're on a static machine, this may interfere with
@@ -356,7 +347,7 @@ jobs:
zipSources: false
feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json
continueOnError: false
- condition: and(succeeded(), in(variables['SignType'], 'real', 'test'))
+ condition: and(succeeded(), in(variables['SignType'], 'real', 'test'), eq(${{ parameters.isOfficialBuild }}, true))
- checkout: self
clean: true
@@ -379,7 +370,7 @@ jobs:
displayName: 'Libraries artifacts'
cleanUnpackFolder: false
- - ${{ if in(parameters.osGroup, 'OSX', 'iOS', 'tvOS') }}:
+ - ${{ if in(parameters.osGroup, 'OSX', 'MacCatalyst', 'iOS', 'iOSSimulator', 'tvOS', 'tvOSSimulator') }}:
- script: $(Build.SourcesDirectory)/eng/install-native-dependencies.sh ${{ parameters.osGroup }} ${{ parameters.archType }} azDO
displayName: Install Build Dependencies
@@ -388,6 +379,24 @@ jobs:
df -h
displayName: Disk Usage before Build
+ - ${{ if ne(variables['System.TeamProject'], 'public') }}:
+ - ${{ if ne(parameters.osGroup, 'windows') }}:
+ - task: Bash@3
+ displayName: Setup Private Feeds Credentials
+ inputs:
+ filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.sh
+ arguments: $(Build.SourcesDirectory)/NuGet.config $Token
+ env:
+ Token: $(dn-bot-dnceng-artifact-feeds-rw)
+ - ${{ if eq(parameters.osGroup, 'windows') }}:
+ - task: PowerShell@2
+ displayName: Setup Private Feeds Credentials
+ inputs:
+ filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.ps1
+ arguments: -ConfigFile $(Build.SourcesDirectory)/NuGet.config -Password $Env:Token
+ env:
+ Token: $(dn-bot-dnceng-artifact-feeds-rw)
+
# Build the default subset non-MacOS platforms
- ${{ if ne(parameters.osGroup, 'OSX') }}:
- script: $(BaseJobBuildCommand)
@@ -422,18 +431,20 @@ jobs:
displayName: Disk Usage after Build
# Only in glibc leg, we produce RPMs and Debs
- - ${{ if and(eq(parameters.runtimeFlavor, 'coreclr'), eq(parameters.platform, 'Linux_x64'), eq(parameters.osSubgroup, ''), eq(parameters.pgoType, ''))}}:
+ - ${{ if and(eq(parameters.runtimeFlavor, 'coreclr'), or(eq(parameters.platform, 'Linux_x64'), eq(parameters.platform, 'Linux_arm64')), eq(parameters.osSubgroup, ''))}}:
- ${{ each packageBuild in parameters.packageDistroList }}:
# This leg's RID matches the build image. Build its distro-dependent packages, as well as
# the distro-independent installers. (There's no particular reason to build the distro-
# independent installers on this leg, but we need to do it somewhere.)
- - template: steps/build-linux-package.yml
- parameters:
- packageType: ${{ packageBuild.packageType }}
- image: ${{ packageBuild.image }}
- packageStepDescription: Runtime Deps, Runtime, Framework Packs installers
- subsetArg: $(installersSubsetArg)
- packagingArgs: ${{ packageBuild.packagingArgs }}
+ # Currently, Linux_arm64 supports 'rpm' type only.
+ - ${{ if or(not(eq(parameters.platform, 'Linux_arm64')), eq(packageBuild.packageType, 'rpm')) }}:
+ - template: steps/build-linux-package.yml
+ parameters:
+ packageType: ${{ packageBuild.packageType }}
+ image: ${{ packageBuild.image }}
+ packageStepDescription: Runtime Deps, Runtime, Framework Packs installers
+ subsetArg: $(installersSubsetArg)
+ packagingArgs: ${{ packageBuild.packagingArgs }}
- ${{ if ne(parameters.container, '') }}:
# Files may be owned by root because builds don't set user ID. Later build steps run 'find' in
@@ -471,7 +482,6 @@ jobs:
runtimeVariant: ${{ parameters.runtimeVariant }}
skipTests: $(SkipTests)
isOfficialBuild: ${{ eq(parameters.isOfficialBuild, true) }}
- pgoType: ${{ parameters.pgoType }}
- ${{ if ne(parameters.osGroup, 'windows') }}:
- script: set -x && df -h
diff --git a/eng/pipelines/installer/jobs/steps/upload-job-artifacts.yml b/eng/pipelines/installer/jobs/steps/upload-job-artifacts.yml
index b45ff4cedc0523..30032b7da22eee 100644
--- a/eng/pipelines/installer/jobs/steps/upload-job-artifacts.yml
+++ b/eng/pipelines/installer/jobs/steps/upload-job-artifacts.yml
@@ -3,7 +3,6 @@ parameters:
runtimeFlavor: 'coreclr'
runtimeVariant: ''
isOfficialBuild: false
- pgoType: ''
steps:
# Upload build artifacts (packages) to pipeline only if official, to save storage space.
@@ -39,6 +38,6 @@ steps:
displayName: Publish BuildLogs
inputs:
targetPath: '$(Build.StagingDirectory)/BuildLogs'
- artifactName: Installer-Logs-${{parameters.pgoType }}${{ parameters.runtimeFlavor }}-${{ parameters.runtimeVariant }}-${{ parameters.name }}-$(_BuildConfig)
+ artifactName: Installer-Logs-${{ parameters.runtimeFlavor }}-${{ parameters.runtimeVariant }}-${{ parameters.name }}-$(_BuildConfig)
continueOnError: true
condition: succeededOrFailed()
diff --git a/eng/pipelines/libraries/base-job.yml b/eng/pipelines/libraries/base-job.yml
index 9c5cff7cc5e81f..00adbce6bce703 100644
--- a/eng/pipelines/libraries/base-job.yml
+++ b/eng/pipelines/libraries/base-job.yml
@@ -6,7 +6,6 @@ parameters:
crossBuild: false
crossrootfsDir: ''
framework: 'net6.0'
- isOfficialAllConfigurations: false
isSourceBuild: false
liveRuntimeBuildConfig: ''
runtimeFlavor: 'coreclr'
@@ -23,17 +22,12 @@ parameters:
testScope: ''
pool: ''
runTests: false
- pgoType: ''
jobs:
- template: /eng/common/templates/job/job.yml
parameters:
- ${{ if notIn(parameters.framework, 'allConfigurations', 'net48') }}:
- displayName: ${{ format('Libraries {0} {1}{2} {3} {4}', parameters.displayName, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
- name: ${{ format('libraries_{0}_{1}{2}_{3}_{4}', parameters.name, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
- ${{ if in(parameters.framework, 'allConfigurations', 'net48') }}:
- displayName: ${{ format('Libraries {0} {1} {2} {3} {4}', parameters.displayName, parameters.osGroup, parameters.framework, parameters.archType, parameters.buildConfig) }}
- name: ${{ format('libraries_{0}_{1}_{2}{3}_{4}_{5}', parameters.name, parameters.framework, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
+ displayName: ${{ format('Libraries {0} {1}{2} {3} {4}', parameters.displayName, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
+ name: ${{ format('libraries_{0}_{1}{2}_{3}_{4}', parameters.name, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
enableTelemetry: ${{ parameters.isOfficialBuild }} # TODO: figure out if it's needed
container: ${{ parameters.container }}
@@ -41,6 +35,10 @@ jobs:
helixRepo: dotnet/runtime
pool: ${{ parameters.pool }}
variables:
+ - ${{ if eq(variables['System.TeamProject'], 'internal') }}:
+ - group: DotNet-HelixApi-Access
+ - group: AzureDevOps-Artifact-Feeds-Pats
+
- _buildScriptFileName: build
- _msbuildCommonParameters: ''
@@ -67,7 +65,7 @@ jobs:
- _runtimeOSArg: /p:RuntimeOS=linux-musl
- ${{ if and(eq(parameters.osGroup, 'Linux'), eq(parameters.osSubGroup, ''), eq(parameters.archType, 'arm')) }}:
- - _runtimeOSArg: /p:RuntimeOS=ubuntu.16.04
+ - _runtimeOSArg: /p:RuntimeOS=ubuntu.22.04
# force a value for OS when cross-building
- ${{ if in(parameters.osGroup, 'Browser', 'iOS', 'tvOS', 'Android', 'FreeBSD') }}:
@@ -77,14 +75,7 @@ jobs:
- _finalFrameworkArg: -framework ${{ parameters.framework }}
- _extraHelixArguments: /p:BuildTargetFramework=${{ parameters.framework }}
- - ${{ if eq(parameters.framework, 'allConfigurations') }}:
- - _finalFrameworkArg: -allConfigurations
- - _testModeArg: /p:TestAssemblies=false /p:TestPackages=true
-
- - ${{ if eq(parameters.isOfficialAllConfigurations, true) }}:
- - librariesBuildArtifactName: 'libraries_bin_official_allconfigurations'
-
- - ${{ if eq(parameters.isOfficialBuild, 'true') }}:
+ - ${{ if eq(parameters.isOfficialBuild, true) }}:
- _msbuildCommonParameters: /p:OfficialBuildId=$(Build.BuildNumber)
- _runtimeArtifactName: ''
@@ -96,7 +87,7 @@ jobs:
- _runtimeDownloadPath: '$(Build.SourcesDirectory)/artifacts/transport/${{ parameters.runtimeFlavor }}'
- _runtimeConfigurationArg: -rc ${{ parameters.liveRuntimeBuildConfig }}
- ${{ if eq(parameters.runTests, true) }}:
- - _runtimeArtifactName: '$(runtimeFlavorName)Product_${{ parameters.pgoType }}_${{ parameters.runtimeVariant}}_${{ parameters.osGroup }}${{ parameters.osSubgroup }}_${{ parameters.archType }}_${{ parameters.liveRuntimeBuildConfig }}'
+ - _runtimeArtifactName: '$(runtimeFlavorName)Product_${{ parameters.runtimeVariant}}_${{ parameters.osGroup }}${{ parameters.osSubgroup }}_${{ parameters.archType }}_${{ parameters.liveRuntimeBuildConfig }}'
- _runtimeArtifactsPathArg: ' /p:RuntimeArtifactsPath=$(_runtimeDownloadPath)'
- ${{ if eq(parameters.testDisplayName, '') }}:
- _testRunNamePrefixSuffix: $(runtimeFlavorName)_${{ parameters.liveRuntimeBuildConfig }}
@@ -140,4 +131,22 @@ jobs:
artifactName: '$(_runtimeArtifactName)'
displayName: '$(runtimeFlavorName) build drop'
+ - ${{ if ne(variables['System.TeamProject'], 'public') }}:
+ - ${{ if ne(parameters.osGroup, 'windows') }}:
+ - task: Bash@3
+ displayName: Setup Private Feeds Credentials
+ inputs:
+ filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.sh
+ arguments: $(Build.SourcesDirectory)/NuGet.config $Token
+ env:
+ Token: $(dn-bot-dnceng-artifact-feeds-rw)
+ - ${{ if eq(parameters.osGroup, 'windows') }}:
+ - task: PowerShell@2
+ displayName: Setup Private Feeds Credentials
+ inputs:
+ filePath: $(Build.SourcesDirectory)/eng/common/SetupNugetSources.ps1
+ arguments: -ConfigFile $(Build.SourcesDirectory)/NuGet.config -Password $Env:Token
+ env:
+ Token: $(dn-bot-dnceng-artifact-feeds-rw)
+
- ${{ parameters.steps }}
diff --git a/eng/pipelines/libraries/build-job.yml b/eng/pipelines/libraries/build-job.yml
index 4faaff1ac7036a..7577004470f945 100644
--- a/eng/pipelines/libraries/build-job.yml
+++ b/eng/pipelines/libraries/build-job.yml
@@ -8,29 +8,17 @@ parameters:
crossrootfsDir: ''
framework: 'net6.0'
isOfficialBuild: false
- isOfficialAllConfigurations: false
runtimeVariant: ''
platform: ''
-
- # When set to a non-empty value (Debug / Release), it determines the runtime's
- # build configuration to use for building libraries and tests. Setting this
- # property implies a dependency of this job on the appropriate runtime build
- # and is used to construct the name of the Azure artifact representing
- # runtime build to use for building the libraries and library tests.
- liveRuntimeBuildConfig: ''
- runtimeFlavor: 'coreclr'
+ testScope: ''
timeoutInMinutes: 150
- preBuildSteps: []
container: ''
condition: true
dependOnEvaluatePaths: false
shouldContinueOnError: false
variables: {}
pool: ''
- runTests: false
- useHelix: true
- testScope: ''
testBuildPlatforms: []
jobs:
@@ -44,12 +32,9 @@ jobs:
crossrootfsDir: ${{ parameters.crossrootfsDir }}
framework: ${{ parameters.framework }}
isOfficialBuild: ${{ parameters.isOfficialBuild }}
- isOfficialAllConfigurations: ${{ parameters.isOfficialAllConfigurations }}
- liveRuntimeBuildConfig: ${{ parameters.liveRuntimeBuildConfig }}
runtimeFlavor: ${{ parameters.runtimeFlavor }}
- runTests: ${{ parameters.runTests }}
+ runTests: false
timeoutInMinutes: ${{ parameters.timeoutInMinutes }}
- preBuildSteps: ${{ parameters.preBuildSteps }}
container: ${{ parameters.container }}
condition: ${{ parameters.condition }}
dependOnEvaluatePaths: ${{ parameters.dependOnEvaluatePaths }}
@@ -59,34 +44,15 @@ jobs:
name: build
displayName: 'Build'
- ${{ if and(ne(parameters.liveRuntimeBuildConfig, ''), eq(parameters.runTests, true)) }}:
- dependsOn:
- # Use full product dependency for test runs
- - ${{ format('{0}_{1}_product_build_{2}{3}_{4}_{5}', parameters.runtimeFlavor, parameters.runtimeVariant, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.liveRuntimeBuildConfig) }}
-
variables:
- librariesTestsArtifactName: ${{ format('libraries_test_assets_{0}_{1}_{2}', parameters.osGroup, parameters.archType, parameters.buildConfig) }}
- - _subset: libs
+ - _subset: libs+libs.tests
- _buildAction: ''
- - _additionalBuildArguments: ''
- - ${{ parameters.variables }}
-
- # Tests only run for 'allConfiguration' and 'net48' build-jobs
- # If platform is in testBuildPlatforms we build tests as well.
- - ${{ if or(eq(parameters.runTests, true), containsValue(parameters.testBuildPlatforms, parameters.platform)) }}:
- - _subset: libs+libs.tests
- - ${{ if eq(parameters.useHelix, false) }}:
- - _buildAction: -restore -build -test
- - ${{ if eq(parameters.useHelix, true) }}:
- - _additionalBuildArguments: /p:ArchiveTests=true
-
+ - _additionalBuildArguments: '/p:ArchiveTests=true'
- ${{ parameters.variables }}
steps:
- - ${{ if eq(parameters.isOfficialBuild, true) }}:
- - template: /eng/pipelines/common/restore-internal-tools.yml
-
- - ${{ if in(parameters.osGroup, 'OSX', 'iOS', 'tvOS') }}:
+ - ${{ if in(parameters.osGroup, 'OSX', 'MacCatalyst', 'iOS', 'iOSSimulator', 'tvOS', 'tvOSSimulator') }}:
- script: $(Build.SourcesDirectory)/eng/install-native-dependencies.sh ${{ parameters.osGroup }} ${{ parameters.archType }} azDO
displayName: Install Build Dependencies
@@ -108,55 +74,26 @@ jobs:
df -h
displayName: Disk Usage after Build
- - ${{ if eq(parameters.runTests, false) }}:
- - template: /eng/pipelines/libraries/prepare-for-bin-publish.yml
- parameters:
- isOfficialBuild: ${{ parameters.isOfficialBuild }}
-
- - template: /eng/pipelines/common/upload-artifact-step.yml
- parameters:
- rootFolder: $(Build.ArtifactStagingDirectory)/artifacts
- includeRootFolder: false
- archiveType: $(archiveType)
- archiveExtension: $(archiveExtension)
- tarCompression: $(tarCompression)
- artifactName: $(librariesBuildArtifactName)
- displayName: Build Assets
-
- - ${{ if containsValue(parameters.testBuildPlatforms, parameters.platform) }}:
- - template: /eng/pipelines/common/upload-artifact-step.yml
- parameters:
- rootFolder: $(Build.SourcesDirectory)/artifacts/helix
- includeRootFolder: true
- archiveType: $(archiveType)
- archiveExtension: $(archiveExtension)
- tarCompression: $(tarCompression)
- artifactName: $(librariesTestsArtifactName)
- displayName: Test Assets
-
- # Save AllConfigurations artifacts using the prepare-signed-artifacts format. The
- # platform-specific jobs' nupkgs automatically flow through the matching platform-specific
- # Installer build, but AllConfigurations should only be uploaded once, here.
- - ${{ if eq(parameters.isOfficialAllConfigurations, true) }}:
- - template: /eng/pipelines/common/upload-intermediate-artifacts-step.yml
- parameters:
- name: Libraries_AllConfigurations
- publishPackagesCondition: >-
- or(
- eq(variables['_librariesBuildProducedPackages'], true),
- eq(variables['Build.SourceBranchName'], 'main'),
- eq(variables['System.PullRequest.TargetBranch'], 'main'))
-
- - ${{ if and(eq(parameters.runTests, true), eq(parameters.useHelix, true)) }}:
- - template: /eng/pipelines/libraries/helix.yml
- parameters:
- osGroup: ${{ parameters.osGroup }}
- targetRid: ${{ parameters.targetRid }}
- archType: ${{ parameters.archType }}
- buildConfig: ${{ parameters.buildConfig }}
- helixQueues: ${{ parameters.helixQueues }}
- testScope: ${{ parameters.testScope }}
- shouldContinueOnError: ${{ parameters.shouldContinueOnError }}
- creator: dotnet-bot
- testRunNamePrefixSuffix: $(_testRunNamePrefixSuffix)
- extraHelixArguments: $(_extraHelixArguments)
+ - template: /eng/pipelines/libraries/prepare-for-bin-publish.yml
+
+ - template: /eng/pipelines/common/upload-artifact-step.yml
+ parameters:
+ rootFolder: $(Build.ArtifactStagingDirectory)/artifacts
+ includeRootFolder: false
+ archiveType: $(archiveType)
+ archiveExtension: $(archiveExtension)
+ tarCompression: $(tarCompression)
+ artifactName: $(librariesBuildArtifactName)
+ displayName: Build Assets
+
+ # Upload test assets
+ # We'll pull them down in another job to send to Helix
+ - template: /eng/pipelines/common/upload-artifact-step.yml
+ parameters:
+ rootFolder: $(Build.SourcesDirectory)/artifacts/helix
+ includeRootFolder: true
+ archiveType: $(archiveType)
+ archiveExtension: $(archiveExtension)
+ tarCompression: $(tarCompression)
+ artifactName: $(librariesTestsArtifactName)
+ displayName: Test Assets
\ No newline at end of file
diff --git a/eng/pipelines/libraries/enterprise/linux.yml b/eng/pipelines/libraries/enterprise/linux.yml
index 754b533564e3f4..6254a2d9c17ae4 100644
--- a/eng/pipelines/libraries/enterprise/linux.yml
+++ b/eng/pipelines/libraries/enterprise/linux.yml
@@ -18,9 +18,6 @@ pr:
- src/libraries/System.Net.Http/*
- src/libraries/System.Net.Security/*
-pool:
- vmImage: 'ubuntu-16.04'
-
variables:
- template: ../variables.yml
- name: enterpriseTestsSetup
@@ -30,45 +27,54 @@ variables:
- name: containerLibrariesRoot
value: /repo/src/libraries
-steps:
-- bash: |
- cd $(enterpriseTestsSetup)
- docker-compose build
- displayName: Build test machine images
- env:
- DOTNET_RUNTIME_REPO_ROOT: $(Build.SourcesDirectory)
+jobs:
+- job: EnterpriseLinuxTests
+ timeoutInMinutes: 120
+ pool:
+ name: NetCore-Svc-Public
+ demands: ImageOverride -equals Build.Ubuntu.1804.Amd64.Open
+ steps:
+ - bash: |
+ cd $(enterpriseTestsSetup)
+ docker-compose build
+ displayName: Build test machine images
+ env:
+ DOTNET_RUNTIME_REPO_ROOT: $(Build.SourcesDirectory)
-- bash: |
- cd $(enterpriseTestsSetup)
- docker-compose up -d
- displayName: Start test network and machines
- env:
- DOTNET_RUNTIME_REPO_ROOT: $(Build.SourcesDirectory)
+ - bash: |
+ cd $(enterpriseTestsSetup)
+ docker-compose up -d
+ displayName: Start test network and machines
+ env:
+ DOTNET_RUNTIME_REPO_ROOT: $(Build.SourcesDirectory)
-- bash: |
- docker exec linuxclient bash /setup/test-webserver.sh
- displayName: Test linuxclient connection to web server
+ - bash: |
+ docker exec linuxclient bash /setup/test-webserver.sh
+ displayName: Test linuxclient connection to web server
-- bash: |
- docker exec linuxclient bash -c '/repo/build.sh -subset clr+libs -runtimeconfiguration release -ci'
- displayName: Build product sources
+ - bash: |
+ docker exec linuxclient bash -c '/repo/build.sh -subset clr+libs -runtimeconfiguration release -ci /p:NoPgoOptimize=true'
+ docker exec linuxclient bash -c '/repo/dotnet.sh build $(containerLibrariesRoot)/System.Net.Http/tests/EnterpriseTests/System.Net.Http.Enterprise.Tests.csproj'
+ docker exec linuxclient bash -c '/repo/dotnet.sh build $(containerLibrariesRoot)/System.Net.Security/tests/EnterpriseTests/System.Net.Security.Enterprise.Tests.csproj'
+ displayName: Build product sources
-- bash: |
- docker exec linuxclient $(containerRunTestsCommand) $(containerLibrariesRoot)/System.Net.Http/tests/EnterpriseTests/System.Net.Http.Enterprise.Tests.csproj
- docker exec linuxclient $(containerRunTestsCommand) $(containerLibrariesRoot)/System.Net.Security/tests/EnterpriseTests/System.Net.Security.Enterprise.Tests.csproj
- displayName: Build and run tests
+ - bash: |
+ docker exec linuxclient bash -c 'if [ -f /erc/resolv.conf.ORI ]; then cp -f /erc/resolv.conf.ORI /etc/resolv.conf; fi'
+ docker exec linuxclient $(containerRunTestsCommand) $(containerLibrariesRoot)/System.Net.Http/tests/EnterpriseTests/System.Net.Http.Enterprise.Tests.csproj
+ docker exec linuxclient $(containerRunTestsCommand) $(containerLibrariesRoot)/System.Net.Security/tests/EnterpriseTests/System.Net.Security.Enterprise.Tests.csproj
+ displayName: Build and run tests
-- bash: |
- cd $(enterpriseTestsSetup)
- docker-compose down
- displayName: Stop test network and machines
- env:
- DOTNET_RUNTIME_REPO_ROOT: $(Build.SourcesDirectory)
+ - bash: |
+ cd $(enterpriseTestsSetup)
+ docker-compose down
+ displayName: Stop test network and machines
+ env:
+ DOTNET_RUNTIME_REPO_ROOT: $(Build.SourcesDirectory)
-- task: PublishTestResults@2
- inputs:
- testRunner: 'xUnit'
- testResultsFiles: '**/testResults.xml'
- testRunTitle: 'Enterprise Tests'
- mergeTestResults: true
- failTaskOnFailedTests: true
+ - task: PublishTestResults@2
+ inputs:
+ testRunner: 'xUnit'
+ testResultsFiles: '**/testResults.xml'
+ testRunTitle: 'Enterprise Tests'
+ mergeTestResults: true
+ failTaskOnFailedTests: true
diff --git a/eng/pipelines/libraries/helix-queues-setup.yml b/eng/pipelines/libraries/helix-queues-setup.yml
index b7690e833d2d25..28f9a23a04e6a0 100644
--- a/eng/pipelines/libraries/helix-queues-setup.yml
+++ b/eng/pipelines/libraries/helix-queues-setup.yml
@@ -29,61 +29,60 @@ jobs:
# Linux arm
- ${{ if eq(parameters.platform, 'Linux_arm') }}:
- ${{ if eq(parameters.jobParameters.isFullMatrix, true) }}:
- - (Debian.9.Arm32.Open)Ubuntu.1804.ArmArch.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-9-helix-arm32v7-bfcd90a-20200121150037
+ - (Debian.10.Arm32.Open)Ubuntu.1804.ArmArch.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-10-helix-arm32v7
+ - (Debian.11.Arm32.Open)Ubuntu.1804.ArmArch.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-11-helix-arm32v7
# Linux arm64
- ${{ if eq(parameters.platform, 'Linux_arm64') }}:
- ${{ if eq(parameters.jobParameters.isFullMatrix, true) }}:
- - (Ubuntu.1804.ArmArch.Open)Ubuntu.1804.ArmArch.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-16.04-helix-arm64v8-20210106155927-56c6673
+ - (Ubuntu.1804.Arm64.Open)Ubuntu.1804.ArmArch.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-18.04-helix-arm64v8
- ${{ if eq(parameters.jobParameters.isFullMatrix, false) }}:
- - (Ubuntu.1804.ArmArch.Open)Ubuntu.1804.ArmArch.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-16.04-helix-arm64v8-20210106155927-56c6673
+ - (Ubuntu.1804.Arm64.Open)Ubuntu.1804.ArmArch.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-18.04-helix-arm64v8
# Linux musl x64
- ${{ if eq(parameters.platform, 'Linux_musl_x64') }}:
- - ${{ if eq(parameters.jobParameters.isFullMatrix, false) }}:
- - (Alpine.312.Amd64.Open)ubuntu.1604.amd64.open@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.12-helix-20200602002622-e06dc59
+ - (Alpine.316.Amd64.Open)ubuntu.2204.amd64.open.svc@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.17-helix-amd64
- ${{ if eq(parameters.jobParameters.isFullMatrix, true) }}:
- - (Alpine.312.Amd64.Open)ubuntu.1604.amd64.open@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.12-helix-20200601195603-e06dc59
+ - (Alpine.319.Amd64.Open)ubuntu.2204.amd64.open.svc@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.19-helix-amd64
# Linux musl arm64
- - ${{ if eq(parameters.platform, 'Linux_musl_arm64') }}:
- - ${{ if eq(parameters.jobParameters.isFullMatrix, true) }}:
- - (Alpine.312.Arm64.Open)ubuntu.1804.armarch.open@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.12-helix-arm64v8-20200602002604-25f8a3e
+ - ${{ if and(eq(parameters.platform, 'Linux_musl_arm64'), eq(parameters.jobParameters.isFullMatrix, true)) }}:
+ - (Alpine.316.Arm64.Open)ubuntu.2204.armarch.open@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.17-helix-arm64v8
+ - (Alpine.319.Arm64.Open)ubuntu.2204.armarch.open@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.19-helix-arm64v8
# Linux x64
- ${{ if eq(parameters.platform, 'Linux_x64') }}:
- ${{ if and(eq(parameters.jobParameters.interpreter, ''), ne(parameters.jobParameters.isSingleFile, true)) }}:
- ${{ if and(eq(parameters.jobParameters.testScope, 'outerloop'), eq(parameters.jobParameters.runtimeFlavor, 'mono')) }}:
- - (Centos.8.Amd64.Open)Ubuntu.1604.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:centos-8-helix-20201229003624-c1bf759
- RedHat.7.Amd64.Open
- SLES.15.Amd64.Open
- - (Fedora.34.Amd64.Open)ubuntu.1604.amd64.open@mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-34-helix-20210728124700-4f64125
- - (Ubuntu.1910.Amd64.Open)ubuntu.1604.amd64.open@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-19.10-helix-amd64-cfcfd50-20191030180623
- - (Debian.10.Amd64.Open)ubuntu.1604.amd64.open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-10-helix-amd64-bfcd90a-20200121150006
+ - (Fedora.34.Amd64.Open)ubuntu.2204.amd64.open.svc@mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-34-helix
+ - ubuntu.2204.amd64.open.svc
+ - (Debian.10.Amd64.Open)ubuntu.2204.amd64.open.svc@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-10-helix-amd64
- ${{ if or(ne(parameters.jobParameters.testScope, 'outerloop'), ne(parameters.jobParameters.runtimeFlavor, 'mono')) }}:
- ${{ if eq(parameters.jobParameters.isFullMatrix, true) }}:
- - (Centos.8.Amd64.Open)Ubuntu.1604.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:centos-8-helix-20201229003624-c1bf759
+ - (Centos.7.Amd64.Open)Ubuntu.2204.Amd64.Open.svc@mcr.microsoft.com/dotnet-buildtools/prereqs:centos-7-mlnet-helix
- RedHat.7.Amd64.Open
- - Debian.9.Amd64.Open
- - Ubuntu.1604.Amd64.Open
- Ubuntu.1804.Amd64.Open
- SLES.12.Amd64.Open
- SLES.15.Amd64.Open
- - (Fedora.34.Amd64.Open)ubuntu.1604.amd64.open@mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-34-helix-20210728124700-4f64125
- - (Ubuntu.1910.Amd64.Open)ubuntu.1604.amd64.open@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-19.10-helix-amd64-cfcfd50-20191030180623
- - (Debian.10.Amd64.Open)ubuntu.1604.amd64.open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-10-helix-amd64-bfcd90a-20200121150006
- - (Mariner.1.0.Amd64.Open)ubuntu.1604.amd64.open@mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-1.0-helix-20210528192219-92bf620
+ - (Fedora.34.Amd64.Open)ubuntu.2204.amd64.open.svc@mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-34-helix
+ - ubuntu.2204.amd64.open.svc
+ - (Debian.10.Amd64.Open)Ubuntu.1804.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-10-helix-amd64
+ - (Debian.11.Amd64.Open)Ubuntu.1804.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-11-helix-amd64
+ - (Mariner.1.0.Amd64.Open)ubuntu.2204.amd64.open.svc@mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-1.0-helix
- ${{ if eq(parameters.jobParameters.isFullMatrix, false) }}:
- - (Centos.8.Amd64.Open)Ubuntu.1604.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:centos-8-helix-20201229003624-c1bf759
+ - (Centos.7.Amd64.Open)Ubuntu.2204.Amd64.Open.svc@mcr.microsoft.com/dotnet-buildtools/prereqs:centos-7-mlnet-helix
- RedHat.7.Amd64.Open
- - (Debian.10.Amd64.Open)ubuntu.1604.amd64.open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-10-helix-amd64-bfcd90a-20200121150006
- - Ubuntu.1604.Amd64.Open
+ - (Debian.10.Amd64.Open)Ubuntu.1804.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-10-helix-amd64
- Ubuntu.1804.Amd64.Open
- - SLES.15.Amd64.Open
- - (Fedora.34.Amd64.Open)ubuntu.1604.amd64.open@mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-34-helix-20210728124700-4f64125
- ${{ if or(eq(parameters.jobParameters.interpreter, 'true'), eq(parameters.jobParameters.isSingleFile, true)) }}:
# Limiting interp runs as we don't need as much coverage.
- - Debian.9.Amd64.Open
+ - (Debian.10.Amd64.Open)Ubuntu.1804.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-10-helix-amd64
+
+ # Linux s390x
+ - ${{ if eq(parameters.platform, 'Linux_s390x') }}:
+ - Ubuntu.2004.S390X.Experimental.Open
# OSX arm64
- ${{ if eq(parameters.platform, 'OSX_arm64') }}:
@@ -91,17 +90,11 @@ jobs:
# OSX x64
- ${{ if eq(parameters.platform, 'OSX_x64') }}:
- - ${{ if eq(parameters.jobParameters.isFullMatrix, true) }}:
- - OSX.1013.Amd64.Open
- - OSX.1014.Amd64.Open
- - OSX.1015.Amd64.Open
- - ${{ if eq(parameters.jobParameters.isFullMatrix, false) }}:
- - OSX.1014.Amd64.Open
- - OSX.1015.Amd64.Open
+ - OSX.1200.Amd64.Open
# Android
- ${{ if in(parameters.platform, 'Android_x86', 'Android_x64') }}:
- - Ubuntu.1804.Amd64.Android.Open
+ - Ubuntu.1804.Amd64.Android.29.Open
- ${{ if in(parameters.platform, 'Android_arm', 'Android_arm64') }}:
- Windows.10.Amd64.Android.Open
@@ -111,15 +104,15 @@ jobs:
# iOS/tvOS simulator x64/x86 & MacCatalyst x64
- ${{ if in(parameters.platform, 'iOSSimulator_x64', 'iOSSimulator_x86', 'tvOSSimulator_x64', 'MacCatalyst_x64') }}:
- - OSX.1015.Amd64.Open
+ - OSX.1200.Amd64.Open
# iOS devices
- ${{ if in(parameters.platform, 'iOS_arm64') }}:
- - OSX.1015.Amd64.Iphone.Open
+ - OSX.13.Amd64.Iphone.Open
# tvOS devices
- ${{ if in(parameters.platform, 'tvOS_arm64') }}:
- - OSX.1015.Amd64.AppleTV.Open
+ - OSX.13.Amd64.AppleTV.Open
# windows x64
- ${{ if eq(parameters.platform, 'windows_x64') }}:
@@ -127,57 +120,55 @@ jobs:
- ${{ if notIn(parameters.jobParameters.framework, 'net48') }}:
- ${{ if and(eq(parameters.jobParameters.testScope, 'outerloop'), eq(parameters.jobParameters.runtimeFlavor, 'mono')) }}:
- Windows.81.Amd64.Open
- - Windows.10.Amd64.Server19H1.Open
+ - Windows.Amd64.Server2022.Open
- ${{ if or(ne(parameters.jobParameters.testScope, 'outerloop'), ne(parameters.jobParameters.runtimeFlavor, 'mono')) }}:
- ${{ if eq(parameters.jobParameters.isFullMatrix, true) }}:
- Windows.81.Amd64.Open
- Windows.10.Amd64.ServerRS5.Open
- - Windows.10.Amd64.Server19H1.Open
+ - Windows.Amd64.Server2022.Open
- ${{ if ne(parameters.jobParameters.runtimeFlavor, 'mono') }}:
- - (Windows.Nano.1809.Amd64.Open)windows.10.amd64.serverrs5.open@mcr.microsoft.com/dotnet-buildtools/prereqs:nanoserver-1809-helix-amd64-08e8e40-20200107182504
- - (Windows.Server.Core.1909.Amd64.Open)windows.10.amd64.server20h1.open@mcr.microsoft.com/dotnet-buildtools/prereqs:windowsservercore-2004-helix-amd64-20200904200251-272704c
+ - (Windows.Nano.1809.Amd64.Open)windows.10.amd64.serverrs5.open@mcr.microsoft.com/dotnet-buildtools/prereqs:nanoserver-1809-helix-amd64
+ - (Windows.Server.Core.ltsc2022.Open)windows.amd64.server2022.open@mcr.microsoft.com/dotnet-buildtools/prereqs:windowsservercore-ltsc2022-helix-amd64
- ${{ if ne(parameters.jobParameters.isFullMatrix, true) }}:
- Windows.81.Amd64.Open
- - Windows.10.Amd64.Server19H1.ES.Open
+ - Windows.Amd64.Server2022.Open
+ - Windows.11.Amd64.Client.Open
- ${{ if eq(parameters.jobParameters.testScope, 'outerloop') }}:
- - (Windows.Server.Core.1909.Amd64.Open)windows.10.amd64.server20h1.open@mcr.microsoft.com/dotnet-buildtools/prereqs:windowsservercore-2004-helix-amd64-20200904200251-272704c
+ - (Windows.Server.Core.ltsc2022.Open)windows.amd64.server2022.open@mcr.microsoft.com/dotnet-buildtools/prereqs:windowsservercore-ltsc2022-helix-amd64
- ${{ if ne(parameters.jobParameters.runtimeFlavor, 'mono') }}:
- - (Windows.Nano.1809.Amd64.Open)windows.10.amd64.serverrs5.open@mcr.microsoft.com/dotnet-buildtools/prereqs:nanoserver-1809-helix-amd64-08e8e40-20200107182504
+ - (Windows.Nano.1809.Amd64.Open)windows.10.amd64.serverrs5.open@mcr.microsoft.com/dotnet-buildtools/prereqs:nanoserver-1809-helix-amd64
# .NETFramework
- ${{ if eq(parameters.jobParameters.framework, 'net48') }}:
- - Windows.10.Amd64.Client19H1.Open
+ - Windows.10.Amd64.Client.Open
# windows x86
- ${{ if eq(parameters.platform, 'windows_x86') }}:
# netcoreapp
- ${{ if notIn(parameters.jobParameters.framework, 'net48') }}:
- ${{ if and(eq(parameters.jobParameters.testScope, 'outerloop'), eq(parameters.jobParameters.runtimeFlavor, 'mono')) }}:
- - Windows.7.Amd64.Open
- Windows.10.Amd64.ServerRS5.Open
- ${{ if or(ne(parameters.jobParameters.testScope, 'outerloop'), ne(parameters.jobParameters.runtimeFlavor, 'mono')) }}:
- ${{ if eq(parameters.jobParameters.isFullMatrix, true) }}:
- - Windows.7.Amd64.Open
- Windows.10.Amd64.ServerRS5.Open
- - Windows.10.Amd64.Server19H1.Open
+ - Windows.Amd64.Server2022.Open
- ${{ if ne(parameters.jobParameters.isFullMatrix, true) }}:
- ${{ if eq(parameters.jobParameters.buildConfig, 'Release') }}:
- - Windows.10.Amd64.Server19H1.ES.Open
+ - Windows.Amd64.Server2022.Open
- ${{ if eq(parameters.jobParameters.buildConfig, 'Debug') }}:
- - Windows.7.Amd64.Open
- - Windows.10.Amd64.Server19H1.Open
+ - Windows.Amd64.Server2022.Open
# .NETFramework
- ${{ if eq(parameters.jobParameters.framework, 'net48') }}:
- - Windows.10.Amd64.Client19H1.Open
+ - Windows.10.Amd64.Client.Open
# windows arm
- ${{ if eq(parameters.platform, 'windows_arm') }}:
- - Windows.10.Arm64v8.Open
+ - Windows.11.Arm64.Open
# windows arm64
- ${{ if eq(parameters.platform, 'windows_arm64') }}:
- - Windows.10.Arm64.Open
+ - Windows.11.Arm64.Open
# WebAssembly
- ${{ if eq(parameters.platform, 'Browser_wasm') }}:
@@ -185,6 +176,6 @@ jobs:
# WebAssembly windows
- ${{ if eq(parameters.platform, 'Browser_wasm_win') }}:
- - (Windows.Server.Core.1909.Amd64.Open)windows.10.amd64.server20h1.open@mcr.microsoft.com/dotnet-buildtools/prereqs:windowsservercore-2004-helix-webassembly-amd64-20210702131541-6837048
+ - (Windows.Amd64.Server2022.Open)windows.amd64.server2022.open@mcr.microsoft.com/dotnet-buildtools/prereqs:windowsservercore-ltsc2022-helix-webassembly
${{ insert }}: ${{ parameters.jobParameters }}
diff --git a/eng/pipelines/libraries/helix.yml b/eng/pipelines/libraries/helix.yml
index a8b6517efeb874..cb3b70890fd590 100644
--- a/eng/pipelines/libraries/helix.yml
+++ b/eng/pipelines/libraries/helix.yml
@@ -26,7 +26,6 @@ steps:
/p:TestScope=${{ parameters.testScope }}
/p:TestRunNamePrefixSuffix=${{ parameters.testRunNamePrefixSuffix }}
/p:HelixBuild=$(Build.BuildNumber)
- /p:Creator=${{ parameters.creator }}
${{ parameters.extraHelixArguments }}
/bl:$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)/SendToHelix.binlog
displayName: Send to Helix
@@ -34,5 +33,12 @@ steps:
continueOnError: ${{ eq(parameters.shouldContinueOnError, true) }}
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken) # We need to set this env var to publish helix results to Azure Dev Ops
- HelixTargetQueues: ${{ join('+', parameters.helixQueues) }} # Pass queues to MSBuild as env var to avoid need of escaping them
_Scenarios: ${{ join(',', parameters.scenarios) }} # Pass scenarios to MSBuild as env var to avoid need of escaping comma separated list
+
+ ${{ if eq(variables['System.TeamProject'], 'internal') }}:
+ HelixAccessToken: $(HelixApiAccessToken)
+ HelixTargetQueues: ${{ replace(lower(join('+', parameters.helixQueues)), '.open', '') }}
+ Creator: ''
+ ${{ if eq(variables['System.TeamProject'], 'public') }}:
+ HelixTargetQueues: ${{ join('+', parameters.helixQueues) }}
+ Creator: ${{ parameters.creator }}
diff --git a/eng/pipelines/libraries/outerloop-mono.yml b/eng/pipelines/libraries/outerloop-mono.yml
index f73f0c1e03c323..7c944b2c9a5072 100644
--- a/eng/pipelines/libraries/outerloop-mono.yml
+++ b/eng/pipelines/libraries/outerloop-mono.yml
@@ -36,13 +36,14 @@ jobs:
timeoutInMinutes: 180
isFullMatrix: ${{ variables['isFullMatrix'] }}
# extra steps, run tests
- extraStepsTemplate: /eng/pipelines/libraries/helix.yml
- extraStepsParameters:
- scenarios:
- - wasmtestonbrowser
- testScope: outerloop
- creator: dotnet-bot
- testRunNamePrefixSuffix: Mono_$(_BuildConfig)
+ postBuildSteps:
+ - template: /eng/pipelines/libraries/helix.yml
+ parameters:
+ scenarios:
+ - wasmtestonbrowser
+ testScope: outerloop
+ creator: dotnet-bot
+ testRunNamePrefixSuffix: Mono_$(_BuildConfig)
- ${{ if eq(variables['isFullMatrix'], false) }}:
- template: /eng/pipelines/common/platform-matrix.yml
@@ -63,8 +64,9 @@ jobs:
timeoutInMinutes: 180
isFullMatrix: ${{ variables['isFullMatrix'] }}
# extra steps, run tests
- extraStepsTemplate: /eng/pipelines/libraries/helix.yml
- extraStepsParameters:
- testScope: outerloop
- creator: dotnet-bot
- testRunNamePrefixSuffix: Mono_$(_BuildConfig)
+ postBuildSteps:
+ - template: /eng/pipelines/libraries/helix.yml
+ parameters:
+ testScope: outerloop
+ creator: dotnet-bot
+ testRunNamePrefixSuffix: Mono_$(_BuildConfig)
diff --git a/eng/pipelines/libraries/run-test-job.yml b/eng/pipelines/libraries/run-test-job.yml
index 3e9d2de85f49fb..90235ef9921fc8 100644
--- a/eng/pipelines/libraries/run-test-job.yml
+++ b/eng/pipelines/libraries/run-test-job.yml
@@ -55,11 +55,11 @@ jobs:
testDisplayName: ${{ parameters.runtimeFlavor }}_interpreter_${{ parameters.liveRuntimeBuildConfig }}
# To run the tests we just send to helix and wait, use ubuntu hosted pools for faster providing and to not back up our build pools
- ${{ if startsWith(parameters.pool.queue, 'BuildPool.Ubuntu') }}:
+ ${{ if startsWith(parameters.pool.queue, 'Build.Ubuntu') }}:
pool:
vmImage: 'ubuntu-latest'
- ${{ if not(startsWith(parameters.pool.queue, 'BuildPool.Ubuntu')) }}:
+ ${{ if not(startsWith(parameters.pool.queue, 'Build.Ubuntu')) }}:
pool: ${{ parameters.pool }}
dependOnEvaluatePaths: ${{ parameters.dependOnEvaluatePaths }}
@@ -67,11 +67,7 @@ jobs:
- ${{ if ne(parameters.dependsOn[0], '') }}:
- ${{ parameters.dependsOn }}
- ${{ if eq(parameters.dependsOn[0], '') }}:
- - ${{ if notIn(parameters.framework, 'allConfigurations', 'net48') }}:
- - ${{ format('libraries_build_{0}{1}_{2}_{3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
- # tests are built as part of product build
- - ${{ if or(ne(parameters.archType, parameters.dependsOnTestArchitecture), ne(parameters.buildConfig, parameters.dependsOnTestBuildConfiguration), ne(parameters.osSubgroup, parameters.dependsOnTestOsSubgroup)) }}:
- - ${{ format('libraries_build_{0}{1}_{2}_{3}', parameters.osGroup, parameters.dependsOnTestOsSubgroup, parameters.dependsOnTestArchitecture, parameters.dependsOnTestBuildConfiguration) }}
+ - ${{ format('libraries_build_{0}{1}_{2}_{3}', parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.buildConfig) }}
- ${{ if ne(parameters.liveRuntimeBuildConfig, '') }}:
- ${{ format('{0}_{1}_product_build_{2}{3}_{4}_{5}', parameters.runtimeFlavor, parameters.runtimeVariant, parameters.osGroup, parameters.osSubgroup, parameters.archType, parameters.liveRuntimeBuildConfig) }}
@@ -98,6 +94,10 @@ jobs:
artifactFileName: $(librariesTestsArtifactName)$(archiveExtension)
unpackFolder: $(Build.SourcesDirectory)/artifacts
+ - ${{ if in(parameters.osGroup, 'OSX', 'MacCatalyst', 'iOS', 'iOSSimulator', 'tvOS', 'tvOSSimulator') }}:
+ - script: $(Build.SourcesDirectory)/eng/install-native-dependencies.sh ${{ parameters.osGroup }}
+ displayName: Install Build Dependencies
+
- ${{ if in(parameters.coreclrTestGroup, 'gcstress0x3-gcstress0xc', 'gcstress-extra') }}:
# We need to find and download the GC stress dependencies (namely, coredistools). Put them
# in the 'sharedFramework' directory where we unpacked the CoreCLR build artifacts. The 'sharedFramework'
diff --git a/eng/pipelines/libraries/stress/http.yml b/eng/pipelines/libraries/stress/http.yml
index ba3a9f875f9e92..14e7161e7a30e9 100644
--- a/eng/pipelines/libraries/stress/http.yml
+++ b/eng/pipelines/libraries/stress/http.yml
@@ -11,6 +11,7 @@ schedules:
branches:
include:
- main
+ - release/6.0
variables:
- template: ../variables.yml
@@ -27,8 +28,8 @@ jobs:
displayName: Docker Linux
timeoutInMinutes: 180
pool:
- name: NetCorePublic-Pool
- queue: BuildPool.Ubuntu.1804.Amd64.Open
+ name: NetCore-Svc-Public
+ demands: ImageOverride -equals Build.Ubuntu.1804.Amd64.Open
steps:
- checkout: self
@@ -75,8 +76,8 @@ jobs:
displayName: Docker NanoServer
timeoutInMinutes: 150
pool:
- name: NetCorePublic-Pool
- queue: BuildPool.Server.Amd64.VS2019.Open
+ name: NetCore-Svc-Public
+ demands: ImageOverride -equals windows.vs2019.amd64.open
steps:
- checkout: self
diff --git a/eng/pipelines/libraries/stress/ssl.yml b/eng/pipelines/libraries/stress/ssl.yml
index b0a654ba4d9dc8..0c080d62d374b6 100644
--- a/eng/pipelines/libraries/stress/ssl.yml
+++ b/eng/pipelines/libraries/stress/ssl.yml
@@ -11,6 +11,7 @@ schedules:
branches:
include:
- main
+ - release/6.0
variables:
- template: ../variables.yml
@@ -28,8 +29,8 @@ jobs:
displayName: Docker Linux
timeoutInMinutes: 120
pool:
- name: NetCorePublic-Pool
- queue: BuildPool.Ubuntu.1804.Amd64.Open
+ name: NetCore-Svc-Public
+ demands: ImageOverride -equals Build.Ubuntu.1804.Amd64.Open
steps:
- checkout: self
@@ -53,8 +54,8 @@ jobs:
displayName: Docker NanoServer
timeoutInMinutes: 120
pool:
- name: NetCorePublic-Pool
- queue: BuildPool.Server.Amd64.VS2019.Open
+ name: NetCore-Svc-Public
+ demands: ImageOverride -equals windows.vs2019.amd64.open
steps:
- checkout: self
diff --git a/eng/pipelines/mono/templates/build-job.yml b/eng/pipelines/mono/templates/build-job.yml
index bdb15a09a665e5..a09a601c6c2d9e 100644
--- a/eng/pipelines/mono/templates/build-job.yml
+++ b/eng/pipelines/mono/templates/build-job.yml
@@ -16,7 +16,6 @@ parameters:
dependsOn: []
monoCrossAOTTargetOS: []
dependOnEvaluatePaths: false
- pgoType: ''
### Product build
jobs:
@@ -65,7 +64,7 @@ jobs:
value: '+mono.mscordbi'
- name: darwinFrameworks
value: ''
- - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}:
+ - ${{ if eq(parameters.isOfficialBuild, true) }}:
- name: officialBuildIdArg
value: '/p:officialBuildId=$(Build.BuildNumber)'
- ${{ if and(eq(parameters.osSubgroup, '_musl'), eq(parameters.osGroup, 'Linux')) }}:
@@ -123,7 +122,7 @@ jobs:
# Linux builds use docker images with dependencies preinstalled,
# and FreeBSD builds use a build agent with dependencies
# preinstalled, so we only need this step for OSX and Windows.
- - ${{ if in(parameters.osGroup, 'OSX', 'iOS', 'tvOS') }}:
+ - ${{ if in(parameters.osGroup, 'OSX', 'MacCatalyst', 'iOS', 'iOSSimulator', 'tvOS', 'tvOSSimulator') }}:
- script: $(Build.SourcesDirectory)/eng/install-native-dependencies.sh $(osGroup) ${{ parameters.archType }} azDO
displayName: Install native dependencies
- ${{ if eq(parameters.osGroup, 'windows') }}:
diff --git a/eng/pipelines/mono/templates/generate-offsets.yml b/eng/pipelines/mono/templates/generate-offsets.yml
index cbb05aaafff99c..c8bdebd7cf0468 100644
--- a/eng/pipelines/mono/templates/generate-offsets.yml
+++ b/eng/pipelines/mono/templates/generate-offsets.yml
@@ -41,7 +41,7 @@ jobs:
value: ${{ parameters.osSubGroup }}
- name: officialBuildIdArg
value: ''
- - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}:
+ - ${{ if eq(parameters.isOfficialBuild, true) }}:
- name: officialBuildIdArg
value: '/p:officialBuildId=$(Build.BuildNumber)'
- name: osOverride
@@ -56,7 +56,7 @@ jobs:
# Linux builds use docker images with dependencies preinstalled,
# and FreeBSD builds use a build agent with dependencies
# preinstalled, so we only need this step for OSX and Windows.
- - ${{ if in(parameters.osGroup, 'OSX', 'iOS', 'tvOS') }}:
+ - ${{ if in(parameters.osGroup, 'OSX', 'MacCatalyst', 'iOS', 'iOSSimulator', 'tvOS', 'tvOSSimulator') }}:
- script: $(Build.SourcesDirectory)/eng/install-native-dependencies.sh $(osGroup) ${{ parameters.archType }} azDO
displayName: Install native dependencies
- ${{ if eq(parameters.osGroup, 'windows') }}:
diff --git a/eng/pipelines/mono/templates/workloads-build.yml b/eng/pipelines/mono/templates/workloads-build.yml
index a6b6e759306880..f213f3c3bd1f6e 100644
--- a/eng/pipelines/mono/templates/workloads-build.yml
+++ b/eng/pipelines/mono/templates/workloads-build.yml
@@ -39,7 +39,7 @@ jobs:
variables:
- name: officialBuildIdArg
value: ''
- - ${{ if and(eq(variables['System.TeamProject'], 'internal'), ne(variables['Build.Reason'], 'PullRequest')) }}:
+ - ${{ if eq(parameters.isOfficialBuild, true) }}:
- name: officialBuildIdArg
value: '/p:OfficialBuildId=$(Build.BuildNumber)'
- name: SignType
@@ -65,6 +65,10 @@ jobs:
IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NET.Runtime.MonoTargets.Sdk*.nupkg
IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NET.Runtime.MonoAOTCompiler.Task*.nupkg
IntermediateArtifacts/MonoRuntimePacks/Shipping/Microsoft.NET.Runtime.WebAssembly.Sdk*.nupkg
+ IntermediateArtifacts/windows_arm/Shipping/Microsoft.NETCore.App.Runtime.win-arm*.nupkg
+ IntermediateArtifacts/windows_arm64/Shipping/Microsoft.NETCore.App.Runtime.win-arm64*.nupkg
+ IntermediateArtifacts/windows_x64/Shipping/Microsoft.NETCore.App.Runtime.win-x64*.nupkg
+ IntermediateArtifacts/windows_x86/Shipping/Microsoft.NETCore.App.Runtime.win-x86*.nupkg
- task: CopyFiles@2
displayName: Flatten packages
diff --git a/eng/pipelines/mono/templates/xplat-pipeline-job.yml b/eng/pipelines/mono/templates/xplat-pipeline-job.yml
index 0b0ae5a28f6e64..5302b773181230 100644
--- a/eng/pipelines/mono/templates/xplat-pipeline-job.yml
+++ b/eng/pipelines/mono/templates/xplat-pipeline-job.yml
@@ -50,18 +50,18 @@ jobs:
variables:
- name: coreClrProductArtifactName
- value: 'CoreCLRProduct___$(osGroup)$(osSubgroup)_$(archType)_${{ parameters.liveRuntimeBuildConfig }}'
+ value: 'CoreCLRProduct__$(osGroup)$(osSubgroup)_$(archType)_${{ parameters.liveRuntimeBuildConfig }}'
- name: coreClrProductRootFolderPath
value: '$(Build.SourcesDirectory)/artifacts/bin/coreclr/$(osGroup).$(archType).$(liveRuntimeBuildConfigUpper)'
- name: buildProductArtifactName
- value: 'MonoProduct__${{ parameters.runtimeVariant }}_$(osGroup)$(osSubgroup)_$(archType)_$(buildConfig)'
+ value: 'MonoProduct_${{ parameters.runtimeVariant }}_$(osGroup)$(osSubgroup)_$(archType)_$(buildConfig)'
# minijit and monointerpreter do not use seperate product builds.
- ${{ if or(eq(parameters.runtimeVariant, 'minijit'), eq(parameters.runtimeVariant, 'monointerpreter')) }}:
- name : buildProductArtifactName
- value : 'MonoProduct___$(osGroup)$(osSubgroup)_$(archType)_$(buildConfig)'
+ value : 'MonoProduct__$(osGroup)$(osSubgroup)_$(archType)_$(buildConfig)'
- name: binTestsPath
value: '$(Build.SourcesDirectory)/artifacts/tests/coreclr'
diff --git a/eng/pipelines/mono/update-machine-certs.ps1 b/eng/pipelines/mono/update-machine-certs.ps1
index 1a6be78b199470..12e3a4d305a720 100644
--- a/eng/pipelines/mono/update-machine-certs.ps1
+++ b/eng/pipelines/mono/update-machine-certs.ps1
@@ -5,7 +5,7 @@ Try {
Try {
$Stream = New-Object System.Net.Security.SslStream($Conn.GetStream())
- $Stream.AuthenticateAsClient($WebsiteURL)
+ $Stream.AuthenticateAsClient($WebsiteURL, $null, [System.Security.Authentication.SslProtocols]::Tls12, $true)
$Cert = $Stream.Get_RemoteCertificate()
diff --git a/eng/pipelines/official/jobs/prepare-signed-artifacts.yml b/eng/pipelines/official/jobs/prepare-signed-artifacts.yml
index a5457d751ad03f..481c69dc68f6a0 100644
--- a/eng/pipelines/official/jobs/prepare-signed-artifacts.yml
+++ b/eng/pipelines/official/jobs/prepare-signed-artifacts.yml
@@ -2,15 +2,15 @@ parameters:
dependsOn: []
PublishRidAgnosticPackagesFromPlatform: ''
isOfficialBuild: false
- logArtifactName: 'Logs-PrepareSignedArtifacts'
+ logArtifactName: 'Logs-PrepareSignedArtifacts_Attempt$(System.JobAttempt)'
jobs:
- job: PrepareSignedArtifacts
displayName: Prepare Signed Artifacts
dependsOn: ${{ parameters.dependsOn }}
pool:
- name: NetCoreInternal-Pool
- queue: buildpool.windows.10.amd64.vs2019
+ name: NetCore1ESPool-Svc-Internal
+ demands: ImageOverride -equals windows.vs2019.amd64
# Double the default timeout.
timeoutInMinutes: 180
workspace:
@@ -26,7 +26,7 @@ jobs:
fetchDepth: 20
- ${{ if eq(parameters.isOfficialBuild, true) }}:
- - task: NuGetAuthenticate@0
+ - task: NuGetAuthenticate@1
- task: MicroBuildSigningPlugin@2
displayName: Install MicroBuild plugin for Signing
diff --git a/eng/pipelines/official/stages/publish.yml b/eng/pipelines/official/stages/publish.yml
index 10c6297566ad5a..98ae5d0ebc0986 100644
--- a/eng/pipelines/official/stages/publish.yml
+++ b/eng/pipelines/official/stages/publish.yml
@@ -19,7 +19,8 @@ stages:
publishUsingPipelines: true
dependsOn: PrepareSignedArtifacts
pool:
- vmImage: vs2017-win2016
+ name: NetCore1ESPool-Svc-Internal
+ demands: ImageOverride -equals windows.vs2019.amd64
# Stages-based publishing entry point
- template: /eng/common/templates/post-build/post-build.yml
diff --git a/eng/pipelines/runtime-community.yml b/eng/pipelines/runtime-community.yml
new file mode 100644
index 00000000000000..bce691fbc85687
--- /dev/null
+++ b/eng/pipelines/runtime-community.yml
@@ -0,0 +1,61 @@
+trigger: none
+
+schedules:
+ - cron: "0 7,19 * * *" # run at 7:00 and 19:00 (UTC) which is 23:00 and 11:00 (PST).
+ displayName: Runtime-community default schedule
+ branches:
+ include:
+ - main
+ - release/*.*
+ always: false # run only if there were changes since the last successful scheduled run.
+
+variables:
+ - template: /eng/pipelines/common/variables.yml
+
+jobs:
+#
+# Evaluate paths
+#
+- ${{ if eq(variables.dependOnEvaluatePaths, true) }}:
+ - template: /eng/pipelines/common/evaluate-default-paths.yml
+
+#
+# s390x
+# Build the whole product using Mono and run libraries tests
+#
+- template: /eng/pipelines/common/platform-matrix.yml
+ parameters:
+ jobTemplate: /eng/pipelines/common/global-build-job.yml
+ helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml
+ buildConfig: Release
+ runtimeFlavor: mono
+ platforms:
+ - Linux_s390x
+ variables:
+ # map dependencies variables to local variables
+ - name: librariesContainsChange
+ value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ]
+ - name: monoContainsChange
+ value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'] ]
+ jobParameters:
+ testGroup: innerloop
+ nameSuffix: AllSubsets_Mono
+ buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true
+ timeoutInMinutes: 180
+ condition: >-
+ or(
+ eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
+ eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true),
+ eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true),
+ eq(variables['isFullMatrix'], true))
+ # extra steps, run tests
+ postBuildSteps:
+ - template: /eng/pipelines/libraries/helix.yml
+ parameters:
+ creator: dotnet-bot
+ testRunNamePrefixSuffix: Mono_$(_BuildConfig)
+ condition: >-
+ or(
+ eq(variables['librariesContainsChange'], true),
+ eq(variables['monoContainsChange'], true),
+ eq(variables['isRollingBuild'], true))
diff --git a/eng/pipelines/runtime-linker-tests.yml b/eng/pipelines/runtime-linker-tests.yml
index 836b54c849ab5f..ba1151f9d6b7f5 100644
--- a/eng/pipelines/runtime-linker-tests.yml
+++ b/eng/pipelines/runtime-linker-tests.yml
@@ -60,7 +60,8 @@ jobs:
timeoutInMinutes: 120
nameSuffix: Runtime_Release
buildArgs: -s clr+libs -c $(_BuildConfig)
- extraStepsTemplate: /eng/pipelines/libraries/execute-trimming-tests-steps.yml
+ postBuildSteps:
+ - template: /eng/pipelines/libraries/execute-trimming-tests-steps.yml
#
# Build Release config vertical for Browser-wasm
@@ -76,6 +77,7 @@ jobs:
timeoutInMinutes: 120
nameSuffix: Runtime_Release
buildArgs: -s mono+libs -c $(_BuildConfig) -p:WasmBuildNative=false
- extraStepsTemplate: /eng/pipelines/libraries/execute-trimming-tests-steps.yml
- extraStepsParameters:
- extraTestArgs: '/p:WasmBuildNative=false'
+ postBuildSteps:
+ - template: /eng/pipelines/libraries/execute-trimming-tests-steps.yml
+ parameters:
+ extraTestArgs: '/p:WasmBuildNative=false'
diff --git a/eng/pipelines/runtime-official.yml b/eng/pipelines/runtime-official.yml
index 5cb49dafbd9eea..5079f67b772c2c 100644
--- a/eng/pipelines/runtime-official.yml
+++ b/eng/pipelines/runtime-official.yml
@@ -54,7 +54,10 @@ stages:
#
# Source Index Build
#
- - template: ./source-index.yml
+ - ${{ if eq(variables['Build.SourceBranch'], 'refs/heads/main') }}:
+ - template: /eng/common/templates/job/source-index-stage1.yml
+ parameters:
+ sourceIndexBuildCommand: build.cmd -subset libs.ref+libs.src -binarylog -os Linux -ci
#
# Build CoreCLR
@@ -137,12 +140,13 @@ stages:
# - windows_arm
# - windows_arm64
jobParameters:
- buildArgs: -s mono+libs+host+packs+mono.mscordbi -c $(_BuildConfig)
+ buildArgs: -s mono+libs+host+packs -c $(_BuildConfig)
nameSuffix: AllSubsets_Mono
isOfficialBuild: ${{ variables.isOfficialBuild }}
- extraStepsTemplate: /eng/pipelines/common/upload-intermediate-artifacts-step.yml
- extraStepsParameters:
- name: MonoRuntimePacks
+ postBuildSteps:
+ - template: /eng/pipelines/common/upload-intermediate-artifacts-step.yml
+ parameters:
+ name: MonoRuntimePacks
# Build Mono AOT offset headers once, for consumption elsewhere
#
@@ -156,6 +160,8 @@ stages:
- tvOS_arm64
- iOS_arm64
- MacCatalyst_x64
+ jobParameters:
+ isOfficialBuild: ${{ variables.isOfficialBuild }}
#
# Build Mono release AOT cross-compilers
@@ -179,9 +185,10 @@ stages:
- Android
- Browser
isOfficialBuild: ${{ variables.isOfficialBuild }}
- extraStepsTemplate: /eng/pipelines/common/upload-intermediate-artifacts-step.yml
- extraStepsParameters:
- name: MonoRuntimePacks
+ postBuildSteps:
+ - template: /eng/pipelines/common/upload-intermediate-artifacts-step.yml
+ parameters:
+ name: MonoRuntimePacks
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
@@ -202,9 +209,10 @@ stages:
- Android
- Browser
isOfficialBuild: ${{ variables.isOfficialBuild }}
- extraStepsTemplate: /eng/pipelines/common/upload-intermediate-artifacts-step.yml
- extraStepsParameters:
- name: MonoRuntimePacks
+ postBuildSteps:
+ - template: /eng/pipelines/common/upload-intermediate-artifacts-step.yml
+ parameters:
+ name: MonoRuntimePacks
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
@@ -231,9 +239,10 @@ stages:
- iOS
- MacCatalyst
isOfficialBuild: ${{ variables.isOfficialBuild }}
- extraStepsTemplate: /eng/pipelines/common/upload-intermediate-artifacts-step.yml
- extraStepsParameters:
- name: MonoRuntimePacks
+ postBuildSteps:
+ - template: /eng/pipelines/common/upload-intermediate-artifacts-step.yml
+ parameters:
+ name: MonoRuntimePacks
#
# Build Mono LLVM runtime packs
@@ -262,9 +271,10 @@ stages:
nameSuffix: AllSubsets_Mono_LLVMJIT
runtimeVariant: LLVMJIT
isOfficialBuild: ${{ variables.isOfficialBuild }}
- extraStepsTemplate: /eng/pipelines/common/upload-intermediate-artifacts-step.yml
- extraStepsParameters:
- name: MonoRuntimePacks
+ postBuildSteps:
+ - template: /eng/pipelines/common/upload-intermediate-artifacts-step.yml
+ parameters:
+ name: MonoRuntimePacks
#LLVMAOT
- jobTemplate: /eng/pipelines/common/global-build-job.yml
buildConfig: release
@@ -275,9 +285,10 @@ stages:
nameSuffix: AllSubsets_Mono_LLVMAOT
runtimeVariant: LLVMAOT
isOfficialBuild: ${{ variables.isOfficialBuild }}
- extraStepsTemplate: /eng/pipelines/common/upload-intermediate-artifacts-step.yml
- extraStepsParameters:
- name: MonoRuntimePacks
+ postBuildSteps:
+ - template: /eng/pipelines/common/upload-intermediate-artifacts-step.yml
+ parameters:
+ name: MonoRuntimePacks
#
# Build libraries using live CoreLib from CoreCLR
@@ -308,15 +319,38 @@ stages:
#
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
- jobTemplate: /eng/pipelines/libraries/build-job.yml
+ jobTemplate: /eng/pipelines/common/global-build-job.yml
buildConfig: Release
platforms:
- windows_x64
jobParameters:
- framework: allConfigurations
+ buildArgs: -s libs -allConfigurations -c $(_BuildConfig) /p:TestAssemblies=false /p:TestPackages=true
+ nameSuffix: Libraries_AllConfigurations
isOfficialBuild: ${{ variables.isOfficialBuild }}
- isOfficialAllConfigurations: true
- liveRuntimeBuildConfig: release
+ postBuildSteps:
+ - template: /eng/pipelines/common/upload-intermediate-artifacts-step.yml
+ parameters:
+ name: Libraries_AllConfigurations
+ timeoutInMinutes: 95
+
+ #
+ # Build Sourcebuild leg
+ #
+# - template: /eng/pipelines/common/platform-matrix.yml
+# parameters:
+# jobTemplate: /eng/pipelines/common/global-build-job.yml
+# buildConfig: Release
+# helixQueueGroup: ci
+# platforms:
+# - SourceBuild_Linux_x64
+# jobParameters:
+# nameSuffix: SourceBuild
+# postBuildSteps:
+# - template: /eng/pipelines/common/upload-intermediate-artifacts-step.yml
+# parameters:
+# name: SourceBuildPackages
+# timeoutInMinutes: 95
+
#
# Installer Build
@@ -342,38 +376,29 @@ stages:
- windows_arm64
#
- # Build PGO CoreCLR release
+ # Build PGO Instrumented CoreCLR Release
#
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
- jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml
+ jobTemplate: /eng/pipelines/common/global-build-job.yml
buildConfig: release
+ helixQueueGroup: ci
platforms:
- windows_x64
- windows_x86
- Linux_x64
jobParameters:
- testGroup: innerloop
- pgoType: 'PGO'
-
- #
- # PGO Build
- #
- - template: /eng/pipelines/installer/installer-matrix.yml
- parameters:
- buildConfig: Release
- jobParameters:
+ buildArgs: -s clr.native+clr.corelib+clr.tools+clr.nativecorelib+libs+host+packs -c $(_BuildConfig) -pgoinstrument
isOfficialBuild: ${{ variables.isOfficialBuild }}
- liveRuntimeBuildConfig: release
- liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }}
- pgoType: 'PGO'
- platforms:
- - windows_x64
- - windows_x86
- - Linux_x64
+ nameSuffix: PGO
+ postBuildSteps:
+ - template: /eng/pipelines/common/upload-intermediate-artifacts-step.yml
+ parameters:
+ name: PGO
+ timeoutInMinutes: 95
#
- # Build Blazor Workload
+ # Build Workloads
#
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
@@ -383,6 +408,7 @@ stages:
- windows_x64
jobParameters:
isOfficialBuild: ${{ variables.isOfficialBuild }}
+ timeoutInMinutes: 120
dependsOn:
- Build_Android_arm_release_AllSubsets_Mono
- Build_Android_arm64_release_AllSubsets_Mono
@@ -400,6 +426,10 @@ stages:
- Build_tvOSSimulator_arm64_release_AllSubsets_Mono
- Build_tvOSSimulator_x64_release_AllSubsets_Mono
- Build_Windows_x64_release_CrossAOT_Mono
+ - installer_coreclr__windows_x64_Release_
+ - installer_coreclr__windows_x86_Release_
+ - installer_coreclr__windows_arm_Release_
+ - installer_coreclr__windows_arm64_Release_
- ${{ if eq(variables.isOfficialBuild, true) }}:
- template: /eng/pipelines/official/stages/publish.yml
diff --git a/eng/pipelines/runtime-staging.yml b/eng/pipelines/runtime-staging.yml
index 40ca5bf9b2fabe..2fe63b5812e1e8 100644
--- a/eng/pipelines/runtime-staging.yml
+++ b/eng/pipelines/runtime-staging.yml
@@ -65,12 +65,10 @@ jobs:
buildConfig: Release
runtimeFlavor: mono
platforms:
- - MacCatalyst_x64
- iOSSimulator_x64
- tvOSSimulator_x64
# don't run tests on arm64 PRs until we can get significantly more devices
- ${{ if eq(variables['isFullMatrix'], true) }}:
- - MacCatalyst_arm64
- iOSSimulator_arm64
variables:
# map dependencies variables to local variables
@@ -90,16 +88,108 @@ jobs:
eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true),
eq(variables['isFullMatrix'], true))
# extra steps, run tests
- extraStepsTemplate: /eng/pipelines/libraries/helix.yml
- extraStepsParameters:
- creator: dotnet-bot
- interpreter: true
- testRunNamePrefixSuffix: Mono_$(_BuildConfig)
- condition: >-
- or(
- eq(variables['librariesContainsChange'], true),
- eq(variables['monoContainsChange'], true),
+ postBuildSteps:
+ - template: /eng/pipelines/libraries/helix.yml
+ parameters:
+ creator: dotnet-bot
+ interpreter: true
+ testRunNamePrefixSuffix: Mono_$(_BuildConfig)
+ condition: >-
+ or(
+ eq(variables['librariesContainsChange'], true),
+ eq(variables['monoContainsChange'], true),
+ eq(variables['isFullMatrix'], true))
+
+#
+# MacCatalyst interp - requires AOT Compilation and Interp flags
+# Build the whole product using Mono and run libraries tests
+# The test app is built with the App Sandbox entitlement
+#
+- template: /eng/pipelines/common/platform-matrix.yml
+ parameters:
+ jobTemplate: /eng/pipelines/common/global-build-job.yml
+ helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml
+ buildConfig: Release
+ runtimeFlavor: mono
+ platforms:
+ - MacCatalyst_x64
+ # don't run tests on arm64 PRs until we can get significantly more devices
+ - ${{ if eq(variables['isFullMatrix'], true) }}:
+ - MacCatalyst_arm64
+ variables:
+ # map dependencies variables to local variables
+ - name: librariesContainsChange
+ value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ]
+ - name: monoContainsChange
+ value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'] ]
+ jobParameters:
+ testGroup: innerloop
+ nameSuffix: AllSubsets_Mono_AppSandbox
+ buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=adhoc /p:RunAOTCompilation=true /p:MonoForceInterpreter=true /p:BuildDarwinFrameworks=true /p:EnableAppSandbox=true
+ timeoutInMinutes: 180
+ condition: >-
+ or(
+ eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
+ eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true),
+ eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true),
+ eq(variables['isFullMatrix'], true))
+ # extra steps, run tests
+ postBuildSteps:
+ - template: /eng/pipelines/libraries/helix.yml
+ parameters:
+ creator: dotnet-bot
+ interpreter: true
+ testRunNamePrefixSuffix: Mono_$(_BuildConfig)
+ condition: >-
+ or(
+ eq(variables['librariesContainsChange'], true),
+ eq(variables['monoContainsChange'], true),
+ eq(variables['isFullMatrix'], true))
+
+#
+# MacCatalyst interp - requires AOT Compilation and Interp flags
+# Build the whole product using Mono and run libraries tests
+#
+- template: /eng/pipelines/common/platform-matrix.yml
+ parameters:
+ jobTemplate: /eng/pipelines/common/global-build-job.yml
+ helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml
+ buildConfig: Release
+ runtimeFlavor: mono
+ platforms:
+ - MacCatalyst_x64
+ # don't run tests on arm64 PRs until we can get significantly more devices
+ - ${{ if eq(variables['isFullMatrix'], true) }}:
+ - MacCatalyst_arm64
+ variables:
+ # map dependencies variables to local variables
+ - name: librariesContainsChange
+ value: $[ dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ]
+ - name: monoContainsChange
+ value: $[ dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'] ]
+ jobParameters:
+ testGroup: innerloop
+ nameSuffix: AllSubsets_Mono
+ buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true /p:DevTeamProvisioning=adhoc /p:RunAOTCompilation=true /p:MonoForceInterpreter=true /p:BuildDarwinFrameworks=true
+ timeoutInMinutes: 180
+ condition: >-
+ or(
+ eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
+ eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true),
+ eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true),
eq(variables['isFullMatrix'], true))
+ # extra steps, run tests
+ postBuildSteps:
+ - template: /eng/pipelines/libraries/helix.yml
+ parameters:
+ creator: dotnet-bot
+ interpreter: true
+ testRunNamePrefixSuffix: Mono_$(_BuildConfig)
+ condition: >-
+ or(
+ eq(variables['librariesContainsChange'], true),
+ eq(variables['monoContainsChange'], true),
+ eq(variables['isFullMatrix'], true))
#
# Build the whole product using Mono and run libraries tests
@@ -131,15 +221,16 @@ jobs:
eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true),
eq(variables['isFullMatrix'], true))
# extra steps, run tests
- extraStepsTemplate: /eng/pipelines/libraries/helix.yml
- extraStepsParameters:
- creator: dotnet-bot
- testRunNamePrefixSuffix: Mono_$(_BuildConfig)
- condition: >-
- or(
- eq(variables['librariesContainsChange'], true),
- eq(variables['monoContainsChange'], true),
- eq(variables['isFullMatrix'], true))
+ postBuildSteps:
+ - template: /eng/pipelines/libraries/helix.yml
+ parameters:
+ creator: dotnet-bot
+ testRunNamePrefixSuffix: Mono_$(_BuildConfig)
+ condition: >-
+ or(
+ eq(variables['librariesContainsChange'], true),
+ eq(variables['monoContainsChange'], true),
+ eq(variables['isFullMatrix'], true))
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
@@ -171,15 +262,16 @@ jobs:
# don't run tests on PRs until we can get significantly more devices
${{ if eq(variables['isFullMatrix'], true) }}:
# extra steps, run tests
- extraStepsTemplate: /eng/pipelines/libraries/helix.yml
- extraStepsParameters:
- creator: dotnet-bot
- testRunNamePrefixSuffix: Mono_$(_BuildConfig)
- condition: >-
- or(
- eq(variables['librariesContainsChange'], true),
- eq(variables['monoContainsChange'], true),
- eq(variables['isFullMatrix'], true))
+ postBuildSteps:
+ - template: /eng/pipelines/libraries/helix.yml
+ parameters:
+ creator: dotnet-bot
+ testRunNamePrefixSuffix: Mono_$(_BuildConfig)
+ condition: >-
+ or(
+ eq(variables['librariesContainsChange'], true),
+ eq(variables['monoContainsChange'], true),
+ eq(variables['isFullMatrix'], true))
#
# Build the whole product using Mono and run libraries tests
@@ -201,7 +293,7 @@ jobs:
jobParameters:
testScope: innerloop
nameSuffix: AllSubsets_Mono
- buildArgs: -s mono+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true
+ buildArgs: -s mono+mono.mscordbi+libs+host+packs+libs.tests -c $(_BuildConfig) /p:ArchiveTests=true
timeoutInMinutes: 120
condition: >-
or(
@@ -210,15 +302,16 @@ jobs:
eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true),
eq(variables['isFullMatrix'], true))
# extra steps, run tests
- extraStepsTemplate: /eng/pipelines/libraries/helix.yml
- extraStepsParameters:
- creator: dotnet-bot
- testRunNamePrefixSuffix: Mono_$(_BuildConfig)
- condition: >-
- or(
- eq(variables['librariesContainsChange'], true),
- eq(variables['monoContainsChange'], true),
- eq(variables['isFullMatrix'], true))
+ postBuildSteps:
+ - template: /eng/pipelines/libraries/helix.yml
+ parameters:
+ creator: dotnet-bot
+ testRunNamePrefixSuffix: Mono_$(_BuildConfig)
+ condition: >-
+ or(
+ eq(variables['librariesContainsChange'], true),
+ eq(variables['monoContainsChange'], true),
+ eq(variables['isFullMatrix'], true))
#
# Build the whole product using Mono for Android and run runtime tests with interpreter
@@ -254,10 +347,11 @@ jobs:
eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true),
eq(variables['isFullMatrix'], true))
# extra steps, run tests
- extraStepsTemplate: /eng/pipelines/common/templates/runtimes/android-runtime-and-send-to-helix.yml
- extraStepsParameters:
- creator: dotnet-bot
- testRunNamePrefixSuffix: Mono_$(_BuildConfig)
+ postBuildSteps:
+ - template: /eng/pipelines/common/templates/runtimes/android-runtime-and-send-to-helix.yml
+ parameters:
+ creator: dotnet-bot
+ testRunNamePrefixSuffix: Mono_$(_BuildConfig)
#
# Build the whole product using Mono and run runtime tests with the JIT.
@@ -296,10 +390,11 @@ jobs:
# successfully launch any tests. Re-enable once these issues have been fixed.
#
# extra steps, run tests
- # extraStepsTemplate: /eng/pipelines/common/templates/runtimes/android-runtime-and-send-to-helix.yml
- # extraStepsParameters:
- # creator: dotnet-bot
- # testRunNamePrefixSuffix: Mono_$(_BuildConfig)
+ # postBuildSteps:
+ # - template: /eng/pipelines/common/templates/runtimes/android-runtime-and-send-to-helix.yml
+ # parameters:
+ # creator: dotnet-bot
+ # testRunNamePrefixSuffix: Mono_$(_BuildConfig)
#
# Build the whole product using Mono for Android and run runtime tests with Android devices
@@ -336,10 +431,11 @@ jobs:
# don't run tests on PRs until we can get significantly more devices
${{ if eq(variables['isFullMatrix'], true) }}:
# extra steps, run tests
- extraStepsTemplate: /eng/pipelines/common/templates/runtimes/android-runtime-and-send-to-helix.yml
- extraStepsParameters:
- creator: dotnet-bot
- testRunNamePrefixSuffix: Mono_$(_BuildConfig)
+ postBuildSteps:
+ - template: /eng/pipelines/common/templates/runtimes/android-runtime-and-send-to-helix.yml
+ parameters:
+ creator: dotnet-bot
+ testRunNamePrefixSuffix: Mono_$(_BuildConfig)
# Run disabled installer tests on Linux x64
- template: /eng/pipelines/common/platform-matrix.yml
@@ -386,19 +482,20 @@ jobs:
eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true),
eq(variables['isFullMatrix'], true))
# extra steps, run tests
- extraStepsTemplate: /eng/pipelines/libraries/helix.yml
- extraStepsParameters:
- creator: dotnet-bot
- testRunNamePrefixSuffix: Mono_$(_BuildConfig)
- extraHelixArguments: /p:BrowserHost=windows
- scenarios:
- - normal
- - wasmtestonbrowser
- condition: >-
- or(
- eq(variables['librariesContainsChange'], true),
- eq(variables['monoContainsChange'], true),
- eq(variables['isFullMatrix'], true))
+ postBuildSteps:
+ - template: /eng/pipelines/libraries/helix.yml
+ parameters:
+ creator: dotnet-bot
+ testRunNamePrefixSuffix: Mono_$(_BuildConfig)
+ extraHelixArguments: /p:BrowserHost=windows
+ scenarios:
+ - normal
+ - wasmtestonbrowser
+ condition: >-
+ or(
+ eq(variables['librariesContainsChange'], true),
+ eq(variables['monoContainsChange'], true),
+ eq(variables['isFullMatrix'], true))
#
# CoreCLR Build for running Apple Silicon libraries-innerloop
diff --git a/eng/pipelines/runtime.yml b/eng/pipelines/runtime.yml
index 0fca635b793987..80ff1c9b745708 100644
--- a/eng/pipelines/runtime.yml
+++ b/eng/pipelines/runtime.yml
@@ -146,21 +146,6 @@ jobs:
jobParameters:
testGroup: innerloop
-#
-# Build PGO CoreCLR release
-#
-- template: /eng/pipelines/common/platform-matrix.yml
- parameters:
- jobTemplate: /eng/pipelines/coreclr/templates/build-job.yml
- buildConfig: release
- platforms:
- - windows_x64
- - windows_x86
- - Linux_x64
- jobParameters:
- testGroup: innerloop
- pgoType: 'PGO'
-
#
# Build CoreCLR Formatting Job
# Only when CoreCLR is changed, and only in the 'main' branch (no release branches;
@@ -210,6 +195,7 @@ jobs:
- iOS_arm64
- MacCatalyst_x64
jobParameters:
+ isOfficialBuild: ${{ variables.isOfficialBuild }}
condition: >-
or(
eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true),
@@ -291,18 +277,19 @@ jobs:
eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true),
eq(variables['isFullMatrix'], true))
# extra steps, run tests
- extraStepsTemplate: /eng/pipelines/libraries/helix.yml
- extraStepsParameters:
- creator: dotnet-bot
- testRunNamePrefixSuffix: Mono_$(_BuildConfig)
- scenarios:
- - normal
- - wasmtestonbrowser
- condition: >-
- or(
- eq(variables['librariesContainsChange'], true),
- eq(variables['monoContainsChange'], true),
- eq(variables['isFullMatrix'], true))
+ postBuildSteps:
+ - template: /eng/pipelines/libraries/helix.yml
+ parameters:
+ creator: dotnet-bot
+ testRunNamePrefixSuffix: Mono_$(_BuildConfig)
+ scenarios:
+ - normal
+ - wasmtestonbrowser
+ condition: >-
+ or(
+ eq(variables['librariesContainsChange'], true),
+ eq(variables['monoContainsChange'], true),
+ eq(variables['isFullMatrix'], true))
#
# Build the whole product using Mono and run libraries tests, for Wasm.Build.Tests
@@ -332,17 +319,18 @@ jobs:
eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true),
eq(variables['isFullMatrix'], true))
# extra steps, run tests
- extraStepsTemplate: /eng/pipelines/libraries/helix.yml
- extraStepsParameters:
- creator: dotnet-bot
- testRunNamePrefixSuffix: Mono_$(_BuildConfig)
- scenarios:
- - buildwasmapps
- condition: >-
- or(
- eq(variables['monoContainsChange'], true),
- eq(variables['installerContainsChange'], true),
- eq(variables['isFullMatrix'], true))
+ postBuildSteps:
+ - template: /eng/pipelines/libraries/helix.yml
+ parameters:
+ creator: dotnet-bot
+ testRunNamePrefixSuffix: Mono_$(_BuildConfig)
+ scenarios:
+ - buildwasmapps
+ condition: >-
+ or(
+ eq(variables['monoContainsChange'], true),
+ eq(variables['installerContainsChange'], true),
+ eq(variables['isFullMatrix'], true))
#
# Build for Browser/wasm, with EnableAggressiveTrimming=true
@@ -373,18 +361,19 @@ jobs:
eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true),
eq(variables['isFullMatrix'], true))
# extra steps, run tests
- extraStepsTemplate: /eng/pipelines/libraries/helix.yml
- extraStepsParameters:
- creator: dotnet-bot
- testRunNamePrefixSuffix: Mono_$(_BuildConfig)
- extraHelixArguments: /p:NeedsToBuildWasmAppsOnHelix=true
- scenarios:
- - normal
- condition: >-
- or(
- eq(variables['librariesContainsChange'], true),
- eq(variables['monoContainsChange'], true),
- eq(variables['isFullMatrix'], true))
+ postBuildSteps:
+ - template: /eng/pipelines/libraries/helix.yml
+ parameters:
+ creator: dotnet-bot
+ testRunNamePrefixSuffix: Mono_$(_BuildConfig)
+ extraHelixArguments: /p:NeedsToBuildWasmAppsOnHelix=true
+ scenarios:
+ - normal
+ condition: >-
+ or(
+ eq(variables['librariesContainsChange'], true),
+ eq(variables['monoContainsChange'], true),
+ eq(variables['isFullMatrix'], true))
#
# Build for Browser/wasm with RunAOTCompilation=true
@@ -415,40 +404,19 @@ jobs:
eq(dependencies.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true),
eq(variables['isFullMatrix'], true))
# extra steps, run tests
- extraStepsTemplate: /eng/pipelines/libraries/helix.yml
- extraStepsParameters:
- creator: dotnet-bot
- testRunNamePrefixSuffix: Mono_$(_BuildConfig)
- extraHelixArguments: /p:NeedsToBuildWasmAppsOnHelix=true
- scenarios:
- - normal
- condition: >-
- or(
- eq(variables['librariesContainsChange'], true),
- eq(variables['monoContainsChange'], true),
- eq(variables['isFullMatrix'], true))
-
-# Build and test libraries under single-file publishing
-- template: /eng/pipelines/common/platform-matrix.yml
- parameters:
- jobTemplate: /eng/pipelines/common/global-build-job.yml
- helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml
- buildConfig: Release
- platforms:
- - windows_x64
- - Linux_x64
- jobParameters:
- testGroup: innerloop
- isFullMatrix: ${{ variables.isFullMatrix }}
- isSingleFile: true
- nameSuffix: SingleFile
- buildArgs: -s clr+libs+libs.tests -c $(_BuildConfig) /p:TestSingleFile=true /p:ArchiveTests=true
- timeoutInMinutes: 120
- # extra steps, run tests
- extraStepsTemplate: /eng/pipelines/libraries/helix.yml
- extraStepsParameters:
- creator: dotnet-bot
- testRunNamePrefixSuffix: SingleFile_$(_BuildConfig)
+ postBuildSteps:
+ - template: /eng/pipelines/libraries/helix.yml
+ parameters:
+ creator: dotnet-bot
+ testRunNamePrefixSuffix: Mono_$(_BuildConfig)
+ extraHelixArguments: /p:NeedsToBuildWasmAppsOnHelix=true
+ scenarios:
+ - normal
+ condition: >-
+ or(
+ eq(variables['librariesContainsChange'], true),
+ eq(variables['monoContainsChange'], true),
+ eq(variables['isFullMatrix'], true))
#
# Build the whole product using Mono and run runtime tests
@@ -483,48 +451,50 @@ jobs:
eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true),
eq(variables['isFullMatrix'], true))
# extra steps, run tests
- extraStepsTemplate: /eng/pipelines/common/templates/runtimes/wasm-runtime-and-send-to-helix.yml
- extraStepsParameters:
- creator: dotnet-bot
- testRunNamePrefixSuffix: Mono_$(_BuildConfig)
+ postBuildSteps:
+ - template: /eng/pipelines/common/templates/runtimes/wasm-runtime-and-send-to-helix.yml
+ parameters:
+ creator: dotnet-bot
+ testRunNamePrefixSuffix: Mono_$(_BuildConfig)
#
# Build the whole product using Mono for Android and run runtime tests with Android emulator
#
-- template: /eng/pipelines/common/platform-matrix.yml
- parameters:
- jobTemplate: /eng/pipelines/common/global-build-job.yml
- helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml
- buildConfig: Release
- runtimeFlavor: mono
- platforms:
- - Android_x64
- variables:
- - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest')) }}:
- - name: _HelixSource
- value: pr/dotnet/runtime/$(Build.SourceBranch)
- - ${{ if and(eq(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest')) }}:
- - name: _HelixSource
- value: ci/dotnet/runtime/$(Build.SourceBranch)
- - name: timeoutPerTestInMinutes
- value: 60
- - name: timeoutPerTestCollectionInMinutes
- value: 180
- jobParameters:
- testGroup: innerloop
- nameSuffix: AllSubsets_Mono_RuntimeTests
- buildArgs: -s mono+libs -c $(_BuildConfig)
- timeoutInMinutes: 240
- condition: >-
- or(
- eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true),
- eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true),
- eq(variables['isFullMatrix'], true))
- # extra steps, run tests
- extraStepsTemplate: /eng/pipelines/common/templates/runtimes/android-runtime-and-send-to-helix.yml
- extraStepsParameters:
- creator: dotnet-bot
- testRunNamePrefixSuffix: Mono_$(_BuildConfig)
+#- template: /eng/pipelines/common/platform-matrix.yml
+# parameters:
+# jobTemplate: /eng/pipelines/common/global-build-job.yml
+# helixQueuesTemplate: /eng/pipelines/coreclr/templates/helix-queues-setup.yml
+# buildConfig: Release
+# runtimeFlavor: mono
+# platforms:
+# - Android_x64
+# variables:
+# - ${{ if and(eq(variables['System.TeamProject'], 'public'), eq(variables['Build.Reason'], 'PullRequest')) }}:
+# - name: _HelixSource
+# value: pr/dotnet/runtime/$(Build.SourceBranch)
+# - ${{ if and(eq(variables['System.TeamProject'], 'public'), ne(variables['Build.Reason'], 'PullRequest')) }}:
+# - name: _HelixSource
+# value: ci/dotnet/runtime/$(Build.SourceBranch)
+# - name: timeoutPerTestInMinutes
+# value: 60
+# - name: timeoutPerTestCollectionInMinutes
+# value: 180
+# jobParameters:
+# testGroup: innerloop
+# nameSuffix: AllSubsets_Mono_RuntimeTests
+# buildArgs: -s mono+libs -c $(_BuildConfig)
+# timeoutInMinutes: 240
+# condition: >-
+# or(
+# eq(dependencies.evaluate_paths.outputs['SetPathVars_runtimetests.containsChange'], true),
+# eq(dependencies.evaluate_paths.outputs['SetPathVars_mono.containsChange'], true),
+# eq(variables['isFullMatrix'], true))
+# # extra steps, run tests
+# postBuildSteps:
+# - template: /eng/pipelines/common/templates/runtimes/android-runtime-and-send-to-helix.yml
+# parameters:
+# creator: dotnet-bot
+# testRunNamePrefixSuffix: Mono_$(_BuildConfig)
#
# Build Mono and Installer on LLVMJIT mode
@@ -814,9 +784,12 @@ jobs:
eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
eq(variables['isFullMatrix'], true))
+#
+# Build and test libraries for .NET Framework
+#
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
- jobTemplate: /eng/pipelines/libraries/build-job.yml
+ jobTemplate: /eng/pipelines/common/global-build-job.yml
buildConfig: Release
platforms:
- windows_x86
@@ -826,24 +799,33 @@ jobs:
jobParameters:
isFullMatrix: ${{ variables.isFullMatrix }}
framework: net48
- runTests: true
- testScope: innerloop
+ buildArgs: -s libs+libs.tests -framework net48 -c $(_BuildConfig) -testscope innerloop /p:ArchiveTests=true
+ nameSuffix: Libraries_NET48
+ timeoutInMinutes: 150
+ postBuildSteps:
+ - template: /eng/pipelines/libraries/helix.yml
+ parameters:
+ creator: dotnet-bot
+ testRunNamePrefixSuffix: NET48_$(_BuildConfig)
+ extraHelixArguments: /p:BuildTargetFramework=net48
condition: >-
or(
eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
eq(variables['isFullMatrix'], true))
+#
+# Build and test libraries AllConfigurations
+#
- template: /eng/pipelines/common/platform-matrix.yml
parameters:
- jobTemplate: /eng/pipelines/libraries/build-job.yml
+ jobTemplate: /eng/pipelines/common/global-build-job.yml
buildConfig: ${{ variables.debugOnPrReleaseOnRolling }}
platforms:
- windows_x64
jobParameters:
- isFullMatrix: ${{ variables.isFullMatrix }}
- framework: allConfigurations
- runTests: true
- useHelix: false
+ buildArgs: -test -s libs+libs.tests -allConfigurations -c $(_BuildConfig) /p:TestAssemblies=false /p:TestPackages=true
+ nameSuffix: Libraries_AllConfigurations
+ timeoutInMinutes: 150
condition: >-
or(
eq(dependencies.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true),
@@ -883,22 +865,6 @@ jobs:
liveRuntimeBuildConfig: release
liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }}
-#
-# PGO Build
-#
-- template: /eng/pipelines/installer/installer-matrix.yml
- parameters:
- buildConfig: Release
- jobParameters:
- isOfficialBuild: ${{ variables.isOfficialBuild }}
- liveRuntimeBuildConfig: release
- liveLibrariesBuildConfig: ${{ variables.debugOnPrReleaseOnRolling }}
- pgoType: 'PGO'
- platforms:
- - windows_x64
- - windows_x86
- - Linux_x64
-
#
# CoreCLR Test builds using live libraries release build
# Only when CoreCLR is changed
diff --git a/eng/pipelines/runtimelab.yml b/eng/pipelines/runtimelab.yml
index db73445d799874..f88459777482f0 100644
--- a/eng/pipelines/runtimelab.yml
+++ b/eng/pipelines/runtimelab.yml
@@ -68,9 +68,10 @@ stages:
timeoutInMinutes: 100
testGroup: innerloop
buildArgs: -s clr+libs+host+packs -c debug -runtimeConfiguration Checked
- extraStepsTemplate: /eng/pipelines/runtimelab/runtimelab-post-build-steps.yml
- extraStepsParameters:
- uploadRuntimeTests: true
+ postBuildSteps:
+ - template: /eng/pipelines/runtimelab/runtimelab-post-build-steps.yml
+ parameters:
+ uploadRuntimeTests: true
#
# Build with Release config and Release runtimeConfiguration
@@ -86,14 +87,15 @@ stages:
timeoutInMinutes: 100
isOfficialBuild: ${{ variables.isOfficialBuild }}
testGroup: innerloop
- extraStepsTemplate: /eng/pipelines/runtimelab/runtimelab-post-build-steps.yml
- extraStepsParameters:
- uploadLibrariesTests: ${{ eq(variables.isOfficialBuild, false) }}
- uploadIntermediateArtifacts: false
- ${{ if eq(variables.isOfficialBuild, false) }}:
- buildArgs: -s clr+libs+libs.tests+host+packs -c $(_BuildConfig) /p:ArchiveTests=true
- ${{ if eq(variables.isOfficialBuild, true) }}:
- buildArgs: -s clr+libs -c $(_BuildConfig)
+ postBuildSteps:
+ - template: /eng/pipelines/runtimelab/runtimelab-post-build-steps.yml
+ parameters:
+ uploadLibrariesTests: ${{ eq(variables.isOfficialBuild, false) }}
+ uploadIntermediateArtifacts: false
+ ${{ if eq(variables.isOfficialBuild, false) }}:
+ buildArgs: -s clr+libs+libs.tests+host+packs -c $(_BuildConfig) /p:ArchiveTests=true
+ ${{ if eq(variables.isOfficialBuild, true) }}:
+ buildArgs: -s clr+libs -c $(_BuildConfig)
#
# Build with Release allConfigurations to produce packages
@@ -110,11 +112,12 @@ stages:
nameSuffix: AllConfigurations
buildArgs: -s libs -c $(_BuildConfig) -allConfigurations
${{ if eq(variables.isOfficialBuild, true) }}:
- extraStepsTemplate: /eng/pipelines/runtimelab/runtimelab-post-build-steps.yml
- extraStepsParameters:
- uploadIntermediateArtifacts: true
- isOfficialBuild: true
- librariesBinArtifactName: libraries_bin_official_allconfigurations
+ postBuildSteps:
+ - template: /eng/pipelines/runtimelab/runtimelab-post-build-steps.yml
+ parameters:
+ uploadIntermediateArtifacts: true
+ isOfficialBuild: true
+ librariesBinArtifactName: libraries_bin_official_allconfigurations
# Installer official builds need to build installers and need the libraries all configurations build
- ${{ if eq(variables.isOfficialBuild, true) }}:
diff --git a/eng/pipelines/runtimelab/runtimelab-post-build-steps.yml b/eng/pipelines/runtimelab/runtimelab-post-build-steps.yml
index a6187638cd3461..97c007ba4b3074 100644
--- a/eng/pipelines/runtimelab/runtimelab-post-build-steps.yml
+++ b/eng/pipelines/runtimelab/runtimelab-post-build-steps.yml
@@ -5,7 +5,6 @@ parameters:
osSubgroup: ''
nameSuffix: ''
platform: ''
- pgoType: ''
runtimeVariant: ''
librariesBinArtifactName: ''
isOfficialBuild: false
@@ -32,7 +31,7 @@ steps:
tarCompression: $(tarCompression)
includeRootFolder: false
archiveExtension: $(archiveExtension)
- artifactName: CoreCLRProduct_${{ parameters.pgoType }}_${{ parameters.runtimeVariant }}_${{ parameters.osGroup }}${{ parameters.osSubgroup }}_${{ parameters.archType }}_${{ parameters.buildConfig }}
+ artifactName: CoreCLRProduct_${{ parameters.runtimeVariant }}_${{ parameters.osGroup }}${{ parameters.osSubgroup }}_${{ parameters.archType }}_${{ parameters.buildConfig }}
displayName: 'CoreCLR product build'
# Zip Test Build
diff --git a/eng/pipelines/source-index.yml b/eng/pipelines/source-index.yml
deleted file mode 100644
index 201e84d4ef3295..00000000000000
--- a/eng/pipelines/source-index.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-jobs:
-#
-# Source Index Build
-#
-- template: /eng/common/templates/job/source-index-stage1.yml
- parameters:
- sourceIndexBuildCommand: build.cmd -subset libs.ref+libs.src -binarylog -os Linux -ci
- preSteps:
- - script: |
- rename dotnet.cmd dotnet.cmd.go-away
diff --git a/eng/references.targets b/eng/references.targets
index 7cfb60411ed182..8a238677f67b86 100644
--- a/eng/references.targets
+++ b/eng/references.targets
@@ -59,4 +59,15 @@
+
+
+
+ <_resolvedCoreLibProjectReference Include="@(_ResolvedProjectReferencePaths->WithMetadataValue('MSBuildSourceProjectFile','$(CoreLibProject)'))" />
+
+
+
+
+
diff --git a/eng/restore/docs.targets b/eng/restore/docs.targets
index 764bc5bbefb64b..791b15b939eb42 100644
--- a/eng/restore/docs.targets
+++ b/eng/restore/docs.targets
@@ -9,7 +9,7 @@
AfterTargets="Restore">
-
+
$([System.String]::new('%(RecursiveDir)').TrimEnd('\/'))
@@ -35,7 +35,7 @@
-
+
+
+
+
+
+
+
+
diff --git a/eng/testing/performance/crossgen_perf.proj b/eng/testing/performance/crossgen_perf.proj
index c6599aecfd42f1..923882ea355873 100644
--- a/eng/testing/performance/crossgen_perf.proj
+++ b/eng/testing/performance/crossgen_perf.proj
@@ -59,7 +59,7 @@
-
+
$(WorkItemDirectory)
$(Python) $(Crossgen2Directory)pre.py crossgen2 --core-root $(CoreRoot) --single %(Identity)
$(Python) $(Crossgen2Directory)test.py sod --scenario-name "Crossgen2 %(Identity) Size" --dirs ./crossgen.out/
@@ -69,18 +69,18 @@
-
+
4:00
-
+
4:00
-
+
$(WorkItemDirectory)
$(Python) $(Crossgen2Directory)test.py crossgen2 --core-root $(CoreRoot) --composite $(Crossgen2Directory)framework-r2r.dll.rsp
1:00
-
+
4:00
diff --git a/eng/testing/performance/microbenchmarks.proj b/eng/testing/performance/microbenchmarks.proj
index 318ca5f1b8d4c3..bdbe833c92a962 100644
--- a/eng/testing/performance/microbenchmarks.proj
+++ b/eng/testing/performance/microbenchmarks.proj
@@ -46,10 +46,10 @@
- --corerun %HELIX_CORRELATION_PAYLOAD%\dotnet-mono\shared\Microsoft.NETCore.App\6.0.0\corerun.exe
+ --corerun %HELIX_CORRELATION_PAYLOAD%\dotnet-mono\shared\Microsoft.NETCore.App\$(ProductVersion)\corerun.exe
- --corerun $(BaseDirectory)/dotnet-mono/shared/Microsoft.NETCore.App/6.0.0/corerun
+ --corerun $(BaseDirectory)/dotnet-mono/shared/Microsoft.NETCore.App/$(ProductVersion)/corerun
diff --git a/eng/testing/performance/performance-setup.ps1 b/eng/testing/performance/performance-setup.ps1
index 9ed93d17fbd829..a53f102f5d33e6 100644
--- a/eng/testing/performance/performance-setup.ps1
+++ b/eng/testing/performance/performance-setup.ps1
@@ -14,7 +14,7 @@ Param(
[string] $Kind="micro",
[switch] $LLVM,
[switch] $MonoInterpreter,
- [switch] $MonoAOT,
+ [switch] $MonoAOT,
[switch] $Internal,
[switch] $Compare,
[string] $MonoDotnet="",
@@ -44,11 +44,12 @@ $Queue = ""
if ($Internal) {
switch ($LogicalMachine) {
- "perftiger" { $Queue = "Windows.10.Amd64.19H1.Tiger.Perf" }
- "perfowl" { $Queue = "Windows.10.Amd64.20H2.Owl.Perf" }
- "perfsurf" { $Queue = "Windows.10.Arm64.Perf.Surf" }
- "perfpixel4a" { $Queue = "Windows.10.Amd64.Pixel.Perf" }
- Default { $Queue = "Windows.10.Amd64.19H1.Tiger.Perf" }
+ "perftiger" { $Queue = "Windows.11.Amd64.Tiger.Perf" }
+ "perftiger_crossgen" { $Queue = "Windows.11.Amd64.Tiger.Perf" }
+ "perfowl" { $Queue = "Windows.11.Amd64.Owl.Perf" }
+ "perfsurf" { $Queue = "Windows.11.Arm64.Surf.Perf" }
+ "perfpixel4a" { $Queue = "Windows.11.Amd64.Pixel.Perf" }
+ Default { $Queue = "Windows.11.Amd64.Tiger.Perf" }
}
$PerfLabArguments = "--upload-to-perflab-container"
$ExtraBenchmarkDotNetArguments = ""
@@ -97,7 +98,12 @@ if ($iOSMono) {
}
# FIX ME: This is a workaround until we get this from the actual pipeline
-$CommonSetupArguments="--channel main --queue $Queue --build-number $BuildNumber --build-configs $Configurations --architecture $Architecture"
+$CleanedBranchName = "release/6.0"
+if($Branch.Contains("refs/heads/release"))
+{
+ $CleanedBranchName = $Branch.replace('refs/heads/', '')
+}
+$CommonSetupArguments="--channel $CleanedBranchName --queue $Queue --build-number $BuildNumber --build-configs $Configurations --architecture $Architecture"
$SetupArguments = "--repository https://github.com/$Repository --branch $Branch --get-perf-hash --commit-sha $CommitSha $CommonSetupArguments"
if($NoPGO)
@@ -115,11 +121,11 @@ elseif($FullPGO)
if ($RunFromPerformanceRepo) {
$SetupArguments = "--perf-hash $CommitSha $CommonSetupArguments"
-
+
robocopy $SourceDirectory $PerformanceDirectory /E /XD $PayloadDirectory $SourceDirectory\artifacts $SourceDirectory\.git
}
else {
- git clone --branch main --depth 1 --quiet https://github.com/dotnet/performance $PerformanceDirectory
+ git clone --branch release/6.0 --depth 1 --quiet https://github.com/dotnet/performance $PerformanceDirectory
}
if($MonoDotnet -ne "")
@@ -196,4 +202,4 @@ Write-PipelineSetVariable -Name 'Queue' -Value "$Queue" -IsMultiJobVariable $fal
Write-PipelineSetVariable -Name 'HelixSourcePrefix' -Value "$HelixSourcePrefix" -IsMultiJobVariable $false
Write-PipelineSetVariable -Name '_BuildConfig' -Value "$Architecture.$Kind.$Framework" -IsMultiJobVariable $false
-exit 0
\ No newline at end of file
+exit 0
diff --git a/eng/testing/performance/performance-setup.sh b/eng/testing/performance/performance-setup.sh
index c99ad1f48f3fa5..c13804d8239e47 100755
--- a/eng/testing/performance/performance-setup.sh
+++ b/eng/testing/performance/performance-setup.sh
@@ -162,7 +162,7 @@ while (($# > 0)); do
echo " --internal If the benchmarks are running as an official job."
echo " --monodotnet Pass the path to the mono dotnet for mono performance testing."
echo " --wasm Path to the unpacked wasm runtime pack."
- echo " --wasmaot Indicate wasm aot"
+ echo " --wasmaot Indicate wasm aot"
echo " --latestdotnet --dotnet-versions will not be specified. --dotnet-versions defaults to LKG version in global.json "
echo " --alpine Set for runs on Alpine"
echo ""
@@ -193,7 +193,7 @@ benchmark_directory=$payload_directory/BenchmarkDotNet
workitem_directory=$source_directory/workitem
extra_benchmark_dotnet_arguments="--iterationCount 1 --warmupCount 0 --invocationCount 1 --unrollFactor 1 --strategy ColdStart --stopOnFirstError true"
perflab_arguments=
-queue=Ubuntu.1804.Amd64.Open
+queue=Ubuntu.2204.Amd64.Open
creator=$BUILD_DEFINITIONNAME
helix_source_prefix="pr"
@@ -202,14 +202,16 @@ if [[ "$internal" == true ]]; then
helix_source_prefix="official"
creator=
extra_benchmark_dotnet_arguments=
-
+
if [[ "$architecture" = "arm64" ]]; then
- queue=Ubuntu.1804.Arm64.Perf
+ queue=Ubuntu.2204.Arm64.Perf
else
if [[ "$logical_machine" = "perfowl" ]]; then
- queue=Ubuntu.1804.Amd64.Owl.Perf
- else
+ queue=Ubuntu.2204.Amd64.Owl.Perf
+ elif [[ "$logical_machine" == "perftiger_crossgen" ]]; then
queue=Ubuntu.1804.Amd64.Tiger.Perf
+ else
+ queue=Ubuntu.2204.Amd64.Tiger.Perf
fi
fi
@@ -220,7 +222,7 @@ else
if [[ "$architecture" = "arm64" ]]; then
queue=ubuntu.1804.armarch.open
else
- queue=Ubuntu.1804.Amd64.Open
+ queue=Ubuntu.2204.Amd64.Open
fi
if [[ "$alpine" = "true" ]]; then
@@ -255,7 +257,11 @@ if [[ "$monoaot" == "true" ]]; then
extra_benchmark_dotnet_arguments="$extra_benchmark_dotnet_arguments --category-exclusion-filter NoAOT"
fi
-common_setup_arguments="--channel main --queue $queue --build-number $build_number --build-configs $configurations --architecture $architecture"
+cleaned_branch_name="release/6.0"
+if [[ $branch == *"refs/heads/release"* ]]; then
+ cleaned_branch_name=${branch/refs\/heads\//}
+fi
+common_setup_arguments="--channel $cleaned_branch_name --queue $queue --build-number $build_number --build-configs $configurations --architecture $architecture"
setup_arguments="--repository https://github.com/$repository --branch $branch --get-perf-hash --commit-sha $commit_sha $common_setup_arguments"
if [[ "$run_from_perf_repo" = true ]]; then
@@ -264,7 +270,7 @@ if [[ "$run_from_perf_repo" = true ]]; then
performance_directory=$workitem_directory
setup_arguments="--perf-hash $commit_sha $common_setup_arguments"
else
- git clone --branch main --depth 1 --quiet https://github.com/dotnet/performance.git $performance_directory
+ git clone --branch release/6.0 --depth 1 --quiet https://github.com/dotnet/performance.git $performance_directory
# uncomment to use BenchmarkDotNet sources instead of nuget packages
# git clone https://github.com/dotnet/BenchmarkDotNet.git $benchmark_directory
@@ -287,7 +293,7 @@ if [[ "$wasm_runtime_loc" != "" ]]; then
rsync -a --progress $wasm_dotnet_path/artifacts/BrowserWasm/artifacts/* $wasm_dotnet_path/artifacts
rm -r $wasm_dotnet_path/artifacts/BrowserWasm/artifacts
if [[ "$wasmaot" == "true" ]]; then
- extra_benchmark_dotnet_arguments="$extra_benchmark_dotnet_arguments --wasmEngine /home/helixbot/.jsvu/$javascript_engine --runtimeSrcDir \$HELIX_CORRELATION_PAYLOAD/dotnet-wasm --aotcompilermode wasm --buildTimeout 3600"
+ extra_benchmark_dotnet_arguments="$extra_benchmark_dotnet_arguments --wasmEngine /home/helixbot/.jsvu/$javascript_engine --runtimeSrcDir \$HELIX_CORRELATION_PAYLOAD/dotnet-wasm --aotcompilermode wasm --buildTimeout 3600"
else
extra_benchmark_dotnet_arguments="$extra_benchmark_dotnet_arguments --wasmEngine /home/helixbot/.jsvu/$javascript_engine --runtimeSrcDir \$HELIX_CORRELATION_PAYLOAD/dotnet-wasm"
fi
diff --git a/eng/testing/scenarios/BuildWasmAppsJobsList.txt b/eng/testing/scenarios/BuildWasmAppsJobsList.txt
index ba322274dfe62c..8afeea6cdeeb13 100644
--- a/eng/testing/scenarios/BuildWasmAppsJobsList.txt
+++ b/eng/testing/scenarios/BuildWasmAppsJobsList.txt
@@ -1,14 +1,19 @@
-BlazorWasmTests
-FlagsChangeRebuildTest
-InvariantGlobalizationTests
-LocalEMSDKTests
-MainWithArgsTests
-NativeBuildTests
-NativeLibraryTests
-NoopNativeRebuildTest
-RebuildTests
-ReferenceNewAssemblyRebuildTest
-SatelliteAssembliesTests
-SimpleSourceChangeRebuildTest
-WasmBuildAppTest
-WorkloadTests
+Wasm.Build.NativeRebuild.Tests.FlagsChangeRebuildTest
+Wasm.Build.NativeRebuild.Tests.NoopNativeRebuildTest
+Wasm.Build.NativeRebuild.Tests.ReferenceNewAssemblyRebuildTest
+Wasm.Build.NativeRebuild.Tests.SimpleSourceChangeRebuildTest
+Wasm.Build.Tests.BlazorWasmBuildPublishTests
+Wasm.Build.Tests.BlazorWasmTests
+Wasm.Build.Tests.BuildPublishTests
+Wasm.Build.Tests.CleanTests
+Wasm.Build.Tests.InvariantGlobalizationTests
+Wasm.Build.Tests.LocalEMSDKTests
+Wasm.Build.Tests.MainWithArgsTests
+Wasm.Build.Tests.NativeBuildTests
+Wasm.Build.Tests.NativeLibraryTests
+Wasm.Build.Tests.PInvokeTableGeneratorTests
+Wasm.Build.Tests.RebuildTests
+Wasm.Build.Tests.SatelliteAssembliesTests
+Wasm.Build.Tests.WasmBuildAppTest
+Wasm.Build.Tests.WasmNativeDefaultsTests
+Wasm.Build.Tests.WorkloadTests
diff --git a/eng/testing/tests.mobile.targets b/eng/testing/tests.mobile.targets
index fc196e0053efbf..2b862dd6461264 100644
--- a/eng/testing/tests.mobile.targets
+++ b/eng/testing/tests.mobile.targets
@@ -2,11 +2,15 @@
$([MSBuild]::NormalizeDirectory('$(OutDir)', 'AppBundle'))
+ $(AppBundleRoot)tests\$(AssemblyName)
+ $(AppBundleRoot)runonly\$(AssemblyName)
+ $([MSBuild]::NormalizeDirectory('$(PublishDir)', 'AppBundle'))
$([MSBuild]::NormalizePath('$(BundleDir)', '$(RunScriptOutputName)'))
true
true
BundleTestAppleApp;BundleTestAndroidApp
+ Publish
@@ -104,6 +108,7 @@
OutputType="AsmOnly"
Assemblies="@(AotInputAssemblies)"
AotModulesTablePath="$(BundleDir)\modules.c"
+ IntermediateOutputPath="$(IntermediateOutputPath)"
UseLLVM="$(MonoEnableLLVM)"
LLVMPath="$(MonoAotCrossDir)">
@@ -132,6 +137,9 @@
DestinationFolder="$(TestArchiveTestsDir)"
SkipUnchangedFiles="true"
Condition="'$(ArchiveTests)' == 'true' and '$(IgnoreForCI)' != 'true'" />
+
+
@@ -155,6 +163,10 @@
true
AppleTestRunner.dll
<_MobileIntermediateOutputPath Condition="'$(RunAOTCompilation)' == 'true'">$(IntermediateOutputPath)mobile
+ true
+ false
+ false
+ true
Full
@@ -189,6 +201,7 @@
Assemblies="@(AotInputAssemblies)"
AotModulesTablePath="$(BundleDir)\modules.m"
AotModulesTableLanguage="ObjC"
+ IntermediateOutputPath="$(IntermediateOutputPath)"
UseLLVM="$(MonoEnableLLVM)"
LLVMPath="$(MonoAotCrossDir)">
@@ -209,10 +222,12 @@
MainLibraryFileName="$(MainLibraryFileName)"
ForceAOT="$(RunAOTCompilation)"
ForceInterpreter="$(MonoForceInterpreter)"
+ EnableAppSandbox="$(EnableAppSandbox)"
InvariantGlobalization="$(InvariantGlobalization)"
UseConsoleUITemplate="True"
- GenerateXcodeProject="True"
- BuildAppBundle="True"
+ GenerateXcodeProject="$(GenerateXcodeProject)"
+ GenerateCMakeProject="$(GenerateCMakeProject)"
+ BuildAppBundle="$(GenerateXcodeProject)"
Optimized="$(Optimized)"
DevTeamProvisioning="$(DevTeamProvisioning)"
OutputDirectory="$(BundleDir)"
@@ -220,25 +235,20 @@
-
-
+
+
-
+
<_appFiles Include="$(AppBundlePath)/../**/*" />
-
-
-
- <_removeFiles Include="$(OutDir)*.*" />
-
+ Condition="'$(ArchiveTests)' == 'true' and '$(IgnoreForCI)' != 'true' and '$(GenerateXcodeProject)' == 'true'" />
-
-
+
+ true
+ true
$(BundleTestAppTargets);BundleTestWasmApp
true
true
+
+ false
@@ -55,10 +59,20 @@
Condition="'$(BuildAOTTestsOn)' == 'local'" />
- PrepareForWasmBuildApp;$(WasmBuildAppDependsOn)
+ WasmTriggerPublishApp
+ $(BundleTestWasmAppDependsOn);_BundleAOTTestWasmAppForHelix
+
- WasmBuildApp
- $(BundleTestWasmAppDependsOn);_BundleAOTTestWasmAppForHelix
+
+
+
+
+
+ true
+
+
+
+ PrepareForWasmBuildApp;$(WasmNestedPublishAppDependsOn)
@@ -80,6 +94,8 @@
$([System.IO.Path]::ChangeExtension($(_MainAssemblyPath), '.runtimeconfig.json'))
+
+
@@ -154,7 +170,7 @@
-
+
<_CopyLocalPaths
diff --git a/eng/testing/xunit/xunit.targets b/eng/testing/xunit/xunit.targets
index 8a950eb58ef383..5cf2846d40d184 100644
--- a/eng/testing/xunit/xunit.targets
+++ b/eng/testing/xunit/xunit.targets
@@ -1,11 +1,14 @@
-
+
+
+ true
+ true
+
+
$(OutDir)
diff --git a/global.json b/global.json
index e3425ab9bdd9de..ec967648df7acb 100644
--- a/global.json
+++ b/global.json
@@ -1,21 +1,21 @@
{
"sdk": {
- "version": "6.0.100-rc.1.21411.28",
+ "version": "6.0.130",
"allowPrerelease": true,
"rollForward": "major"
},
"tools": {
- "dotnet": "6.0.100-rc.1.21411.28"
+ "dotnet": "6.0.130"
},
"native-tools": {
"cmake": "3.16.4",
"python3": "3.7.1"
},
"msbuild-sdks": {
- "Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk": "6.0.0-beta.21413.4",
- "Microsoft.DotNet.Arcade.Sdk": "6.0.0-beta.21413.4",
- "Microsoft.DotNet.Helix.Sdk": "6.0.0-beta.21413.4",
- "Microsoft.DotNet.SharedFramework.Sdk": "6.0.0-beta.21413.4",
+ "Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk": "6.0.0-beta.24266.4",
+ "Microsoft.DotNet.Arcade.Sdk": "6.0.0-beta.24266.4",
+ "Microsoft.DotNet.Helix.Sdk": "6.0.0-beta.24266.4",
+ "Microsoft.DotNet.SharedFramework.Sdk": "6.0.0-beta.24266.4",
"Microsoft.Build.NoTargets": "3.1.0",
"Microsoft.Build.Traversal": "3.0.23",
"Microsoft.NET.Sdk.IL": "6.0.0-rc.1.21415.6"
diff --git a/src/coreclr/.nuget/Directory.Build.props b/src/coreclr/.nuget/Directory.Build.props
index cff00f49e0e561..e9351e6c127a17 100644
--- a/src/coreclr/.nuget/Directory.Build.props
+++ b/src/coreclr/.nuget/Directory.Build.props
@@ -16,10 +16,10 @@
true
+
-
- 6.0.0
- $(PackageVersion)
+
+ false
diff --git a/src/coreclr/.nuget/Directory.Build.targets b/src/coreclr/.nuget/Directory.Build.targets
index 365d5ed7a9ca60..687a6f40253106 100644
--- a/src/coreclr/.nuget/Directory.Build.targets
+++ b/src/coreclr/.nuget/Directory.Build.targets
@@ -1,5 +1,13 @@
+
+
+
+ $(ProductVersion)
+ $(PackageVersion)
+
+
+
$(ProductVersion)
+ $(ProductVersion)
true
$(NoWarn),0419,0649,CA2249,CA1830
enable
@@ -354,4 +355,10 @@
+
+
+
+ true
+
+
diff --git a/src/coreclr/System.Private.CoreLib/src/System/Diagnostics/StackFrame.CoreCLR.cs b/src/coreclr/System.Private.CoreLib/src/System/Diagnostics/StackFrame.CoreCLR.cs
index 948ebd2537230d..3cfc7cc193ec1f 100644
--- a/src/coreclr/System.Private.CoreLib/src/System/Diagnostics/StackFrame.CoreCLR.cs
+++ b/src/coreclr/System.Private.CoreLib/src/System/Diagnostics/StackFrame.CoreCLR.cs
@@ -2,6 +2,8 @@
// The .NET Foundation licenses this file to you under the MIT license.
using System.Text;
+using System.Reflection;
+using System.Runtime.CompilerServices;
namespace System.Diagnostics
{
@@ -50,5 +52,22 @@ private void BuildStackFrame(int skipFrames, bool needFileInfo)
}
private static bool AppendStackFrameWithoutMethodBase(StringBuilder sb) => false;
+
+ ///
+ /// Returns the MethodBase instance for the managed code IP address.
+ ///
+ /// Warning: The implementation of this method has race for dynamic and collectible methods.
+ ///
+ /// code address
+ /// MethodBase instance for the method or null if IP not found
+ internal static MethodBase? GetMethodFromNativeIP(IntPtr ip)
+ {
+ RuntimeMethodHandleInternal method = StackTrace.GetMethodDescFromNativeIP(ip);
+
+ if (method.Value == IntPtr.Zero)
+ return null;
+
+ return RuntimeType.GetMethodBase(null, method);
+ }
}
}
diff --git a/src/coreclr/System.Private.CoreLib/src/System/Diagnostics/StackTrace.CoreCLR.cs b/src/coreclr/System.Private.CoreLib/src/System/Diagnostics/StackTrace.CoreCLR.cs
index 9bef9fb72fae58..d82bbaf7e1e342 100644
--- a/src/coreclr/System.Private.CoreLib/src/System/Diagnostics/StackTrace.CoreCLR.cs
+++ b/src/coreclr/System.Private.CoreLib/src/System/Diagnostics/StackTrace.CoreCLR.cs
@@ -1,8 +1,9 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
-using System.Runtime.CompilerServices;
using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
namespace System.Diagnostics
{
@@ -11,6 +12,9 @@ public partial class StackTrace
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern void GetStackFramesInternal(StackFrameHelper sfh, int iSkip, bool fNeedFileInfo, Exception? e);
+ [DllImport(RuntimeHelpers.QCall)]
+ internal static extern RuntimeMethodHandleInternal GetMethodDescFromNativeIP(IntPtr ip);
+
internal static int CalculateFramesToSkip(StackFrameHelper StackF, int iNumFrames)
{
int iRetVal = 0;
diff --git a/src/coreclr/System.Private.CoreLib/src/System/GC.cs b/src/coreclr/System.Private.CoreLib/src/System/GC.cs
index bcbf042fd1b24d..33594cca7170ae 100644
--- a/src/coreclr/System.Private.CoreLib/src/System/GC.cs
+++ b/src/coreclr/System.Private.CoreLib/src/System/GC.cs
@@ -719,5 +719,13 @@ public static T[] AllocateArray(int length, bool pinned = false) // T[] rathe
return Unsafe.As(AllocateNewArray(typeof(T[]).TypeHandle.Value, length, flags));
}
+
+ [MethodImpl(MethodImplOptions.InternalCall)]
+ private static extern long _GetTotalPauseDuration();
+
+ public static TimeSpan GetTotalPauseDuration()
+ {
+ return new TimeSpan(_GetTotalPauseDuration());
+ }
}
}
diff --git a/src/coreclr/System.Private.CoreLib/src/System/Runtime/InteropServices/DynamicInterfaceCastableHelpers.cs b/src/coreclr/System.Private.CoreLib/src/System/Runtime/InteropServices/DynamicInterfaceCastableHelpers.cs
index 6ea1f1b444a507..da3cd7f1059e27 100644
--- a/src/coreclr/System.Private.CoreLib/src/System/Runtime/InteropServices/DynamicInterfaceCastableHelpers.cs
+++ b/src/coreclr/System.Private.CoreLib/src/System/Runtime/InteropServices/DynamicInterfaceCastableHelpers.cs
@@ -34,7 +34,7 @@ internal static bool IsInterfaceImplemented(IDynamicInterfaceCastable castable,
if (!implType.IsDefined(typeof(DynamicInterfaceCastableImplementationAttribute), inherit: false))
throw new InvalidOperationException(SR.Format(SR.IDynamicInterfaceCastable_MissingImplementationAttribute, implType, nameof(DynamicInterfaceCastableImplementationAttribute)));
- if (!implType.ImplementInterface(interfaceType))
+ if (!implType.IsAssignableTo(interfaceType))
throw new InvalidOperationException(SR.Format(SR.IDynamicInterfaceCastable_DoesNotImplementRequested, implType, interfaceType));
return implType;
diff --git a/src/coreclr/ToolBox/superpmi/superpmi-shared/lwmlist.h b/src/coreclr/ToolBox/superpmi/superpmi-shared/lwmlist.h
index 0f17ce7290e71c..4bffe52ecb4f63 100644
--- a/src/coreclr/ToolBox/superpmi/superpmi-shared/lwmlist.h
+++ b/src/coreclr/ToolBox/superpmi/superpmi-shared/lwmlist.h
@@ -157,6 +157,7 @@ LWM(TryResolveToken, Agnostic_CORINFO_RESOLVED_TOKENin, TryResolveTokenValue)
LWM(SatisfiesClassConstraints, DWORDLONG, DWORD)
LWM(SatisfiesMethodConstraints, DLDL, DWORD)
LWM(GetUnmanagedCallConv, MethodOrSigInfoValue, DD)
+LWM(DoesFieldBelongToClass, DLDL, DWORD)
DENSELWM(SigInstHandleMap, DWORDLONG)
#undef LWM
diff --git a/src/coreclr/ToolBox/superpmi/superpmi-shared/methodcontext.cpp b/src/coreclr/ToolBox/superpmi/superpmi-shared/methodcontext.cpp
index ae87cb1edde826..7d4a191c51cf62 100644
--- a/src/coreclr/ToolBox/superpmi/superpmi-shared/methodcontext.cpp
+++ b/src/coreclr/ToolBox/superpmi/superpmi-shared/methodcontext.cpp
@@ -6265,6 +6265,40 @@ DWORD MethodContext::repGetExpectedTargetArchitecture()
return value;
}
+void MethodContext::recDoesFieldBelongToClass(CORINFO_FIELD_HANDLE fld, CORINFO_CLASS_HANDLE cls, bool result)
+{
+ if (DoesFieldBelongToClass == nullptr)
+ DoesFieldBelongToClass = new LightWeightMap();
+
+ DLDL key;
+ ZeroMemory(&key, sizeof(key)); // Zero key including any struct padding
+ key.A = CastHandle(fld);
+ key.B = CastHandle(cls);
+
+ DWORD value = (DWORD)result;
+ DoesFieldBelongToClass->Add(key, value);
+ DEBUG_REC(dmpDoesFieldBelongToClass(key, result));
+}
+
+void MethodContext::dmpDoesFieldBelongToClass(DLDL key, bool value)
+{
+ printf("DoesFieldBelongToClass key fld=%016llX, cls=%016llx, result=%d", key.A, key.B, value);
+}
+
+bool MethodContext::repDoesFieldBelongToClass(CORINFO_FIELD_HANDLE fld, CORINFO_CLASS_HANDLE cls)
+{
+ DLDL key;
+ ZeroMemory(&key, sizeof(key)); // Zero key including any struct padding
+ key.A = CastHandle(fld);
+ key.B = CastHandle(cls);
+
+ AssertMapAndKeyExist(DoesFieldBelongToClass, key, ": key %016llX %016llX", key.A, key.B);
+
+ bool value = (bool)DoesFieldBelongToClass->Get(key);
+ DEBUG_REP(dmpDoesFieldBelongToClass(key, value));
+ return value;
+}
+
void MethodContext::recIsValidToken(CORINFO_MODULE_HANDLE module, unsigned metaTOK, bool result)
{
if (IsValidToken == nullptr)
diff --git a/src/coreclr/ToolBox/superpmi/superpmi-shared/methodcontext.h b/src/coreclr/ToolBox/superpmi/superpmi-shared/methodcontext.h
index b342996b446317..4abbef3faf135d 100644
--- a/src/coreclr/ToolBox/superpmi/superpmi-shared/methodcontext.h
+++ b/src/coreclr/ToolBox/superpmi/superpmi-shared/methodcontext.h
@@ -769,6 +769,10 @@ class MethodContext
void dmpGetExpectedTargetArchitecture(DWORD key, DWORD result);
DWORD repGetExpectedTargetArchitecture();
+ void recDoesFieldBelongToClass(CORINFO_FIELD_HANDLE fld, CORINFO_CLASS_HANDLE cls, bool result);
+ void dmpDoesFieldBelongToClass(DLDL key, bool value);
+ bool repDoesFieldBelongToClass(CORINFO_FIELD_HANDLE fld, CORINFO_CLASS_HANDLE cls);
+
void recIsValidToken(CORINFO_MODULE_HANDLE module, unsigned metaTOK, bool result);
void dmpIsValidToken(DLD key, DWORD value);
bool repIsValidToken(CORINFO_MODULE_HANDLE module, unsigned metaTOK);
@@ -1063,7 +1067,7 @@ enum mcPackets
Packet_TryResolveToken = 158, // Added 4/26/2016
Packet_SatisfiesClassConstraints = 110,
Packet_SatisfiesMethodConstraints = 111,
- Packet_ShouldEnforceCallvirtRestriction = 112, // Retired 2/18/2020
+ Packet_DoesFieldBelongToClass = 112, // Added 8/12/2021
Packet_SigInstHandleMap = 184,
Packet_AllocPgoInstrumentationBySchema = 186, // Added 1/4/2021
Packet_GetPgoInstrumentationResults = 187, // Added 1/4/2021
diff --git a/src/coreclr/ToolBox/superpmi/superpmi-shim-collector/icorjitinfo.cpp b/src/coreclr/ToolBox/superpmi/superpmi-shim-collector/icorjitinfo.cpp
index 4390113cf02798..2b802b3eacc311 100644
--- a/src/coreclr/ToolBox/superpmi/superpmi-shim-collector/icorjitinfo.cpp
+++ b/src/coreclr/ToolBox/superpmi/superpmi-shim-collector/icorjitinfo.cpp
@@ -2010,3 +2010,13 @@ bool interceptor_ICJI::notifyInstructionSetUsage(CORINFO_InstructionSet instruct
{
return original_ICorJitInfo->notifyInstructionSetUsage(instructionSet, supported);
}
+
+bool interceptor_ICJI::doesFieldBelongToClass(
+ CORINFO_FIELD_HANDLE fldHnd,
+ CORINFO_CLASS_HANDLE cls)
+{
+ mc->cr->AddCall("doesFieldBelongToClass");
+ bool result = original_ICorJitInfo->doesFieldBelongToClass(fldHnd, cls);
+ mc->recDoesFieldBelongToClass(fldHnd, cls, result);
+ return result;
+}
diff --git a/src/coreclr/ToolBox/superpmi/superpmi-shim-counter/icorjitinfo.cpp b/src/coreclr/ToolBox/superpmi/superpmi-shim-counter/icorjitinfo.cpp
index 445cc2a490e5ba..e967975ae244a8 100644
--- a/src/coreclr/ToolBox/superpmi/superpmi-shim-counter/icorjitinfo.cpp
+++ b/src/coreclr/ToolBox/superpmi/superpmi-shim-counter/icorjitinfo.cpp
@@ -1389,3 +1389,11 @@ uint32_t interceptor_ICJI::getJitFlags(
return original_ICorJitInfo->getJitFlags(flags, sizeInBytes);
}
+bool interceptor_ICJI::doesFieldBelongToClass(
+ CORINFO_FIELD_HANDLE fldHnd,
+ CORINFO_CLASS_HANDLE cls)
+{
+ mcs->AddCall("doesFieldBelongToClass");
+ return original_ICorJitInfo->doesFieldBelongToClass(fldHnd, cls);
+}
+
diff --git a/src/coreclr/ToolBox/superpmi/superpmi-shim-simple/icorjitinfo.cpp b/src/coreclr/ToolBox/superpmi/superpmi-shim-simple/icorjitinfo.cpp
index 7b04e139c4d016..8c982934239fe3 100644
--- a/src/coreclr/ToolBox/superpmi/superpmi-shim-simple/icorjitinfo.cpp
+++ b/src/coreclr/ToolBox/superpmi/superpmi-shim-simple/icorjitinfo.cpp
@@ -1217,3 +1217,10 @@ uint32_t interceptor_ICJI::getJitFlags(
return original_ICorJitInfo->getJitFlags(flags, sizeInBytes);
}
+bool interceptor_ICJI::doesFieldBelongToClass(
+ CORINFO_FIELD_HANDLE fldHnd,
+ CORINFO_CLASS_HANDLE cls)
+{
+ return original_ICorJitInfo->doesFieldBelongToClass(fldHnd, cls);
+}
+
diff --git a/src/coreclr/ToolBox/superpmi/superpmi/icorjitinfo.cpp b/src/coreclr/ToolBox/superpmi/superpmi/icorjitinfo.cpp
index b2cb35339adcc7..cac9ce2b0f8716 100644
--- a/src/coreclr/ToolBox/superpmi/superpmi/icorjitinfo.cpp
+++ b/src/coreclr/ToolBox/superpmi/superpmi/icorjitinfo.cpp
@@ -1574,6 +1574,13 @@ uint32_t MyICJI::getJitFlags(CORJIT_FLAGS* jitFlags, uint32_t sizeInBytes)
return ret;
}
+bool MyICJI::doesFieldBelongToClass(CORINFO_FIELD_HANDLE fldHnd, CORINFO_CLASS_HANDLE cls)
+{
+ jitInstance->mc->cr->AddCall("doesFieldBelongToClass");
+ bool result = jitInstance->mc->repDoesFieldBelongToClass(fldHnd, cls);
+ return result;
+}
+
// Runs the given function with the given parameter under an error trap
// and returns true if the function completes successfully. We fake this
// up a bit for SuperPMI and simply catch all exceptions.
diff --git a/src/coreclr/binder/assemblybinder.cpp b/src/coreclr/binder/assemblybinder.cpp
index c4a2e85d8f5ac8..658e0e031086c6 100644
--- a/src/coreclr/binder/assemblybinder.cpp
+++ b/src/coreclr/binder/assemblybinder.cpp
@@ -33,6 +33,7 @@
extern HRESULT RuntimeInvokeHostAssemblyResolver(INT_PTR pManagedAssemblyLoadContextToBindWithin,
BINDER_SPACE::AssemblyName *pAssemblyName,
CLRPrivBinderCoreCLR *pTPABinder,
+ AssemblyLoadContext *pBinder,
ICLRPrivAssembly **ppLoadedAssembly);
#endif // !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
@@ -1408,6 +1409,7 @@ namespace BINDER_SPACE
HRESULT AssemblyBinder::BindUsingHostAssemblyResolver(/* in */ INT_PTR pManagedAssemblyLoadContextToBindWithin,
/* in */ AssemblyName *pAssemblyName,
/* in */ CLRPrivBinderCoreCLR *pTPABinder,
+ /* in */ AssemblyLoadContext *pBinder,
/* out */ Assembly **ppAssembly)
{
HRESULT hr = E_FAIL;
@@ -1417,7 +1419,7 @@ HRESULT AssemblyBinder::BindUsingHostAssemblyResolver(/* in */ INT_PTR pManagedA
// RuntimeInvokeHostAssemblyResolver will perform steps 2-4 of CLRPrivBinderAssemblyLoadContext::BindAssemblyByName.
ICLRPrivAssembly *pLoadedAssembly = NULL;
hr = RuntimeInvokeHostAssemblyResolver(pManagedAssemblyLoadContextToBindWithin,
- pAssemblyName, pTPABinder, &pLoadedAssembly);
+ pAssemblyName, pTPABinder, pBinder, &pLoadedAssembly);
if (SUCCEEDED(hr))
{
_ASSERTE(pLoadedAssembly != NULL);
diff --git a/src/coreclr/binder/clrprivbinderassemblyloadcontext.cpp b/src/coreclr/binder/clrprivbinderassemblyloadcontext.cpp
index 92d83d75b111a3..f44db5af13342d 100644
--- a/src/coreclr/binder/clrprivbinderassemblyloadcontext.cpp
+++ b/src/coreclr/binder/clrprivbinderassemblyloadcontext.cpp
@@ -84,7 +84,7 @@ HRESULT CLRPrivBinderAssemblyLoadContext::BindAssemblyByName(AssemblyNameData *p
// of what to do next. The host-overridden binder can either fail the bind or return reference to an existing assembly
// that has been loaded.
//
- hr = AssemblyBinder::BindUsingHostAssemblyResolver(GetManagedAssemblyLoadContext(), pAssemblyName, m_pTPABinder, &pCoreCLRFoundAssembly);
+ hr = AssemblyBinder::BindUsingHostAssemblyResolver(GetManagedAssemblyLoadContext(), pAssemblyName, m_pTPABinder, this, &pCoreCLRFoundAssembly);
if (SUCCEEDED(hr))
{
// We maybe returned an assembly that was bound to a different AssemblyLoadContext instance.
@@ -258,11 +258,13 @@ void CLRPrivBinderAssemblyLoadContext::PrepareForLoadContextRelease(INT_PTR ptrM
_ASSERTE(m_pAssemblyLoaderAllocator != NULL);
_ASSERTE(m_loaderAllocatorHandle != NULL);
- // We cannot delete the binder here as it is used indirectly when comparing assemblies with the same binder
- // It will be deleted when the LoaderAllocator will be deleted
- // But we can release the LoaderAllocator as we are no longer using it here
+ // We need to keep the LoaderAllocator pointer set as it still may be needed for creating references between the
+ // native LoaderAllocators of two collectible contexts in case the AssemblyLoadContext.Unload was called on the current
+ // context before returning from its AssemblyLoadContext.Load override or the context's Resolving event.
+ // But we need to release the LoaderAllocator so that it doesn't prevent completion of the final phase of unloading in
+ // some cases. It is safe to do as the AssemblyLoaderAllocator is guaranteed to be alive at least until the
+ // CustomAssemblyBinder::ReleaseLoadContext is called, where we NULL this pointer.
m_pAssemblyLoaderAllocator->Release();
- m_pAssemblyLoaderAllocator = NULL;
// Destroy the strong handle to the LoaderAllocator in order to let it reach its finalizer
DestroyHandle(reinterpret_cast(m_loaderAllocatorHandle));
@@ -287,6 +289,10 @@ void CLRPrivBinderAssemblyLoadContext::ReleaseLoadContext()
handle = reinterpret_cast(m_ptrManagedStrongAssemblyLoadContext);
DestroyHandle(handle);
m_ptrManagedAssemblyLoadContext = NULL;
+
+ // The AssemblyLoaderAllocator is in a process of shutdown and should not be used
+ // after this point.
+ m_pAssemblyLoaderAllocator = NULL;
}
#endif // !defined(DACCESS_COMPILE) && !defined(CROSSGEN_COMPILE)
diff --git a/src/coreclr/binder/clrprivbindercoreclr.cpp b/src/coreclr/binder/clrprivbindercoreclr.cpp
index fec66a75458800..8a8aabb0976a5c 100644
--- a/src/coreclr/binder/clrprivbindercoreclr.cpp
+++ b/src/coreclr/binder/clrprivbindercoreclr.cpp
@@ -107,7 +107,7 @@ HRESULT CLRPrivBinderCoreCLR::BindUsingAssemblyName(BINDER_SPACE::AssemblyName *
if (pManagedAssemblyLoadContext != NULL)
{
hr = AssemblyBinder::BindUsingHostAssemblyResolver(pManagedAssemblyLoadContext, pAssemblyName,
- NULL, &pCoreCLRFoundAssembly);
+ NULL, this, &pCoreCLRFoundAssembly);
if (SUCCEEDED(hr))
{
// We maybe returned an assembly that was bound to a different AssemblyLoadContext instance.
diff --git a/src/coreclr/binder/inc/assemblybinder.hpp b/src/coreclr/binder/inc/assemblybinder.hpp
index 2ba11b7ac0183d..ffaab93e4fc3ff 100644
--- a/src/coreclr/binder/inc/assemblybinder.hpp
+++ b/src/coreclr/binder/inc/assemblybinder.hpp
@@ -21,6 +21,7 @@
class CLRPrivBinderCoreCLR;
class PEAssembly;
class PEImage;
+class AssemblyLoadContext;
namespace BINDER_SPACE
{
@@ -59,6 +60,7 @@ namespace BINDER_SPACE
static HRESULT BindUsingHostAssemblyResolver (/* in */ INT_PTR pManagedAssemblyLoadContextToBindWithin,
/* in */ AssemblyName *pAssemblyName,
/* in */ CLRPrivBinderCoreCLR *pTPABinder,
+ /* in */ AssemblyLoadContext *pBinder,
/* out */ Assembly **ppAssembly);
static HRESULT BindUsingPEImage(/* in */ ApplicationContext *pApplicationContext,
diff --git a/src/coreclr/debug/createdump/crashinfo.cpp b/src/coreclr/debug/createdump/crashinfo.cpp
index 8ab327eb15578d..2ca9c21cd4c27f 100644
--- a/src/coreclr/debug/createdump/crashinfo.cpp
+++ b/src/coreclr/debug/createdump/crashinfo.cpp
@@ -8,14 +8,16 @@ CrashInfo* g_crashInfo;
static bool ModuleInfoCompare(const ModuleInfo* lhs, const ModuleInfo* rhs) { return lhs->BaseAddress() < rhs->BaseAddress(); }
-CrashInfo::CrashInfo(pid_t pid, bool gatherFrames, pid_t crashThread, uint32_t signal) :
+CrashInfo::CrashInfo(const CreateDumpOptions& options) :
m_ref(1),
- m_pid(pid),
+ m_pid(options.Pid),
m_ppid(-1),
m_hdac(nullptr),
- m_gatherFrames(gatherFrames),
- m_crashThread(crashThread),
- m_signal(signal),
+ m_pClrDataEnumRegions(nullptr),
+ m_pClrDataProcess(nullptr),
+ m_gatherFrames(options.CrashReport),
+ m_crashThread(options.CrashThread),
+ m_signal(options.Signal),
m_moduleInfos(&ModuleInfoCompare),
m_mainModule(nullptr)
{
@@ -25,6 +27,11 @@ CrashInfo::CrashInfo(pid_t pid, bool gatherFrames, pid_t crashThread, uint32_t s
#else
m_auxvValues.fill(0);
m_fd = -1;
+ memset(&m_siginfo, 0, sizeof(m_siginfo));
+ m_siginfo.si_signo = options.Signal;
+ m_siginfo.si_code = options.SignalCode;
+ m_siginfo.si_errno = options.SignalErrno;
+ m_siginfo.si_addr = options.SignalAddress;
#endif
}
@@ -44,6 +51,15 @@ CrashInfo::~CrashInfo()
}
m_moduleInfos.clear();
+ // Clean up DAC interfaces
+ if (m_pClrDataEnumRegions != nullptr)
+ {
+ m_pClrDataEnumRegions->Release();
+ }
+ if (m_pClrDataProcess != nullptr)
+ {
+ m_pClrDataProcess->Release();
+ }
// Unload DAC module
if (m_hdac != nullptr)
{
@@ -56,7 +72,7 @@ CrashInfo::~CrashInfo()
kern_return_t result = ::mach_port_deallocate(mach_task_self(), m_task);
if (result != KERN_SUCCESS)
{
- fprintf(stderr, "~CrashInfo: mach_port_deallocate FAILED %x %s\n", result, mach_error_string(result));
+ printf_error("~CrashInfo: mach_port_deallocate FAILED %x %s\n", result, mach_error_string(result));
}
}
#endif
@@ -190,13 +206,19 @@ CrashInfo::GatherCrashInfo(MINIDUMP_TYPE minidumpType)
thread->GetThreadStack();
}
}
- // Gather all the useful memory regions from the DAC
- if (!EnumerateMemoryRegionsWithDAC(minidumpType))
+ // Load and initialize DAC interfaces
+ if (!InitializeDAC())
+ {
+ return false;
+ }
+ if (!EnumerateManagedModules())
+ {
+ return false;
+ }
+ if (!UnwindAllThreads())
{
return false;
}
- // Join all adjacent memory regions
- CombineMemoryRegions();
return true;
}
@@ -204,19 +226,15 @@ CrashInfo::GatherCrashInfo(MINIDUMP_TYPE minidumpType)
// Enumerate all the memory regions using the DAC memory region support given a minidump type
//
bool
-CrashInfo::EnumerateMemoryRegionsWithDAC(MINIDUMP_TYPE minidumpType)
+CrashInfo::InitializeDAC()
{
ReleaseHolder dataTarget = new DumpDataTarget(*this);
PFN_CLRDataCreateInstance pfnCLRDataCreateInstance = nullptr;
- ICLRDataEnumMemoryRegions* pClrDataEnumRegions = nullptr;
- IXCLRDataProcess* pClrDataProcess = nullptr;
- HRESULT hr = S_OK;
bool result = false;
+ HRESULT hr = S_OK;
if (!m_coreclrPath.empty())
{
- TRACE("EnumerateMemoryRegionsWithDAC: Memory enumeration STARTED\n");
-
// We assume that the DAC is in the same location as the libcoreclr.so module
std::string dacPath;
dacPath.append(m_coreclrPath);
@@ -226,149 +244,165 @@ CrashInfo::EnumerateMemoryRegionsWithDAC(MINIDUMP_TYPE minidumpType)
m_hdac = LoadLibraryA(dacPath.c_str());
if (m_hdac == nullptr)
{
- fprintf(stderr, "LoadLibraryA(%s) FAILED %d\n", dacPath.c_str(), GetLastError());
+ printf_error("LoadLibraryA(%s) FAILED %d\n", dacPath.c_str(), GetLastError());
goto exit;
}
pfnCLRDataCreateInstance = (PFN_CLRDataCreateInstance)GetProcAddress(m_hdac, "CLRDataCreateInstance");
if (pfnCLRDataCreateInstance == nullptr)
{
- fprintf(stderr, "GetProcAddress(CLRDataCreateInstance) FAILED %d\n", GetLastError());
+ printf_error("GetProcAddress(CLRDataCreateInstance) FAILED %d\n", GetLastError());
goto exit;
}
- if ((minidumpType & MiniDumpWithFullMemory) == 0)
- {
- hr = pfnCLRDataCreateInstance(__uuidof(ICLRDataEnumMemoryRegions), dataTarget, (void**)&pClrDataEnumRegions);
- if (FAILED(hr))
- {
- fprintf(stderr, "CLRDataCreateInstance(ICLRDataEnumMemoryRegions) FAILED %08x\n", hr);
- goto exit;
- }
- // Calls CrashInfo::EnumMemoryRegion for each memory region found by the DAC
- hr = pClrDataEnumRegions->EnumMemoryRegions(this, minidumpType, CLRDATA_ENUM_MEM_DEFAULT);
- if (FAILED(hr))
- {
- fprintf(stderr, "EnumMemoryRegions FAILED %08x\n", hr);
- goto exit;
- }
- }
- hr = pfnCLRDataCreateInstance(__uuidof(IXCLRDataProcess), dataTarget, (void**)&pClrDataProcess);
+ hr = pfnCLRDataCreateInstance(__uuidof(ICLRDataEnumMemoryRegions), dataTarget, (void**)&m_pClrDataEnumRegions);
if (FAILED(hr))
{
- fprintf(stderr, "CLRDataCreateInstance(IXCLRDataProcess) FAILED %08x\n", hr);
+ printf_error("CLRDataCreateInstance(ICLRDataEnumMemoryRegions) FAILED %08x\n", hr);
goto exit;
}
- TRACE("EnumerateMemoryRegionsWithDAC: Memory enumeration FINISHED\n");
- if (!EnumerateManagedModules(pClrDataProcess))
+ hr = pfnCLRDataCreateInstance(__uuidof(IXCLRDataProcess), dataTarget, (void**)&m_pClrDataProcess);
+ if (FAILED(hr))
{
+ printf_error("CLRDataCreateInstance(IXCLRDataProcess) FAILED %08x\n", hr);
goto exit;
}
}
- else {
- TRACE("EnumerateMemoryRegionsWithDAC: coreclr not found; not using DAC\n");
- }
- if (!UnwindAllThreads(pClrDataProcess))
+ else
{
- goto exit;
+ TRACE("InitializeDAC: coreclr not found; not using DAC\n");
}
result = true;
exit:
- if (pClrDataEnumRegions != nullptr)
- {
- pClrDataEnumRegions->Release();
- }
- if (pClrDataProcess != nullptr)
+ return result;
+}
+
+//
+// Enumerate all the memory regions using the DAC memory region support given a minidump type
+//
+bool
+CrashInfo::EnumerateMemoryRegionsWithDAC(MINIDUMP_TYPE minidumpType)
+{
+ if (m_pClrDataEnumRegions != nullptr && (minidumpType & MiniDumpWithFullMemory) == 0)
{
- pClrDataProcess->Release();
+ TRACE("EnumerateMemoryRegionsWithDAC: Memory enumeration STARTED\n");
+
+ // Since on both Linux and MacOS all the RW regions will be added for heap
+ // dumps by createdump, the only thing differentiating a MiniDumpNormal and
+ // a MiniDumpWithPrivateReadWriteMemory is that the later uses the EnumMemory
+ // APIs. This is kind of expensive on larger applications (4 minutes, or even
+ // more), and this should already be in RW pages. Change the dump type to the
+ // faster normal one. This one already ensures necessary DAC globals, etc.
+ // without the costly assembly, module, class, type runtime data structures
+ // enumeration.
+ if (minidumpType & MiniDumpWithPrivateReadWriteMemory)
+ {
+ char* fastHeapDumps = getenv("COMPlus_DbgEnableFastHeapDumps");
+ if (fastHeapDumps != nullptr && strcmp(fastHeapDumps, "1") == 0)
+ {
+ minidumpType = MiniDumpNormal;
+ }
+ }
+ // Calls CrashInfo::EnumMemoryRegion for each memory region found by the DAC
+ HRESULT hr = m_pClrDataEnumRegions->EnumMemoryRegions(this, minidumpType, CLRDATA_ENUM_MEM_DEFAULT);
+ if (FAILED(hr))
+ {
+ printf_error("EnumMemoryRegions FAILED %08x\n", hr);
+ return false;
+ }
+ TRACE("EnumerateMemoryRegionsWithDAC: Memory enumeration FINISHED\n");
}
- return result;
+ return true;
}
//
// Enumerate all the managed modules and replace the module mapping with the module name found.
//
bool
-CrashInfo::EnumerateManagedModules(IXCLRDataProcess* pClrDataProcess)
+CrashInfo::EnumerateManagedModules()
{
CLRDATA_ENUM enumModules = 0;
- bool result = true;
HRESULT hr = S_OK;
- if (FAILED(hr = pClrDataProcess->StartEnumModules(&enumModules))) {
- fprintf(stderr, "StartEnumModules FAILED %08x\n", hr);
- return false;
- }
-
- while (true)
+ if (m_pClrDataProcess != nullptr)
{
- ReleaseHolder pClrDataModule;
- if ((hr = pClrDataProcess->EnumModule(&enumModules, &pClrDataModule)) != S_OK) {
- break;
- }
+ TRACE("EnumerateManagedModules: Module enumeration STARTED\n");
- // Skip any dynamic modules. The Request call below on some DACs crashes on dynamic modules.
- ULONG32 flags;
- if ((hr = pClrDataModule->GetFlags(&flags)) != S_OK) {
- TRACE("MODULE: GetFlags FAILED %08x\n", hr);
- continue;
- }
- if (flags & CLRDATA_MODULE_IS_DYNAMIC) {
- TRACE("MODULE: Skipping dynamic module\n");
- continue;
+ if (FAILED(hr = m_pClrDataProcess->StartEnumModules(&enumModules))) {
+ printf_error("StartEnumModules FAILED %08x\n", hr);
+ return false;
}
- DacpGetModuleData moduleData;
- if (SUCCEEDED(hr = moduleData.Request(pClrDataModule.GetPtr())))
+ while (true)
{
- TRACE("MODULE: %" PRIA PRIx64 " dyn %d inmem %d file %d pe %" PRIA PRIx64 " pdb %" PRIA PRIx64, (uint64_t)moduleData.LoadedPEAddress, moduleData.IsDynamic,
- moduleData.IsInMemory, moduleData.IsFileLayout, (uint64_t)moduleData.PEFile, (uint64_t)moduleData.InMemoryPdbAddress);
+ ReleaseHolder pClrDataModule;
+ if ((hr = m_pClrDataProcess->EnumModule(&enumModules, &pClrDataModule)) != S_OK) {
+ break;
+ }
- if (!moduleData.IsDynamic && moduleData.LoadedPEAddress != 0)
+ // Skip any dynamic modules. The Request call below on some DACs crashes on dynamic modules.
+ ULONG32 flags;
+ if ((hr = pClrDataModule->GetFlags(&flags)) != S_OK) {
+ TRACE("MODULE: GetFlags FAILED %08x\n", hr);
+ continue;
+ }
+ if (flags & CLRDATA_MODULE_IS_DYNAMIC) {
+ TRACE("MODULE: Skipping dynamic module\n");
+ continue;
+ }
+
+ DacpGetModuleData moduleData;
+ if (SUCCEEDED(hr = moduleData.Request(pClrDataModule.GetPtr())))
{
- ArrayHolder wszUnicodeName = new WCHAR[MAX_LONGPATH + 1];
- if (SUCCEEDED(hr = pClrDataModule->GetFileName(MAX_LONGPATH, nullptr, wszUnicodeName)))
+ TRACE("MODULE: %" PRIA PRIx64 " dyn %d inmem %d file %d pe %" PRIA PRIx64 " pdb %" PRIA PRIx64, (uint64_t)moduleData.LoadedPEAddress, moduleData.IsDynamic,
+ moduleData.IsInMemory, moduleData.IsFileLayout, (uint64_t)moduleData.PEFile, (uint64_t)moduleData.InMemoryPdbAddress);
+
+ if (!moduleData.IsDynamic && moduleData.LoadedPEAddress != 0)
{
- std::string moduleName = FormatString("%S", wszUnicodeName.GetPtr());
+ ArrayHolder wszUnicodeName = new WCHAR[MAX_LONGPATH + 1];
+ if (SUCCEEDED(hr = pClrDataModule->GetFileName(MAX_LONGPATH, nullptr, wszUnicodeName)))
+ {
+ std::string moduleName = FormatString("%S", wszUnicodeName.GetPtr());
- // Change the module mapping name
- ReplaceModuleMapping(moduleData.LoadedPEAddress, moduleData.LoadedPESize, moduleName);
+ // Change the module mapping name
+ ReplaceModuleMapping(moduleData.LoadedPEAddress, moduleData.LoadedPESize, moduleName);
- // Add managed module info
- AddModuleInfo(true, moduleData.LoadedPEAddress, pClrDataModule, moduleName);
+ // Add managed module info
+ AddModuleInfo(true, moduleData.LoadedPEAddress, pClrDataModule, moduleName);
+ }
+ else {
+ TRACE("\nModule.GetFileName FAILED %08x\n", hr);
+ }
}
else {
- TRACE("\nModule.GetFileName FAILED %08x\n", hr);
+ TRACE("\n");
}
}
else {
- TRACE("\n");
+ TRACE("moduleData.Request FAILED %08x\n", hr);
}
}
- else {
- TRACE("moduleData.Request FAILED %08x\n", hr);
- }
- }
- if (enumModules != 0) {
- pClrDataProcess->EndEnumModules(enumModules);
+ if (enumModules != 0) {
+ m_pClrDataProcess->EndEnumModules(enumModules);
+ }
+ TRACE("EnumerateManagedModules: Module enumeration FINISHED\n");
}
-
- return result;
+ return true;
}
//
// Unwind all the native threads to ensure that the dwarf unwind info is added to the core dump.
//
bool
-CrashInfo::UnwindAllThreads(IXCLRDataProcess* pClrDataProcess)
+CrashInfo::UnwindAllThreads()
{
ReleaseHolder pSos = nullptr;
- if (pClrDataProcess != nullptr) {
- pClrDataProcess->QueryInterface(__uuidof(ISOSDacInterface), (void**)&pSos);
+ if (m_pClrDataProcess != nullptr) {
+ m_pClrDataProcess->QueryInterface(__uuidof(ISOSDacInterface), (void**)&pSos);
}
// For each native and managed thread
for (ThreadInfo* thread : m_threads)
{
- if (!thread->UnwindThread(pClrDataProcess, pSos)) {
+ if (!thread->UnwindThread(m_pClrDataProcess, pSos)) {
return false;
}
}
@@ -744,6 +778,7 @@ CrashInfo::Trace(const char* format, ...)
{
va_list args;
va_start(args, format);
+ fprintf(stdout, "[createdump] ");
vfprintf(stdout, format, args);
fflush(stdout);
va_end(args);
@@ -757,6 +792,7 @@ CrashInfo::TraceVerbose(const char* format, ...)
{
va_list args;
va_start(args, format);
+ fprintf(stdout, "[createdump] ");
vfprintf(stdout, format, args);
fflush(stdout);
va_end(args);
@@ -827,5 +863,5 @@ FormatGuid(const GUID* guid)
{
uint8_t* bytes = (uint8_t*)guid;
return FormatString("%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
- bytes[3], bytes[2], bytes[1], bytes[0], bytes[5], bytes[4], bytes[7], bytes[6], bytes[8], bytes[9], bytes[10], bytes[11], bytes[12], bytes[13], bytes[14], bytes[15]);
+ bytes[3], bytes[2], bytes[1], bytes[0], bytes[5], bytes[4], bytes[7], bytes[6], bytes[8], bytes[9], bytes[10], bytes[11], bytes[12], bytes[13], bytes[14], bytes[15]);
}
diff --git a/src/coreclr/debug/createdump/crashinfo.h b/src/coreclr/debug/createdump/crashinfo.h
index ca8f77994ac751..74f9c5d4d3b1d5 100644
--- a/src/coreclr/debug/createdump/crashinfo.h
+++ b/src/coreclr/debug/createdump/crashinfo.h
@@ -47,6 +47,8 @@ class CrashInfo : public ICLRDataEnumMemoryRegionsCallback,
pid_t m_ppid; // parent pid
pid_t m_tgid; // process group
HMODULE m_hdac; // dac module handle when loaded
+ ICLRDataEnumMemoryRegions* m_pClrDataEnumRegions; // dac enumerate memory interface instance
+ IXCLRDataProcess* m_pClrDataProcess; // dac process interface instance
bool m_gatherFrames; // if true, add the native and managed stack frames to the thread info
pid_t m_crashThread; // crashing thread id or 0 if none
uint32_t m_signal; // crash signal code or 0 if none
@@ -54,6 +56,7 @@ class CrashInfo : public ICLRDataEnumMemoryRegionsCallback,
#ifdef __APPLE__
vm_map_t m_task; // the mach task for the process
#else
+ siginfo_t m_siginfo; // signal info (if any)
bool m_canUseProcVmReadSyscall;
int m_fd; // /proc//mem handle
#endif
@@ -77,13 +80,15 @@ class CrashInfo : public ICLRDataEnumMemoryRegionsCallback,
void operator=(const CrashInfo&) = delete;
public:
- CrashInfo(pid_t pid, bool gatherFrames, pid_t crashThread, uint32_t signal);
+ CrashInfo(const CreateDumpOptions& options);
virtual ~CrashInfo();
bool Initialize();
void CleanupAndResumeProcess();
bool EnumerateAndSuspendThreads();
bool GatherCrashInfo(MINIDUMP_TYPE minidumpType);
+ void CombineMemoryRegions();
+ bool EnumerateMemoryRegionsWithDAC(MINIDUMP_TYPE minidumpType);
bool ReadMemory(void* address, void* buffer, size_t size); // read memory and add to dump
bool ReadProcessMemory(void* address, void* buffer, size_t size, size_t* read); // read raw memory
uint64_t GetBaseAddressFromAddress(uint64_t address);
@@ -113,6 +118,7 @@ class CrashInfo : public ICLRDataEnumMemoryRegionsCallback,
#ifndef __APPLE__
inline const std::vector& AuxvEntries() const { return m_auxvEntries; }
inline size_t GetAuxvSize() const { return m_auxvEntries.size() * sizeof(elf_aux_entry); }
+ inline const siginfo_t* SigInfo() const { return &m_siginfo; }
#endif
// IUnknown
@@ -126,7 +132,6 @@ class CrashInfo : public ICLRDataEnumMemoryRegionsCallback,
private:
#ifdef __APPLE__
bool EnumerateMemoryRegions();
- bool TryFindDyLinker(mach_vm_address_t address, mach_vm_size_t size, bool* found);
void VisitModule(MachOModule& module);
void VisitSegment(MachOModule& module, const segment_command_64& segment);
void VisitSection(MachOModule& module, const section_64& section);
@@ -137,15 +142,14 @@ class CrashInfo : public ICLRDataEnumMemoryRegionsCallback,
void VisitProgramHeader(uint64_t loadbias, uint64_t baseAddress, ElfW(Phdr)* phdr);
bool EnumerateModuleMappings();
#endif
- bool EnumerateMemoryRegionsWithDAC(MINIDUMP_TYPE minidumpType);
- bool EnumerateManagedModules(IXCLRDataProcess* pClrDataProcess);
- bool UnwindAllThreads(IXCLRDataProcess* pClrDataProcess);
+ bool InitializeDAC();
+ bool EnumerateManagedModules();
+ bool UnwindAllThreads();
void ReplaceModuleMapping(CLRDATA_ADDRESS baseAddress, ULONG64 size, const std::string& pszName);
void InsertMemoryBackedRegion(const MemoryRegion& region);
void InsertMemoryRegion(const MemoryRegion& region);
uint32_t GetMemoryRegionFlags(uint64_t start);
bool ValidRegion(const MemoryRegion& region);
- void CombineMemoryRegions();
void Trace(const char* format, ...);
void TraceVerbose(const char* format, ...);
};
diff --git a/src/coreclr/debug/createdump/crashinfomac.cpp b/src/coreclr/debug/createdump/crashinfomac.cpp
index ad9c247e37dfdc..6f0854b0743433 100644
--- a/src/coreclr/debug/createdump/crashinfomac.cpp
+++ b/src/coreclr/debug/createdump/crashinfomac.cpp
@@ -3,6 +3,8 @@
#include "createdump.h"
+int g_readProcessMemoryResult = KERN_SUCCESS;
+
bool
CrashInfo::Initialize()
{
@@ -12,7 +14,7 @@ CrashInfo::Initialize()
kern_return_t result = ::task_for_pid(mach_task_self(), m_pid, &m_task);
if (result != KERN_SUCCESS)
{
- fprintf(stderr, "task_for_pid(%d) FAILED %x %s\n", m_pid, result, mach_error_string(result));
+ printf_error("task_for_pid(%d) FAILED %x %s\n", m_pid, result, mach_error_string(result));
return false;
}
return true;
@@ -37,14 +39,14 @@ CrashInfo::EnumerateAndSuspendThreads()
kern_return_t result = ::task_suspend(Task());
if (result != KERN_SUCCESS)
{
- fprintf(stderr, "task_suspend(%d) FAILED %x %s\n", m_pid, result, mach_error_string(result));
+ printf_error("task_suspend(%d) FAILED %x %s\n", m_pid, result, mach_error_string(result));
return false;
}
result = ::task_threads(Task(), &threadList, &threadCount);
if (result != KERN_SUCCESS)
{
- fprintf(stderr, "task_threads(%d) FAILED %x %s\n", m_pid, result, mach_error_string(result));
+ printf_error("task_threads(%d) FAILED %x %s\n", m_pid, result, mach_error_string(result));
return false;
}
@@ -127,7 +129,7 @@ CrashInfo::EnumerateMemoryRegions()
}
else
{
- if ((info.protection & (VM_PROT_READ | VM_PROT_WRITE | VM_PROT_EXECUTE)) != 0)
+ if (info.share_mode != SM_EMPTY && (info.protection & (VM_PROT_READ | VM_PROT_WRITE | VM_PROT_EXECUTE)) != 0)
{
MemoryRegion memoryRegion(ConvertProtectionFlags(info.protection), address, address + size, info.offset);
m_allMemoryRegions.insert(memoryRegion);
@@ -136,16 +138,20 @@ CrashInfo::EnumerateMemoryRegions()
}
}
- // Now find all the modules and add them to the module list
- for (const MemoryRegion& region : m_allMemoryRegions)
+ // Get the dylinker info and enumerate all the modules
+ struct task_dyld_info dyld_info;
+ mach_msg_type_number_t count = TASK_DYLD_INFO_COUNT;
+ kern_return_t result = ::task_info(Task(), TASK_DYLD_INFO, (task_info_t)&dyld_info, &count);
+ if (result != KERN_SUCCESS)
{
- bool found;
- if (!TryFindDyLinker(region.StartAddress(), region.Size(), &found)) {
- return false;
- }
- if (found) {
- break;
- }
+ TRACE("EnumerateMemoryRegions: task_info(TASK_DYLD_INFO) FAILED %x %s\n", result, mach_error_string(result));
+ return false;
+ }
+
+ // Enumerate all the modules in dyld's image cache. VisitModule is called for every module found.
+ if (!EnumerateModules(dyld_info.all_image_info_addr))
+ {
+ return false;
}
// Filter out the module regions from the memory regions gathered
@@ -195,46 +201,6 @@ CrashInfo::EnumerateMemoryRegions()
return true;
}
-bool
-CrashInfo::TryFindDyLinker(mach_vm_address_t address, mach_vm_size_t size, bool* found)
-{
- bool result = true;
- *found = false;
-
- if (size > sizeof(mach_header_64))
- {
- mach_header_64 header;
- size_t read = 0;
- if (ReadProcessMemory((void*)address, &header, sizeof(mach_header_64), &read))
- {
- if (header.magic == MH_MAGIC_64)
- {
- TRACE("TryFindDyLinker: found module header at %016llx %08llx ncmds %d sizeofcmds %08x type %02x\n",
- address,
- size,
- header.ncmds,
- header.sizeofcmds,
- header.filetype);
-
- if (header.filetype == MH_DYLINKER)
- {
- TRACE("TryFindDyLinker: found dylinker\n");
- *found = true;
-
- // Enumerate all the modules in dyld's image cache. VisitModule is called for every module found.
- result = EnumerateModules(address, &header);
- }
- }
- }
- else
- {
- TRACE("TryFindDyLinker: ReadProcessMemory header at %p %d FAILED\n", address, read);
- }
- }
-
- return result;
-}
-
void CrashInfo::VisitModule(MachOModule& module)
{
AddModuleInfo(false, module.BaseAddress(), nullptr, module.Name());
@@ -277,6 +243,9 @@ void CrashInfo::VisitSegment(MachOModule& module, const segment_command_64& segm
uint64_t start = segment.vmaddr + module.LoadBias();
uint64_t end = start + segment.vmsize;
+ // Add this module segment to the set used by the thread unwinding to lookup the module base address for an ip.
+ AddModuleAddressRange(start, end, module.BaseAddress());
+
// Round to page boundary
start = start & PAGE_MASK;
_ASSERTE(start > 0);
@@ -297,9 +266,6 @@ void CrashInfo::VisitSegment(MachOModule& module, const segment_command_64& segm
}
// Add this module segment to the module mappings list
m_moduleMappings.insert(moduleRegion);
-
- // Add this module segment to the set used by the thread unwinding to lookup the module base address for an ip.
- AddModuleAddressRange(start, end, module.BaseAddress());
}
else
{
@@ -362,6 +328,7 @@ CrashInfo::ReadProcessMemory(void* address, void* buffer, size_t size, size_t* r
kern_return_t result = ::vm_read_overwrite(Task(), addressAligned, PAGE_SIZE, (vm_address_t)data, &bytesRead);
if (result != KERN_SUCCESS || bytesRead != PAGE_SIZE)
{
+ g_readProcessMemoryResult = result;
TRACE_VERBOSE("ReadProcessMemory(%p %d): vm_read_overwrite failed bytesLeft %d bytesRead %d from %p: %x %s\n",
address, size, bytesLeft, bytesRead, (void*)addressAligned, result, mach_error_string(result));
break;
diff --git a/src/coreclr/debug/createdump/crashinfounix.cpp b/src/coreclr/debug/createdump/crashinfounix.cpp
index 2f9605554ad1f3..03712c3b6847d0 100644
--- a/src/coreclr/debug/createdump/crashinfounix.cpp
+++ b/src/coreclr/debug/createdump/crashinfounix.cpp
@@ -3,6 +3,12 @@
#include "createdump.h"
+#ifndef PT_ARM_EXIDX
+#define PT_ARM_EXIDX 0x70000001 /* See llvm ELF.h */
+#endif
+
+extern CrashInfo* g_crashInfo;
+
bool GetStatus(pid_t pid, pid_t* ppid, pid_t* tgid, std::string* name);
bool
@@ -14,7 +20,7 @@ CrashInfo::Initialize()
m_fd = open(memPath, O_RDONLY);
if (m_fd == -1)
{
- fprintf(stderr, "open(%s) FAILED %d (%s)\n", memPath, errno, strerror(errno));
+ printf_error("open(%s) FAILED %d (%s)\n", memPath, errno, strerror(errno));
return false;
}
// Get the process info
@@ -58,7 +64,7 @@ CrashInfo::EnumerateAndSuspendThreads()
DIR* taskDir = opendir(taskPath);
if (taskDir == nullptr)
{
- fprintf(stderr, "opendir(%s) FAILED %s\n", taskPath, strerror(errno));
+ printf_error("opendir(%s) FAILED %s\n", taskPath, strerror(errno));
return false;
}
@@ -76,7 +82,7 @@ CrashInfo::EnumerateAndSuspendThreads()
}
else
{
- fprintf(stderr, "ptrace(ATTACH, %d) FAILED %s\n", tid, strerror(errno));
+ printf_error("ptrace(ATTACH, %d) FAILED %s\n", tid, strerror(errno));
closedir(taskDir);
return false;
}
@@ -102,7 +108,7 @@ CrashInfo::GetAuxvEntries()
int fd = open(auxvPath, O_RDONLY, 0);
if (fd == -1)
{
- fprintf(stderr, "open(%s) FAILED %s\n", auxvPath, strerror(errno));
+ printf_error("open(%s) FAILED %s\n", auxvPath, strerror(errno));
return false;
}
bool result = false;
@@ -159,7 +165,7 @@ CrashInfo::EnumerateModuleMappings()
FILE* mapsFile = fopen(mapPath, "r");
if (mapsFile == nullptr)
{
- fprintf(stderr, "fopen(%s) FAILED %s\n", mapPath, strerror(errno));
+ printf_error("fopen(%s) FAILED %s\n", mapPath, strerror(errno));
return false;
}
// linuxGateAddress is the beginning of the kernel's mapping of
@@ -285,6 +291,14 @@ CrashInfo::VisitModule(uint64_t baseAddress, std::string& moduleName)
EnumerateProgramHeaders(baseAddress);
}
+// Helper for PAL_GetUnwindInfoSize. Reads memory directly without adding it to the memory region list.
+BOOL
+ReadMemoryAdapter(PVOID address, PVOID buffer, SIZE_T size)
+{
+ size_t read = 0;
+ return g_crashInfo->ReadProcessMemory(address, buffer, size, &read);
+}
+
//
// Called for each program header adding the build id note, unwind frame
// region and module addresses to the crash info.
@@ -296,12 +310,40 @@ CrashInfo::VisitProgramHeader(uint64_t loadbias, uint64_t baseAddress, Phdr* phd
{
case PT_DYNAMIC:
case PT_NOTE:
- case PT_GNU_EH_FRAME:
- if (phdr->p_vaddr != 0 && phdr->p_memsz != 0) {
+#if defined(TARGET_ARM)
+ case PT_ARM_EXIDX:
+#endif
+ if (phdr->p_vaddr != 0 && phdr->p_memsz != 0)
+ {
InsertMemoryRegion(loadbias + phdr->p_vaddr, phdr->p_memsz);
}
break;
+ case PT_GNU_EH_FRAME:
+ if (phdr->p_vaddr != 0 && phdr->p_memsz != 0)
+ {
+ uint64_t ehFrameHdrStart = loadbias + phdr->p_vaddr;
+ uint64_t ehFrameHdrSize = phdr->p_memsz;
+ TRACE("VisitProgramHeader: ehFrameHdrStart %016llx ehFrameHdrSize %08llx\n", ehFrameHdrStart, ehFrameHdrSize);
+ InsertMemoryRegion(ehFrameHdrStart, ehFrameHdrSize);
+
+ uint64_t ehFrameStart;
+ uint64_t ehFrameSize;
+ if (PAL_GetUnwindInfoSize(baseAddress, ehFrameHdrStart, ReadMemoryAdapter, &ehFrameStart, &ehFrameSize))
+ {
+ TRACE("VisitProgramHeader: ehFrameStart %016llx ehFrameSize %08llx\n", ehFrameStart, ehFrameSize);
+ if (ehFrameStart != 0 && ehFrameSize != 0)
+ {
+ InsertMemoryRegion(ehFrameStart, ehFrameSize);
+ }
+ }
+ else
+ {
+ TRACE("VisitProgramHeader: PAL_GetUnwindInfoSize FAILED\n");
+ }
+ }
+ break;
+
case PT_LOAD:
AddModuleAddressRange(loadbias + phdr->p_vaddr, loadbias + phdr->p_vaddr + phdr->p_memsz, baseAddress);
break;
@@ -377,7 +419,7 @@ GetStatus(pid_t pid, pid_t* ppid, pid_t* tgid, std::string* name)
FILE *statusFile = fopen(statusPath, "r");
if (statusFile == nullptr)
{
- fprintf(stderr, "GetStatus fopen(%s) FAILED\n", statusPath);
+ printf_error("GetStatus fopen(%s) FAILED\n", statusPath);
return false;
}
diff --git a/src/coreclr/debug/createdump/crashreportwriter.cpp b/src/coreclr/debug/createdump/crashreportwriter.cpp
index 1fb0865cf5d5f7..9cca2ccdfae6e6 100644
--- a/src/coreclr/debug/createdump/crashreportwriter.cpp
+++ b/src/coreclr/debug/createdump/crashreportwriter.cpp
@@ -33,7 +33,7 @@ CrashReportWriter::WriteCrashReport(const std::string& dumpFileName)
{
std::string crashReportFile(dumpFileName);
crashReportFile.append(".crashreport.json");
- printf("Writing crash report to file %s\n", crashReportFile.c_str());
+ printf_status("Writing crash report to file %s\n", crashReportFile.c_str());
try
{
if (!OpenWriter(crashReportFile.c_str())) {
@@ -41,10 +41,11 @@ CrashReportWriter::WriteCrashReport(const std::string& dumpFileName)
}
WriteCrashReport();
CloseWriter();
+ printf_status("Crash report successfully written\n");
}
catch (const std::exception& e)
{
- fprintf(stderr, "Writing the crash report file FAILED\n");
+ printf_error("Writing the crash report file FAILED\n");
// Delete the partial json file on error
remove(crashReportFile.c_str());
@@ -84,18 +85,20 @@ CrashReportWriter::WriteCrashReport()
{
OpenObject();
bool crashed = false;
- if (thread->ManagedExceptionObject() != 0)
+ if (thread->Tid() == m_crashInfo.CrashThread())
{
crashed = true;
- exceptionType = "0x05000000"; // ManagedException
- }
- else
- {
- if (thread->Tid() == m_crashInfo.CrashThread())
+ if (thread->ManagedExceptionObject() != 0)
+ {
+ exceptionType = "0x05000000"; // ManagedException
+ }
+ else
{
- crashed = true;
switch (m_crashInfo.Signal())
{
+ case 0:
+ break;
+
case SIGILL:
exceptionType = "0x50000000";
break;
@@ -121,9 +124,12 @@ CrashReportWriter::WriteCrashReport()
break;
case SIGABRT:
- default:
exceptionType = "0x30000000";
break;
+
+ default:
+ exceptionType = "0x00000000";
+ break;
}
}
}
@@ -169,17 +175,17 @@ CrashReportWriter::WriteCrashReport()
}
CloseArray(); // threads
CloseObject(); // payload
-#ifdef __APPLE__
OpenObject("parameters");
if (exceptionType != nullptr)
{
WriteValue("ExceptionType", exceptionType);
}
+#ifdef __APPLE__
WriteSysctl("kern.osproductversion", "OSVersion");
WriteSysctl("hw.model", "SystemModel");
WriteValue("SystemManufacturer", "apple");
- CloseObject(); // parameters
#endif // __APPLE__
+ CloseObject(); // parameters
}
#ifdef __APPLE__
@@ -266,7 +272,7 @@ CrashReportWriter::OpenWriter(const char* fileName)
m_fd = open(fileName, O_WRONLY|O_CREAT|O_TRUNC, S_IWUSR | S_IRUSR);
if (m_fd == -1)
{
- fprintf(stderr, "Could not create json file %s: %d %s\n", fileName, errno, strerror(errno));
+ printf_error("Could not create json file %s: %d %s\n", fileName, errno, strerror(errno));
return false;
}
Write("{\n");
diff --git a/src/coreclr/debug/createdump/createdump.h b/src/coreclr/debug/createdump/createdump.h
index f588867c7926f8..68012ffef7a3df 100644
--- a/src/coreclr/debug/createdump/createdump.h
+++ b/src/coreclr/debug/createdump/createdump.h
@@ -23,6 +23,9 @@ extern bool g_diagnosticsVerbose;
#define TRACE_VERBOSE(args, ...)
#endif
+// Keep in sync with the definitions in dbgutil.cpp and daccess.h
+#define DACCESS_TABLE_SYMBOL "g_dacTable"
+
#ifdef HOST_64BIT
#define PRIA "016"
#else
@@ -89,6 +92,24 @@ typedef int T_CONTEXT;
#include
#include
#include
+
+typedef struct
+{
+ const char* DumpPathTemplate;
+ const char* DumpType;
+ MINIDUMP_TYPE MinidumpType;
+ bool CreateDump;
+ bool CrashReport;
+ int Pid;
+ int CrashThread;
+ int Signal;
+#if defined(HOST_UNIX)
+ int SignalCode;
+ int SignalErrno;
+ void* SignalAddress;
+#endif
+} CreateDumpOptions;
+
#ifdef HOST_UNIX
#ifdef __APPLE__
#include
@@ -108,6 +129,13 @@ typedef int T_CONTEXT;
#define MAX_LONGPATH 1024
#endif
-bool FormatDumpName(std::string& name, const char* pattern, const char* exename, int pid);
-bool CreateDump(const char* dumpPathTemplate, int pid, const char* dumpType, MINIDUMP_TYPE minidumpType, bool crashReport, int crashThread, int signal);
+extern bool CreateDump(const CreateDumpOptions& options);
+extern bool FormatDumpName(std::string& name, const char* pattern, const char* exename, int pid);
+#ifdef HOST_WINDOWS
+extern DWORD GetTempPathWrapper(IN DWORD nBufferLength, OUT LPSTR lpBuffer);
+#else
+#define GetTempPathWrapper GetTempPathA
+#endif
+extern void printf_status(const char* format, ...);
+extern void printf_error(const char* format, ...);
diff --git a/src/coreclr/debug/createdump/createdumpunix.cpp b/src/coreclr/debug/createdump/createdumpunix.cpp
index b789c98b820f14..96bcc0cf6a7f1f 100644
--- a/src/coreclr/debug/createdump/createdumpunix.cpp
+++ b/src/coreclr/debug/createdump/createdumpunix.cpp
@@ -7,9 +7,9 @@
// The Linux/MacOS create dump code
//
bool
-CreateDump(const char* dumpPathTemplate, int pid, const char* dumpType, MINIDUMP_TYPE minidumpType, bool crashReport, int crashThread, int signal)
+CreateDump(const CreateDumpOptions& options)
{
- ReleaseHolder crashInfo = new CrashInfo(pid, crashReport, crashThread, signal);
+ ReleaseHolder crashInfo = new CrashInfo(options);
DumpWriter dumpWriter(*crashInfo);
std::string dumpPath;
bool result = false;
@@ -19,11 +19,11 @@ CreateDump(const char* dumpPathTemplate, int pid, const char* dumpType, MINIDUMP
{
goto exit;
}
- printf("Gathering state for process %d %s\n", pid, crashInfo->Name().c_str());
+ printf_status("Gathering state for process %d %s\n", options.Pid, crashInfo->Name().c_str());
- if (signal != 0 || crashThread != 0)
+ if (options.Signal != 0 || options.CrashThread != 0)
{
- printf("Crashing thread %08x signal %08x\n", crashThread, signal);
+ printf_status("Crashing thread %04x signal %d (%04x)\n", options.CrashThread, options.Signal, options.Signal);
}
// Suspend all the threads in the target process and build the list of threads
@@ -32,38 +32,65 @@ CreateDump(const char* dumpPathTemplate, int pid, const char* dumpType, MINIDUMP
goto exit;
}
// Gather all the info about the process, threads (registers, etc.) and memory regions
- if (!crashInfo->GatherCrashInfo(minidumpType))
+ if (!crashInfo->GatherCrashInfo(options.MinidumpType))
{
goto exit;
}
// Format the dump pattern template now that the process name on MacOS has been obtained
- if (!FormatDumpName(dumpPath, dumpPathTemplate, crashInfo->Name().c_str(), pid))
+ if (!FormatDumpName(dumpPath, options.DumpPathTemplate, crashInfo->Name().c_str(), options.Pid))
{
goto exit;
}
// Write the crash report json file if enabled
- if (crashReport)
+ if (options.CrashReport)
{
CrashReportWriter crashReportWriter(*crashInfo);
crashReportWriter.WriteCrashReport(dumpPath);
}
- printf("Writing %s to file %s\n", dumpType, dumpPath.c_str());
-
- // Write the actual dump file
- if (!dumpWriter.OpenDump(dumpPath.c_str()))
+ if (options.CreateDump)
{
- goto exit;
- }
- if (!dumpWriter.WriteDump())
- {
- fprintf(stderr, "Writing dump FAILED\n");
+ // Gather all the useful memory regions from the DAC
+ if (!crashInfo->EnumerateMemoryRegionsWithDAC(options.MinidumpType))
+ {
+ goto exit;
+ }
+ // Join all adjacent memory regions
+ crashInfo->CombineMemoryRegions();
+
+ printf_status("Writing %s to file %s\n", options.DumpType, dumpPath.c_str());
+
+ // Write the actual dump file
+ if (!dumpWriter.OpenDump(dumpPath.c_str()))
+ {
+ goto exit;
+ }
+ if (!dumpWriter.WriteDump())
+ {
+ printf_error( "Writing dump FAILED\n");
- // Delete the partial dump file on error
- remove(dumpPath.c_str());
- goto exit;
+ // Delete the partial dump file on error
+ remove(dumpPath.c_str());
+ goto exit;
+ }
}
result = true;
exit:
+ if (kill(options.Pid, 0) == 0)
+ {
+ printf_status("Target process is alive\n");
+ }
+ else
+ {
+ int err = errno;
+ if (err == ESRCH)
+ {
+ printf_error("Target process terminated\n");
+ }
+ else
+ {
+ printf_error("kill(%d, 0) FAILED %s (%d)\n", options.Pid, strerror(err), err);
+ }
+ }
crashInfo->CleanupAndResumeProcess();
return result;
}
diff --git a/src/coreclr/debug/createdump/createdumpwindows.cpp b/src/coreclr/debug/createdump/createdumpwindows.cpp
index 6d474d3475d215..d598ade93e81f5 100644
--- a/src/coreclr/debug/createdump/createdumpwindows.cpp
+++ b/src/coreclr/debug/createdump/createdumpwindows.cpp
@@ -8,7 +8,7 @@
// The Windows create dump code
//
bool
-CreateDump(const char* dumpPathTemplate, int pid, const char* dumpType, MINIDUMP_TYPE minidumpType, bool crashReport, int crashThread, int signal)
+CreateDump(const CreateDumpOptions& options)
{
HANDLE hFile = INVALID_HANDLE_VALUE;
HANDLE hProcess = NULL;
@@ -17,34 +17,34 @@ CreateDump(const char* dumpPathTemplate, int pid, const char* dumpType, MINIDUMP
ArrayHolder pszName = new char[MAX_LONGPATH + 1];
std::string dumpPath;
- hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, pid);
+ hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, options.Pid);
if (hProcess == NULL)
{
- fprintf(stderr, "Invalid process id '%d' error %d\n", pid, GetLastError());
+ printf_error("Invalid process id '%d' error %d\n", options.Pid, GetLastError());
goto exit;
}
if (GetModuleBaseNameA(hProcess, NULL, pszName, MAX_LONGPATH) <= 0)
{
- fprintf(stderr, "Get process name FAILED %d\n", GetLastError());
+ printf_error("Get process name FAILED %d\n", GetLastError());
goto exit;
}
- if (!FormatDumpName(dumpPath, dumpPathTemplate, pszName, pid))
+ if (!FormatDumpName(dumpPath, options.DumpPathTemplate, pszName, options.Pid))
{
goto exit;
}
- printf("Writing %s to file %s\n", dumpType, dumpPath.c_str());
+ printf_status("Writing %s to file %s\n", options.DumpType, dumpPath.c_str());
hFile = CreateFileA(dumpPath.c_str(), GENERIC_READ | GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
- fprintf(stderr, "Invalid dump path '%s' error %d\n", dumpPath.c_str(), GetLastError());
+ printf_error("Invalid dump path '%s' error %d\n", dumpPath.c_str(), GetLastError());
goto exit;
}
// Retry the write dump on ERROR_PARTIAL_COPY
for (int i = 0; i < 5; i++)
{
- if (MiniDumpWriteDump(hProcess, pid, hFile, minidumpType, NULL, NULL, NULL))
+ if (MiniDumpWriteDump(hProcess, options.Pid, hFile, options.MinidumpType, NULL, NULL, NULL))
{
result = true;
break;
@@ -54,7 +54,7 @@ CreateDump(const char* dumpPathTemplate, int pid, const char* dumpType, MINIDUMP
int err = GetLastError();
if (err != HRESULT_FROM_WIN32(ERROR_PARTIAL_COPY))
{
- fprintf(stderr, "Write dump FAILED 0x%08x\n", err);
+ printf_error("Write dump FAILED 0x%08x\n", err);
break;
}
}
@@ -73,3 +73,38 @@ CreateDump(const char* dumpPathTemplate, int pid, const char* dumpType, MINIDUMP
return result;
}
+
+typedef DWORD(WINAPI *pfnGetTempPathA)(DWORD nBufferLength, LPSTR lpBuffer);
+
+static volatile pfnGetTempPathA
+g_pfnGetTempPathA = nullptr;
+
+
+DWORD
+GetTempPathWrapper(
+ IN DWORD nBufferLength,
+ OUT LPSTR lpBuffer)
+{
+ if (g_pfnGetTempPathA == nullptr)
+ {
+ HMODULE hKernel32 = LoadLibraryExW(L"kernel32.dll", NULL, LOAD_LIBRARY_SEARCH_SYSTEM32);
+
+ pfnGetTempPathA pLocalGetTempPathA = NULL;
+ if (hKernel32 != NULL)
+ {
+ // store to thread local variable to prevent data race
+ pLocalGetTempPathA = (pfnGetTempPathA)::GetProcAddress(hKernel32, "GetTempPath2A");
+ }
+
+ if (pLocalGetTempPathA == NULL) // method is only available with Windows 10 Creators Update or later
+ {
+ g_pfnGetTempPathA = &GetTempPathA;
+ }
+ else
+ {
+ g_pfnGetTempPathA = pLocalGetTempPathA;
+ }
+ }
+
+ return g_pfnGetTempPathA(nBufferLength, lpBuffer);
+}
\ No newline at end of file
diff --git a/src/coreclr/debug/createdump/dumpname.cpp b/src/coreclr/debug/createdump/dumpname.cpp
index 751997c6755b94..a09a98aebc9b24 100644
--- a/src/coreclr/debug/createdump/dumpname.cpp
+++ b/src/coreclr/debug/createdump/dumpname.cpp
@@ -37,7 +37,7 @@ FormatDumpName(std::string& name, const char* pattern, const char* exename, int
const char* p = pattern;
if (*p == '|')
{
- fprintf(stderr, "Pipe syntax in dump name not supported\n");
+ printf_error("Pipe syntax in dump name not supported\n");
return false;
}
@@ -81,7 +81,7 @@ FormatDumpName(std::string& name, const char* pattern, const char* exename, int
ArrayHolder buffer = new char[MAX_LONGPATH + 1];
if (gethostname(buffer, MAX_LONGPATH) != 0)
{
- fprintf(stderr, "Could not get the host name for dump name: %d\n",
+ printf_error("Could not get the host name for dump name: %d\n",
#ifdef HOST_WINDOWS
WSAGetLastError());
#else
@@ -114,7 +114,7 @@ FormatDumpName(std::string& name, const char* pattern, const char* exename, int
// pid of dumped process
case 'P':
default:
- fprintf(stderr, "Invalid dump name format char '%c'\n", *p);
+ printf_error("Invalid dump name format char '%c'\n", *p);
return false;
}
}
diff --git a/src/coreclr/debug/createdump/dumpwriter.cpp b/src/coreclr/debug/createdump/dumpwriter.cpp
index 4aa46ac3681444..5946c37d6678d8 100644
--- a/src/coreclr/debug/createdump/dumpwriter.cpp
+++ b/src/coreclr/debug/createdump/dumpwriter.cpp
@@ -26,7 +26,7 @@ DumpWriter::OpenDump(const char* dumpFileName)
m_fd = open(dumpFileName, O_WRONLY|O_CREAT|O_TRUNC, S_IWUSR | S_IRUSR);
if (m_fd == -1)
{
- fprintf(stderr, "Could not open output %s: %d %s\n", dumpFileName, errno, strerror(errno));
+ printf_error("Could not open output %s: %d %s\n", dumpFileName, errno, strerror(errno));
return false;
}
return true;
@@ -46,7 +46,7 @@ DumpWriter::WriteData(int fd, const void* buffer, size_t length)
} while (written == -1 && errno == EINTR);
if (written < 1) {
- fprintf(stderr, "WriteData FAILED %d %s\n", errno, strerror(errno));
+ printf_error("WriteData FAILED %d %s\n", errno, strerror(errno));
return false;
}
done += written;
diff --git a/src/coreclr/debug/createdump/dumpwriterelf.cpp b/src/coreclr/debug/createdump/dumpwriterelf.cpp
index afd403212b2473..6ab8cfed5dbdcc 100644
--- a/src/coreclr/debug/createdump/dumpwriterelf.cpp
+++ b/src/coreclr/debug/createdump/dumpwriterelf.cpp
@@ -152,7 +152,7 @@ DumpWriter::WriteDump()
// Write all the thread's state and registers
for (const ThreadInfo* thread : m_crashInfo.Threads())
{
- if (!WriteThread(*thread, SIGABRT)) {
+ if (!WriteThread(*thread)) {
return false;
}
}
@@ -161,7 +161,7 @@ DumpWriter::WriteDump()
// and then laydown the memory blocks
if (finalNoteAlignment > 0) {
if (finalNoteAlignment > sizeof(m_tempBuffer)) {
- fprintf(stderr, "finalNoteAlignment %zu > sizeof(m_tempBuffer)\n", finalNoteAlignment);
+ printf_error("finalNoteAlignment %zu > sizeof(m_tempBuffer)\n", finalNoteAlignment);
return false;
}
memset(m_tempBuffer, 0, finalNoteAlignment);
@@ -189,13 +189,13 @@ DumpWriter::WriteDump()
size_t read = 0;
if (!m_crashInfo.ReadProcessMemory((void*)address, m_tempBuffer, bytesToRead, &read)) {
- fprintf(stderr, "ReadProcessMemory(%" PRIA PRIx64 ", %08zx) FAILED\n", address, bytesToRead);
+ printf_error("ReadProcessMemory(%" PRIA PRIx64 ", %08zx) FAILED\n", address, bytesToRead);
return false;
}
// This can happen if the target process dies before createdump is finished
if (read == 0) {
- fprintf(stderr, "ReadProcessMemory(%" PRIA PRIx64 ", %08zx) returned 0 bytes read\n", address, bytesToRead);
+ printf_error("ReadProcessMemory(%" PRIA PRIx64 ", %08zx) returned 0 bytes read\n", address, bytesToRead);
return false;
}
@@ -209,8 +209,7 @@ DumpWriter::WriteDump()
}
}
- printf("Written %" PRId64 " bytes (%" PRId64 " pages) to core file\n", total, total / PAGE_SIZE);
-
+ printf_status("Written %" PRId64 " bytes (%" PRId64 " pages) to core file\n", total, total / PAGE_SIZE);
return true;
}
@@ -367,13 +366,20 @@ DumpWriter::WriteNTFileInfo()
}
bool
-DumpWriter::WriteThread(const ThreadInfo& thread, int fatal_signal)
+DumpWriter::WriteThread(const ThreadInfo& thread)
{
prstatus_t pr;
memset(&pr, 0, sizeof(pr));
+ const siginfo_t* siginfo = nullptr;
- pr.pr_info.si_signo = fatal_signal;
- pr.pr_cursig = fatal_signal;
+ if (m_crashInfo.Signal() != 0 && thread.IsCrashThread())
+ {
+ siginfo = m_crashInfo.SigInfo();
+ pr.pr_info.si_signo = siginfo->si_signo;
+ pr.pr_info.si_code = siginfo->si_code;
+ pr.pr_info.si_errno = siginfo->si_errno;
+ pr.pr_cursig = siginfo->si_signo;
+ }
pr.pr_pid = thread.Tid();
pr.pr_ppid = thread.Ppid();
pr.pr_pgrp = thread.Tgid();
@@ -404,9 +410,8 @@ DumpWriter::WriteThread(const ThreadInfo& thread, int fatal_signal)
return false;
}
- nhdr.n_namesz = 6;
-
#if defined(__i386__)
+ nhdr.n_namesz = 6;
nhdr.n_descsz = sizeof(user_fpxregs_struct);
nhdr.n_type = NT_PRXFPREG;
if (!WriteData(&nhdr, sizeof(nhdr)) ||
@@ -417,6 +422,7 @@ DumpWriter::WriteThread(const ThreadInfo& thread, int fatal_signal)
#endif
#if defined(__arm__) && defined(__VFP_FP__) && !defined(__SOFTFP__)
+ nhdr.n_namesz = 6;
nhdr.n_descsz = sizeof(user_vfpregs_struct);
nhdr.n_type = NT_ARM_VFP;
if (!WriteData(&nhdr, sizeof(nhdr)) ||
@@ -426,5 +432,19 @@ DumpWriter::WriteThread(const ThreadInfo& thread, int fatal_signal)
}
#endif
+ if (siginfo != nullptr)
+ {
+ TRACE("Writing NT_SIGINFO tid %04x signo %d (%04x) code %04x errno %04x addr %p\n",
+ thread.Tid(), siginfo->si_signo, siginfo->si_signo, siginfo->si_code, siginfo->si_errno, siginfo->si_addr);
+
+ nhdr.n_namesz = 5;
+ nhdr.n_descsz = sizeof(siginfo_t);
+ nhdr.n_type = NT_SIGINFO;
+ if (!WriteData(&nhdr, sizeof(nhdr)) ||
+ !WriteData("CORE\0SIG", 8) ||
+ !WriteData(siginfo, sizeof(siginfo_t))) {
+ return false;
+ }
+ }
return true;
}
diff --git a/src/coreclr/debug/createdump/dumpwriterelf.h b/src/coreclr/debug/createdump/dumpwriterelf.h
index 6da55da2f13750..2a3d41d75d0df9 100644
--- a/src/coreclr/debug/createdump/dumpwriterelf.h
+++ b/src/coreclr/debug/createdump/dumpwriterelf.h
@@ -29,6 +29,10 @@
#define NT_FILE 0x46494c45
#endif
+#ifndef NT_SIGINFO
+#define NT_SIGINFO 0x53494749
+#endif
+
class DumpWriter
{
private:
@@ -52,21 +56,22 @@ class DumpWriter
bool WriteAuxv();
size_t GetNTFileInfoSize(size_t* alignmentBytes = nullptr);
bool WriteNTFileInfo();
- bool WriteThread(const ThreadInfo& thread, int fatal_signal);
+ bool WriteThread(const ThreadInfo& thread);
bool WriteData(const void* buffer, size_t length) { return WriteData(m_fd, buffer, length); }
size_t GetProcessInfoSize() const { return sizeof(Nhdr) + 8 + sizeof(prpsinfo_t); }
size_t GetAuxvInfoSize() const { return sizeof(Nhdr) + 8 + m_crashInfo.GetAuxvSize(); }
size_t GetThreadInfoSize() const
{
- return m_crashInfo.Threads().size() * ((sizeof(Nhdr) + 8 + sizeof(prstatus_t))
- + sizeof(Nhdr) + 8 + sizeof(user_fpregs_struct)
+ return (m_crashInfo.Signal() != 0 ? (sizeof(Nhdr) + 8 + sizeof(siginfo_t)) : 0)
+ + (m_crashInfo.Threads().size() * ((sizeof(Nhdr) + 8 + sizeof(prstatus_t))
+ + (sizeof(Nhdr) + 8 + sizeof(user_fpregs_struct))
#if defined(__i386__)
- + sizeof(Nhdr) + 8 + sizeof(user_fpxregs_struct)
+ + (sizeof(Nhdr) + 8 + sizeof(user_fpxregs_struct))
#endif
#if defined(__arm__) && defined(__VFP_FP__) && !defined(__SOFTFP__)
- + sizeof(Nhdr) + 8 + sizeof(user_vfpregs_struct)
+ + (sizeof(Nhdr) + 8 + sizeof(user_vfpregs_struct))
#endif
- );
+ ));
}
};
diff --git a/src/coreclr/debug/createdump/dumpwritermacho.cpp b/src/coreclr/debug/createdump/dumpwritermacho.cpp
index e5cefe9ffbe221..580c616552a250 100644
--- a/src/coreclr/debug/createdump/dumpwritermacho.cpp
+++ b/src/coreclr/debug/createdump/dumpwritermacho.cpp
@@ -4,6 +4,8 @@
#include "createdump.h"
#include "specialthreadinfo.h"
+extern int g_readProcessMemoryResult;
+
//
// Write the core dump file
//
@@ -56,7 +58,7 @@ DumpWriter::WriteDump()
if (alignment > 0)
{
if (alignment > sizeof(m_tempBuffer)) {
- fprintf(stderr, "Segment alignment %llu > sizeof(m_tempBuffer)\n", alignment);
+ printf_error("Segment alignment %llu > sizeof(m_tempBuffer)\n", alignment);
return false;
}
memset(m_tempBuffer, 0, alignment);
@@ -264,13 +266,13 @@ DumpWriter::WriteSegments()
size_t read = 0;
if (!m_crashInfo.ReadProcessMemory((void*)address, m_tempBuffer, bytesToRead, &read)) {
- fprintf(stderr, "ReadProcessMemory(%" PRIA PRIx64 ", %08zx) FAILED\n", address, bytesToRead);
+ printf_error("ReadProcessMemory(%" PRIA PRIx64 ", %08zx) read %d FAILED %s (%x)\n", address, bytesToRead, read, mach_error_string(g_readProcessMemoryResult), g_readProcessMemoryResult);
return false;
}
// This can happen if the target process dies before createdump is finished
if (read == 0) {
- fprintf(stderr, "ReadProcessMemory(%" PRIA PRIx64 ", %08zx) returned 0 bytes read\n", address, bytesToRead);
+ printf_error("ReadProcessMemory(%" PRIA PRIx64 ", %08zx) returned 0 bytes read: %s (%x)\n", address, bytesToRead, mach_error_string(g_readProcessMemoryResult), g_readProcessMemoryResult);
return false;
}
@@ -284,6 +286,6 @@ DumpWriter::WriteSegments()
}
}
- printf("Written %" PRId64 " bytes (%" PRId64 " pages) to core file\n", total, total / PAGE_SIZE);
+ printf_status("Written %" PRId64 " bytes (%" PRId64 " pages) to core file\n", total, total / PAGE_SIZE);
return true;
}
diff --git a/src/coreclr/debug/createdump/main.cpp b/src/coreclr/debug/createdump/main.cpp
index f91a81ca66ccb8..89c8c7f4043506 100644
--- a/src/coreclr/debug/createdump/main.cpp
+++ b/src/coreclr/debug/createdump/main.cpp
@@ -25,6 +25,7 @@ const char* g_help = "createdump [options] pid\n"
"-v, --verbose - enable verbose diagnostic messages.\n"
#ifdef HOST_UNIX
"--crashreport - write crash report file.\n"
+"--crashreportonly - write crash report file only (no dump).\n"
"--crashthread - the thread id of the crashing thread.\n"
"--signal - the signal code of the crash.\n"
#endif
@@ -38,26 +39,33 @@ bool g_diagnosticsVerbose = false;
//
int __cdecl main(const int argc, const char* argv[])
{
- MINIDUMP_TYPE minidumpType = (MINIDUMP_TYPE)(MiniDumpWithPrivateReadWriteMemory |
- MiniDumpWithDataSegs |
- MiniDumpWithHandleData |
- MiniDumpWithUnloadedModules |
- MiniDumpWithFullMemoryInfo |
- MiniDumpWithThreadInfo |
- MiniDumpWithTokenInformation);
- const char* dumpType = "minidump with heap";
- const char* dumpPathTemplate = nullptr;
- bool crashReport = false;
- int signal = 0;
- int crashThread = 0;
+ CreateDumpOptions options;
+ options.MinidumpType = (MINIDUMP_TYPE)(MiniDumpWithPrivateReadWriteMemory |
+ MiniDumpWithDataSegs |
+ MiniDumpWithHandleData |
+ MiniDumpWithUnloadedModules |
+ MiniDumpWithFullMemoryInfo |
+ MiniDumpWithThreadInfo |
+ MiniDumpWithTokenInformation);
+ options.DumpType = "minidump with heap";
+ options.DumpPathTemplate = nullptr;
+ options.CrashReport = false;
+ options.CreateDump = true;
+ options.Signal = 0;
+ options.CrashThread = 0;
+ options.Pid = 0;
+#if defined(HOST_UNIX)
+ options.SignalCode = 0;
+ options.SignalErrno = 0;
+ options.SignalAddress = nullptr;
+#endif
int exitCode = 0;
- int pid = 0;
#ifdef HOST_UNIX
exitCode = PAL_InitializeDLL();
if (exitCode != 0)
{
- fprintf(stderr, "PAL initialization FAILED %d\n", exitCode);
+ printf_error("PAL initialization FAILED %d\n", exitCode);
return exitCode;
}
#endif
@@ -70,62 +78,79 @@ int __cdecl main(const int argc, const char* argv[])
{
if ((strcmp(*argv, "-f") == 0) || (strcmp(*argv, "--name") == 0))
{
- dumpPathTemplate = *++argv;
+ options.DumpPathTemplate = *++argv;
}
else if ((strcmp(*argv, "-n") == 0) || (strcmp(*argv, "--normal") == 0))
{
- dumpType = "minidump";
- minidumpType = (MINIDUMP_TYPE)(MiniDumpNormal |
- MiniDumpWithDataSegs |
- MiniDumpWithHandleData |
- MiniDumpWithThreadInfo);
+ options.DumpType = "minidump";
+ options.MinidumpType = (MINIDUMP_TYPE)(MiniDumpNormal |
+ MiniDumpWithDataSegs |
+ MiniDumpWithHandleData |
+ MiniDumpWithThreadInfo);
}
else if ((strcmp(*argv, "-h") == 0) || (strcmp(*argv, "--withheap") == 0))
{
- dumpType = "minidump with heap";
- minidumpType = (MINIDUMP_TYPE)(MiniDumpWithPrivateReadWriteMemory |
- MiniDumpWithDataSegs |
- MiniDumpWithHandleData |
- MiniDumpWithUnloadedModules |
- MiniDumpWithFullMemoryInfo |
- MiniDumpWithThreadInfo |
- MiniDumpWithTokenInformation);
+ options.DumpType = "minidump with heap";
+ options.MinidumpType = (MINIDUMP_TYPE)(MiniDumpWithPrivateReadWriteMemory |
+ MiniDumpWithDataSegs |
+ MiniDumpWithHandleData |
+ MiniDumpWithUnloadedModules |
+ MiniDumpWithFullMemoryInfo |
+ MiniDumpWithThreadInfo |
+ MiniDumpWithTokenInformation);
}
else if ((strcmp(*argv, "-t") == 0) || (strcmp(*argv, "--triage") == 0))
{
- dumpType = "triage minidump";
- minidumpType = (MINIDUMP_TYPE)(MiniDumpFilterTriage |
- MiniDumpIgnoreInaccessibleMemory |
- MiniDumpWithoutOptionalData |
- MiniDumpWithProcessThreadData |
- MiniDumpFilterModulePaths |
- MiniDumpWithUnloadedModules |
- MiniDumpFilterMemory |
- MiniDumpWithHandleData);
+ options.DumpType = "triage minidump";
+ options.MinidumpType = (MINIDUMP_TYPE)(MiniDumpFilterTriage |
+ MiniDumpIgnoreInaccessibleMemory |
+ MiniDumpWithoutOptionalData |
+ MiniDumpWithProcessThreadData |
+ MiniDumpFilterModulePaths |
+ MiniDumpWithUnloadedModules |
+ MiniDumpFilterMemory |
+ MiniDumpWithHandleData);
}
else if ((strcmp(*argv, "-u") == 0) || (strcmp(*argv, "--full") == 0))
{
- dumpType = "full dump";
- minidumpType = (MINIDUMP_TYPE)(MiniDumpWithFullMemory |
- MiniDumpWithDataSegs |
- MiniDumpWithHandleData |
- MiniDumpWithUnloadedModules |
- MiniDumpWithFullMemoryInfo |
- MiniDumpWithThreadInfo |
- MiniDumpWithTokenInformation);
+ options.DumpType = "full dump";
+ options.MinidumpType = (MINIDUMP_TYPE)(MiniDumpWithFullMemory |
+ MiniDumpWithDataSegs |
+ MiniDumpWithHandleData |
+ MiniDumpWithUnloadedModules |
+ MiniDumpWithFullMemoryInfo |
+ MiniDumpWithThreadInfo |
+ MiniDumpWithTokenInformation);
}
#ifdef HOST_UNIX
else if (strcmp(*argv, "--crashreport") == 0)
{
- crashReport = true;
+ options.CrashReport = true;
+ }
+ else if (strcmp(*argv, "--crashreportonly") == 0)
+ {
+ options.CrashReport = true;
+ options.CreateDump = false;
}
else if (strcmp(*argv, "--crashthread") == 0)
{
- crashThread = atoi(*++argv);
+ options.CrashThread = atoi(*++argv);
}
else if (strcmp(*argv, "--signal") == 0)
{
- signal = atoi(*++argv);
+ options.Signal = atoi(*++argv);
+ }
+ else if (strcmp(*argv, "--code") == 0)
+ {
+ options.SignalCode = atoi(*++argv);
+ }
+ else if (strcmp(*argv, "--errno") == 0)
+ {
+ options.SignalErrno = atoi(*++argv);
+ }
+ else if (strcmp(*argv, "--address") == 0)
+ {
+ options.SignalAddress = (void*)atoll(*++argv);
}
#endif
else if ((strcmp(*argv, "-d") == 0) || (strcmp(*argv, "--diag") == 0))
@@ -138,35 +163,35 @@ int __cdecl main(const int argc, const char* argv[])
g_diagnosticsVerbose = true;
}
else {
- pid = atoi(*argv);
+ options.Pid = atoi(*argv);
}
argv++;
}
}
- if (pid != 0)
+ if (options.Pid != 0)
{
ArrayHolder tmpPath = new char[MAX_LONGPATH];
- if (dumpPathTemplate == nullptr)
+ if (options.DumpPathTemplate == nullptr)
{
- if (::GetTempPathA(MAX_LONGPATH, tmpPath) == 0)
+ if (::GetTempPathWrapper(MAX_LONGPATH, tmpPath) == 0)
{
- fprintf(stderr, "GetTempPath failed (0x%08x)", ::GetLastError());
+ printf_error("GetTempPath failed (0x%08x)\n", ::GetLastError());
return ::GetLastError();
}
exitCode = strcat_s(tmpPath, MAX_LONGPATH, DEFAULT_DUMP_TEMPLATE);
if (exitCode != 0)
{
- fprintf(stderr, "strcat_s failed (%d)", exitCode);
+ printf_error("strcat_s failed (%d)\n", exitCode);
return exitCode;
}
- dumpPathTemplate = tmpPath;
+ options.DumpPathTemplate = tmpPath;
}
- if (CreateDump(dumpPathTemplate, pid, dumpType, minidumpType, crashReport, crashThread, signal))
+ if (CreateDump(options))
{
- printf("Dump successfully written\n");
+ printf_status("Dump successfully written\n");
}
else
{
@@ -179,7 +204,7 @@ int __cdecl main(const int argc, const char* argv[])
else
{
// if no pid or invalid command line option
- fprintf(stderr, "%s", g_help);
+ printf_error("%s", g_help);
exitCode = -1;
}
#ifdef HOST_UNIX
@@ -188,6 +213,28 @@ int __cdecl main(const int argc, const char* argv[])
return exitCode;
}
+void
+printf_status(const char* format, ...)
+{
+ va_list args;
+ va_start(args, format);
+ fprintf(stdout, "[createdump] ");
+ vfprintf(stdout, format, args);
+ fflush(stdout);
+ va_end(args);
+}
+
+void
+printf_error(const char* format, ...)
+{
+ va_list args;
+ va_start(args, format);
+ fprintf(stderr, "[createdump] ");
+ vfprintf(stderr, format, args);
+ fflush(stderr);
+ va_end(args);
+}
+
void
trace_printf(const char* format, ...)
{
@@ -195,6 +242,7 @@ trace_printf(const char* format, ...)
{
va_list args;
va_start(args, format);
+ fprintf(stdout, "[createdump] ");
vfprintf(stdout, format, args);
fflush(stdout);
va_end(args);
@@ -208,10 +256,9 @@ trace_verbose_printf(const char* format, ...)
{
va_list args;
va_start(args, format);
+ fprintf(stdout, "[createdump] ");
vfprintf(stdout, format, args);
fflush(stdout);
va_end(args);
}
}
-
-
diff --git a/src/coreclr/debug/createdump/stackframe.h b/src/coreclr/debug/createdump/stackframe.h
index 75e20d93120c0c..00c3a1cfb7fd8f 100644
--- a/src/coreclr/debug/createdump/stackframe.h
+++ b/src/coreclr/debug/createdump/stackframe.h
@@ -66,9 +66,16 @@ struct StackFrame
}
}
+// See comment in threadinfo.cpp UnwindNativeFrames function
+#if defined(__aarch64__)
+ #define STACK_POINTER_MASK ~0x7
+#else
+ #define STACK_POINTER_MASK ~0x0
+#endif
+
inline uint64_t ModuleAddress() const { return m_moduleAddress; }
inline uint64_t InstructionPointer() const { return m_instructionPointer; }
- inline uint64_t StackPointer() const { return m_stackPointer; }
+ inline uint64_t StackPointer() const { return m_stackPointer & STACK_POINTER_MASK; }
inline uint32_t NativeOffset() const { return m_nativeOffset; }
inline uint32_t Token() const { return m_token; }
inline uint32_t ILOffset() const { return m_ilOffset; }
diff --git a/src/coreclr/debug/createdump/threadinfo.cpp b/src/coreclr/debug/createdump/threadinfo.cpp
index 82509f52750653..9536b7c815fd90 100644
--- a/src/coreclr/debug/createdump/threadinfo.cpp
+++ b/src/coreclr/debug/createdump/threadinfo.cpp
@@ -53,6 +53,16 @@ ThreadInfo::UnwindNativeFrames(CONTEXT* pContext)
uint64_t ip = 0, sp = 0;
GetFrameLocation(pContext, &ip, &sp);
+#if defined(__aarch64__)
+ // ARM64 can have frames with the same SP but different IPs. Increment sp so it gets added to the stack
+ // frames in the correct order and to prevent the below loop termination on non-increasing sp. Since stack
+ // pointers are always 8 byte align, this increase is masked off in StackFrame::StackPointer() to get the
+ // original stack pointer.
+ if (sp == previousSp && ip != previousIp)
+ {
+ sp++;
+ }
+#endif
if (ip == 0 || sp <= previousSp) {
TRACE_VERBOSE("Unwind: sp not increasing or ip == 0 sp %p ip %p\n", (void*)sp, (void*)ip);
break;
@@ -377,3 +387,9 @@ ThreadInfo::GetThreadStack()
TRACE("Thread %04x null stack pointer\n", m_tid);
}
}
+
+bool
+ThreadInfo::IsCrashThread() const
+{
+ return m_tid == m_crashInfo.CrashThread();
+}
diff --git a/src/coreclr/debug/createdump/threadinfo.h b/src/coreclr/debug/createdump/threadinfo.h
index 4142b55e333dd7..159df8c25d127c 100644
--- a/src/coreclr/debug/createdump/threadinfo.h
+++ b/src/coreclr/debug/createdump/threadinfo.h
@@ -136,6 +136,7 @@ class ThreadInfo
inline const uint64_t GetFramePointer() const { return m_gpRegisters.ARM_fp; }
#endif
#endif // __APPLE__
+ bool IsCrashThread() const;
private:
void UnwindNativeFrames(CONTEXT* pContext);
diff --git a/src/coreclr/debug/createdump/threadinfomac.cpp b/src/coreclr/debug/createdump/threadinfomac.cpp
index 918f0ae2310b5a..735794600d0aca 100644
--- a/src/coreclr/debug/createdump/threadinfomac.cpp
+++ b/src/coreclr/debug/createdump/threadinfomac.cpp
@@ -23,7 +23,7 @@ ThreadInfo::~ThreadInfo()
kern_return_t result = ::mach_port_deallocate(mach_task_self(), m_port);
if (result != KERN_SUCCESS)
{
- fprintf(stderr, "~ThreadInfo: mach_port_deallocate FAILED %x %s\n", result, mach_error_string(result));
+ printf_error("~ThreadInfo: mach_port_deallocate FAILED %x %s\n", result, mach_error_string(result));
}
}
@@ -38,7 +38,7 @@ ThreadInfo::Initialize()
kern_return_t result = ::thread_get_state(Port(), x86_THREAD_STATE64, (thread_state_t)&m_gpRegisters, &stateCount);
if (result != KERN_SUCCESS)
{
- fprintf(stderr, "thread_get_state(%x) FAILED %x %s\n", m_tid, result, mach_error_string(result));
+ printf_error("thread_get_state(%x) FAILED %x %s\n", m_tid, result, mach_error_string(result));
return false;
}
@@ -46,7 +46,7 @@ ThreadInfo::Initialize()
result = ::thread_get_state(Port(), x86_FLOAT_STATE64, (thread_state_t)&m_fpRegisters, &stateCount);
if (result != KERN_SUCCESS)
{
- fprintf(stderr, "thread_get_state(%x) FAILED %x %s\n", m_tid, result, mach_error_string(result));
+ printf_error("thread_get_state(%x) FAILED %x %s\n", m_tid, result, mach_error_string(result));
return false;
}
#elif defined(__aarch64__)
@@ -54,7 +54,7 @@ ThreadInfo::Initialize()
kern_return_t result = ::thread_get_state(Port(), ARM_THREAD_STATE64, (thread_state_t)&m_gpRegisters, &stateCount);
if (result != KERN_SUCCESS)
{
- fprintf(stderr, "thread_get_state(%x) FAILED %x %s\n", m_tid, result, mach_error_string(result));
+ printf_error("thread_get_state(%x) FAILED %x %s\n", m_tid, result, mach_error_string(result));
return false;
}
@@ -62,7 +62,7 @@ ThreadInfo::Initialize()
result = ::thread_get_state(Port(), ARM_NEON_STATE64, (thread_state_t)&m_fpRegisters, &stateCount);
if (result != KERN_SUCCESS)
{
- fprintf(stderr, "thread_get_state(%x) FAILED %x %s\n", m_tid, result, mach_error_string(result));
+ printf_error("thread_get_state(%x) FAILED %x %s\n", m_tid, result, mach_error_string(result));
return false;
}
#else
diff --git a/src/coreclr/debug/createdump/threadinfounix.cpp b/src/coreclr/debug/createdump/threadinfounix.cpp
index 856dfbb2993793..37af34ca2836e1 100644
--- a/src/coreclr/debug/createdump/threadinfounix.cpp
+++ b/src/coreclr/debug/createdump/threadinfounix.cpp
@@ -69,7 +69,7 @@ ThreadInfo::GetRegistersWithPTrace()
struct iovec gpRegsVec = { &m_gpRegisters, sizeof(m_gpRegisters) };
if (ptrace((__ptrace_request)PTRACE_GETREGSET, m_tid, NT_PRSTATUS, &gpRegsVec) == -1)
{
- fprintf(stderr, "ptrace(PTRACE_GETREGSET, %d, NT_PRSTATUS) FAILED %d (%s)\n", m_tid, errno, strerror(errno));
+ printf_error("ptrace(PTRACE_GETREGSET, %d, NT_PRSTATUS) FAILED %d (%s)\n", m_tid, errno, strerror(errno));
return false;
}
assert(sizeof(m_gpRegisters) == gpRegsVec.iov_len);
@@ -80,7 +80,7 @@ ThreadInfo::GetRegistersWithPTrace()
#if defined(__arm__)
// Some aarch64 kernels may not support NT_FPREGSET for arm processes. We treat this failure as non-fatal.
#else
- fprintf(stderr, "ptrace(PTRACE_GETREGSET, %d, NT_FPREGSET) FAILED %d (%s)\n", m_tid, errno, strerror(errno));
+ printf_error("ptrace(PTRACE_GETREGSET, %d, NT_FPREGSET) FAILED %d (%s)\n", m_tid, errno, strerror(errno));
return false;
#endif
}
@@ -89,7 +89,7 @@ ThreadInfo::GetRegistersWithPTrace()
#if defined(__i386__)
if (ptrace((__ptrace_request)PTRACE_GETFPXREGS, m_tid, nullptr, &m_fpxRegisters) == -1)
{
- fprintf(stderr, "ptrace(GETFPXREGS, %d) FAILED %d (%s)\n", m_tid, errno, strerror(errno));
+ printf_error("ptrace(GETFPXREGS, %d) FAILED %d (%s)\n", m_tid, errno, strerror(errno));
return false;
}
#elif defined(__arm__) && defined(__VFP_FP__) && !defined(__SOFTFP__)
@@ -100,7 +100,7 @@ ThreadInfo::GetRegistersWithPTrace()
if (ptrace((__ptrace_request)PTRACE_GETVFPREGS, m_tid, nullptr, &m_vfpRegisters) == -1)
{
- fprintf(stderr, "ptrace(PTRACE_GETVFPREGS, %d) FAILED %d (%s)\n", m_tid, errno, strerror(errno));
+ printf_error("ptrace(PTRACE_GETVFPREGS, %d) FAILED %d (%s)\n", m_tid, errno, strerror(errno));
return false;
}
#endif
diff --git a/src/coreclr/debug/daccess/daccess.cpp b/src/coreclr/debug/daccess/daccess.cpp
index 61f0d827e60f19..dee4fe132fa74c 100644
--- a/src/coreclr/debug/daccess/daccess.cpp
+++ b/src/coreclr/debug/daccess/daccess.cpp
@@ -6077,13 +6077,20 @@ ClrDataAccess::GetMethodVarInfo(MethodDesc* methodDesc,
SUPPORTS_DAC;
COUNT_T countNativeVarInfo;
NewHolder nativeVars(NULL);
-
- NativeCodeVersion requestedNativeCodeVersion = ExecutionManager::GetNativeCodeVersion(address);
- if (requestedNativeCodeVersion.IsNull() || requestedNativeCodeVersion.GetNativeCode() == NULL)
+ TADDR nativeCodeStartAddr;
+ if (address != NULL)
{
- return E_INVALIDARG;
+ NativeCodeVersion requestedNativeCodeVersion = ExecutionManager::GetNativeCodeVersion(address);
+ if (requestedNativeCodeVersion.IsNull() || requestedNativeCodeVersion.GetNativeCode() == NULL)
+ {
+ return E_INVALIDARG;
+ }
+ nativeCodeStartAddr = PCODEToPINSTR(requestedNativeCodeVersion.GetNativeCode());
+ }
+ else
+ {
+ nativeCodeStartAddr = PCODEToPINSTR(methodDesc->GetNativeCode());
}
- TADDR nativeCodeStartAddr = PCODEToPINSTR(requestedNativeCodeVersion.GetNativeCode());
DebugInfoRequest request;
request.InitFromStartingAddr(methodDesc, nativeCodeStartAddr);
@@ -6128,13 +6135,20 @@ ClrDataAccess::GetMethodNativeMap(MethodDesc* methodDesc,
// Use the DebugInfoStore to get IL->Native maps.
// It doesn't matter whether we're jitted, ngenned etc.
-
- NativeCodeVersion requestedNativeCodeVersion = ExecutionManager::GetNativeCodeVersion(address);
- if (requestedNativeCodeVersion.IsNull() || requestedNativeCodeVersion.GetNativeCode() == NULL)
+ TADDR nativeCodeStartAddr;
+ if (address != NULL)
{
- return E_INVALIDARG;
+ NativeCodeVersion requestedNativeCodeVersion = ExecutionManager::GetNativeCodeVersion(address);
+ if (requestedNativeCodeVersion.IsNull() || requestedNativeCodeVersion.GetNativeCode() == NULL)
+ {
+ return E_INVALIDARG;
+ }
+ nativeCodeStartAddr = PCODEToPINSTR(requestedNativeCodeVersion.GetNativeCode());
+ }
+ else
+ {
+ nativeCodeStartAddr = PCODEToPINSTR(methodDesc->GetNativeCode());
}
- TADDR nativeCodeStartAddr = PCODEToPINSTR(requestedNativeCodeVersion.GetNativeCode());
DebugInfoRequest request;
request.InitFromStartingAddr(methodDesc, nativeCodeStartAddr);
diff --git a/src/coreclr/debug/daccess/dacdbiimpl.cpp b/src/coreclr/debug/daccess/dacdbiimpl.cpp
index 2924be33c049de..8e587b8d1e5c26 100644
--- a/src/coreclr/debug/daccess/dacdbiimpl.cpp
+++ b/src/coreclr/debug/daccess/dacdbiimpl.cpp
@@ -4771,15 +4771,15 @@ VMPTR_OBJECTHANDLE DacDbiInterfaceImpl::GetThreadObject(VMPTR_Thread vmThread)
}
}
-void DacDbiInterfaceImpl::GetThreadAllocInfo(VMPTR_Thread vmThread,
+void DacDbiInterfaceImpl::GetThreadAllocInfo(VMPTR_Thread vmThread,
DacThreadAllocInfo* threadAllocInfo)
{
DD_ENTER_MAY_THROW;
Thread * pThread = vmThread.GetDacPtr();
gc_alloc_context* allocContext = pThread->GetAllocContext();
- threadAllocInfo->m_allocBytesSOH = (ULONG)(allocContext->alloc_bytes - (allocContext->alloc_limit - allocContext->alloc_ptr));
- threadAllocInfo->m_allocBytesUOH = (ULONG)allocContext->alloc_bytes_uoh;
+ threadAllocInfo->m_allocBytesSOH = allocContext->alloc_bytes - (allocContext->alloc_limit - allocContext->alloc_ptr);
+ threadAllocInfo->m_allocBytesUOH = allocContext->alloc_bytes_uoh;
}
// Set and reset the TSNC_DebuggerUserSuspend bit on the state of the specified thread
@@ -4939,6 +4939,10 @@ VMPTR_OBJECTHANDLE DacDbiInterfaceImpl::GetObjectForCCW(CORDB_ADDRESS ccwPtr)
OBJECTHANDLE ohCCW = NULL;
+#ifdef FEATURE_COMWRAPPERS
+ if (DACTryGetComWrappersHandleFromCCW(ccwPtr, &ohCCW) != S_OK)
+ {
+#endif
#ifdef FEATURE_COMINTEROP
ComCallWrapper *pCCW = DACGetCCWFromAddress(ccwPtr);
if (pCCW)
@@ -4946,6 +4950,9 @@ VMPTR_OBJECTHANDLE DacDbiInterfaceImpl::GetObjectForCCW(CORDB_ADDRESS ccwPtr)
ohCCW = pCCW->GetObjectHandle();
}
#endif
+#ifdef FEATURE_COMWRAPPERS
+ }
+#endif
VMPTR_OBJECTHANDLE vmObjHandle;
vmObjHandle.SetDacTargetPtr(ohCCW);
@@ -5462,6 +5469,12 @@ GENERICS_TYPE_TOKEN DacDbiInterfaceImpl::ResolveExactGenericArgsToken(DWORD
if (dwExactGenericArgsTokenIndex == 0)
{
+ // In a rare case of VS4Mac debugging VS4Mac ARM64 optimized code we get a null generics argument token. This workaround
+ // should only cause us to degrade generic types from exact type parameters to approximate or canonical type parameters.
+ if (rawToken == 0)
+ {
+ return rawToken;
+ }
// In this case the real generics type token is the MethodTable of the "this" object.
// Note that we want the target address here.
diff --git a/src/coreclr/debug/daccess/dacimpl.h b/src/coreclr/debug/daccess/dacimpl.h
index 62d99ec574929d..6e0001cf5c1acf 100644
--- a/src/coreclr/debug/daccess/dacimpl.h
+++ b/src/coreclr/debug/daccess/dacimpl.h
@@ -1498,6 +1498,11 @@ class ClrDataAccess
static LONG s_procInit;
+protected:
+#ifdef FEATURE_COMWRAPPERS
+ HRESULT DACTryGetComWrappersHandleFromCCW(CLRDATA_ADDRESS ccwPtr, OBJECTHANDLE* objHandle);
+#endif
+
public:
// APIs for picking up the info needed for a debugger to look up an ngen image or IL image
// from it's search path.
diff --git a/src/coreclr/debug/daccess/enummem.cpp b/src/coreclr/debug/daccess/enummem.cpp
index 577fdcbc6b2e44..a925d4b4ca0d23 100644
--- a/src/coreclr/debug/daccess/enummem.cpp
+++ b/src/coreclr/debug/daccess/enummem.cpp
@@ -237,6 +237,34 @@ HRESULT ClrDataAccess::EnumMemCLRStatic(IN CLRDataEnumMemoryFlags flags)
ReportMem(g_gcDacGlobals.GetAddr(), sizeof(GcDacVars));
+ PTR_WSTR entryAssemblyPath = (PTR_WSTR)g_EntryAssemblyPath;
+ entryAssemblyPath.EnumMem();
+
+ // Triage dumps must not include full paths (PII data). Replace entry assembly path with file name only.
+ if (flags == CLRDATA_ENUM_MEM_TRIAGE)
+ {
+ WCHAR* path = entryAssemblyPath;
+ if (path != NULL)
+ {
+ size_t pathLen = wcslen(path) + 1;
+
+ // Get the file name based on the last directory separator
+ const WCHAR* name = wcsrchr(path, DIRECTORY_SEPARATOR_CHAR_W);
+ if (name != NULL)
+ {
+ name += 1;
+ size_t len = wcslen(name) + 1;
+ wcscpy_s(path, len, name);
+
+ // Null out the rest of the buffer
+ for (size_t i = len; i < pathLen; ++i)
+ path[i] = W('\0');
+
+ DacUpdateMemoryRegion(entryAssemblyPath.GetAddr(), pathLen, (BYTE*)path);
+ }
+ }
+ }
+
// We need all of the dac variables referenced by the GC DAC global struct.
// This struct contains pointers to pointers, so we first dereference the pointers
// to obtain the location of the variable that's reported.
@@ -1624,6 +1652,7 @@ HRESULT ClrDataAccess::EnumMemoryRegionsWorkerSkinny(IN CLRDataEnumMemoryFlags f
//
// collect CLR static
CATCH_ALL_EXCEPT_RETHROW_COR_E_OPERATIONCANCELLED( status = EnumMemCLRStatic(flags); )
+ CATCH_ALL_EXCEPT_RETHROW_COR_E_OPERATIONCANCELLED( status = EnumMemCLRHeapCrticalStatic(flags); );
// Dump AppDomain-specific info needed for MiniDumpNormal.
CATCH_ALL_EXCEPT_RETHROW_COR_E_OPERATIONCANCELLED( status = EnumMemDumpAppDomainInfo(flags); )
diff --git a/src/coreclr/debug/daccess/request.cpp b/src/coreclr/debug/daccess/request.cpp
index f075dbe29c4e2e..87a3a9838a5a84 100644
--- a/src/coreclr/debug/daccess/request.cpp
+++ b/src/coreclr/debug/daccess/request.cpp
@@ -2791,18 +2791,18 @@ ClrDataAccess::GetGCHeapStaticData(struct DacpGcHeapDetails *detailsData)
detailsData->card_table = PTR_CDADDR(g_card_table);
detailsData->mark_array = (CLRDATA_ADDRESS)*g_gcDacGlobals->mark_array;
detailsData->next_sweep_obj = (CLRDATA_ADDRESS)*g_gcDacGlobals->next_sweep_obj;
- if (g_gcDacGlobals->saved_sweep_ephemeral_seg != nullptr)
- {
- detailsData->saved_sweep_ephemeral_seg = (CLRDATA_ADDRESS)*g_gcDacGlobals->saved_sweep_ephemeral_seg;
- detailsData->saved_sweep_ephemeral_start = (CLRDATA_ADDRESS)*g_gcDacGlobals->saved_sweep_ephemeral_start;
- }
- else
+ if (IsRegion())
{
// with regions, we don't have these variables anymore
// use special value -1 in saved_sweep_ephemeral_seg to signal the region case
detailsData->saved_sweep_ephemeral_seg = (CLRDATA_ADDRESS)-1;
detailsData->saved_sweep_ephemeral_start = 0;
}
+ else
+ {
+ detailsData->saved_sweep_ephemeral_seg = (CLRDATA_ADDRESS)*g_gcDacGlobals->saved_sweep_ephemeral_seg;
+ detailsData->saved_sweep_ephemeral_start = (CLRDATA_ADDRESS)*g_gcDacGlobals->saved_sweep_ephemeral_start;
+ }
detailsData->background_saved_lowest_address = (CLRDATA_ADDRESS)*g_gcDacGlobals->background_saved_lowest_address;
detailsData->background_saved_highest_address = (CLRDATA_ADDRESS)*g_gcDacGlobals->background_saved_highest_address;
@@ -3780,24 +3780,24 @@ ClrDataAccess::EnumWksGlobalMemoryRegions(CLRDataEnumMemoryFlags flags)
Dereference(g_gcDacGlobals->finalize_queue).EnumMem();
// Enumerate the entire generation table, which has variable size
- size_t gen_table_size = g_gcDacGlobals->generation_size * (*g_gcDacGlobals->max_gen + 2);
- DacEnumMemoryRegion(dac_cast(g_gcDacGlobals->generation_table), gen_table_size);
+ EnumGenerationTable(dac_cast(g_gcDacGlobals->generation_table));
if (g_gcDacGlobals->generation_table.IsValid())
{
- // enumerating the generations from max (which is normally gen2) to max+1 gives you
- // the segment list for all the normal segements plus the large heap segment (max+1)
- // this is the convention in the GC so it is repeated here
- for (ULONG i = *g_gcDacGlobals->max_gen; i <= *g_gcDacGlobals->max_gen +1; i++)
+ ULONG first = IsRegion() ? 0 : (*g_gcDacGlobals->max_gen);
+ // enumerating the first to max + 2 gives you
+ // the segment list for all the normal segments plus the pinned heap segment (max + 2)
+ // this is the convention in the GC so it is repeated here
+ for (ULONG i = first; i <= *g_gcDacGlobals->max_gen + 2; i++)
+ {
+ dac_generation gen = GenerationTableIndex(g_gcDacGlobals->generation_table, i);
+ __DPtr seg = dac_cast(gen.start_segment);
+ while (seg)
{
- dac_generation gen = GenerationTableIndex(g_gcDacGlobals->generation_table, i);
- __DPtr seg = dac_cast(gen.start_segment);
- while (seg)
- {
- DacEnumMemoryRegion(dac_cast(seg), sizeof(dac_heap_segment));
- seg = seg->next;
- }
+ DacEnumMemoryRegion(dac_cast(seg), sizeof(dac_heap_segment));
+ seg = seg->next;
}
+ }
}
}
@@ -3842,11 +3842,11 @@ HRESULT ClrDataAccess::GetClrWatsonBucketsWorker(Thread * pThread, GenericModeBl
if (oThrowable != NULL)
{
// Does the throwable have buckets?
- if (((EXCEPTIONREF)oThrowable)->AreWatsonBucketsPresent())
+ U1ARRAYREF refWatsonBucketArray = ((EXCEPTIONREF)oThrowable)->GetWatsonBucketReference();
+ if (refWatsonBucketArray != NULL)
{
// Get the watson buckets from the throwable for non-preallocated
// exceptions
- U1ARRAYREF refWatsonBucketArray = ((EXCEPTIONREF)oThrowable)->GetWatsonBucketReference();
pBuckets = dac_cast(refWatsonBucketArray->GetDataPtr());
}
else
@@ -4176,12 +4176,18 @@ TADDR ClrDataAccess::DACGetManagedObjectWrapperFromCCW(CLRDATA_ADDRESS ccwPtr)
return managedObjectWrapperPtr;
}
-HRESULT ClrDataAccess::DACTryGetComWrappersObjectFromCCW(CLRDATA_ADDRESS ccwPtr, OBJECTREF* objRef)
+HRESULT ClrDataAccess::DACTryGetComWrappersHandleFromCCW(CLRDATA_ADDRESS ccwPtr, OBJECTHANDLE* objHandle)
{
- if (ccwPtr == 0 || objRef == NULL)
- return E_INVALIDARG;
+ HRESULT hr = E_FAIL;
+ TADDR ccw, managedObjectWrapperPtr;
+ ULONG32 bytesRead = 0;
+ OBJECTHANDLE handle;
- SOSDacEnter();
+ if (ccwPtr == 0 || objHandle == NULL)
+ {
+ hr = E_INVALIDARG;
+ goto ErrExit;
+ }
if (!DACIsComWrappersCCW(ccwPtr))
{
@@ -4189,18 +4195,16 @@ HRESULT ClrDataAccess::DACTryGetComWrappersObjectFromCCW(CLRDATA_ADDRESS ccwPtr,
goto ErrExit;
}
- TADDR ccw = CLRDATA_ADDRESS_TO_TADDR(ccwPtr);
+ ccw = CLRDATA_ADDRESS_TO_TADDR(ccwPtr);
// Return ManagedObjectWrapper as an OBJECTHANDLE. (The OBJECTHANDLE is guaranteed to live at offset 0).
- TADDR managedObjectWrapperPtr = DACGetManagedObjectWrapperFromCCW(ccwPtr);
+ managedObjectWrapperPtr = DACGetManagedObjectWrapperFromCCW(ccwPtr);
if (managedObjectWrapperPtr == NULL)
{
hr = E_FAIL;
goto ErrExit;
}
- ULONG32 bytesRead = 0;
- OBJECTHANDLE handle;
IfFailGo(m_pTarget->ReadVirtual(managedObjectWrapperPtr, (PBYTE)&handle, sizeof(OBJECTHANDLE), &bytesRead));
if (bytesRead != sizeof(OBJECTHANDLE))
{
@@ -4208,9 +4212,31 @@ HRESULT ClrDataAccess::DACTryGetComWrappersObjectFromCCW(CLRDATA_ADDRESS ccwPtr,
goto ErrExit;
}
- *objRef = ObjectFromHandle(handle);
+ *objHandle = handle;
- SOSDacLeave();
+ return S_OK;
+
+ErrExit: return hr;
+}
+
+HRESULT ClrDataAccess::DACTryGetComWrappersObjectFromCCW(CLRDATA_ADDRESS ccwPtr, OBJECTREF* objRef)
+{
+ HRESULT hr = E_FAIL;
+
+ if (ccwPtr == 0 || objRef == NULL)
+ {
+ hr = E_INVALIDARG;
+ goto ErrExit;
+ }
+
+ OBJECTHANDLE handle;
+ if (DACTryGetComWrappersHandleFromCCW(ccwPtr, &handle) != S_OK)
+ {
+ hr = E_FAIL;
+ goto ErrExit;
+ }
+
+ *objRef = ObjectFromHandle(handle);
return S_OK;
diff --git a/src/coreclr/debug/daccess/request_common.h b/src/coreclr/debug/daccess/request_common.h
index e6c976f16ffa67..742d24fb3d391f 100644
--- a/src/coreclr/debug/daccess/request_common.h
+++ b/src/coreclr/debug/daccess/request_common.h
@@ -62,6 +62,15 @@ HeapTableIndex(DPTR(unused_gc_heap**) heaps, size_t index)
result.field_name = field_name; \
}
+// if (field_offset != -1)
+// p_field.EnumMem();
+#define ENUM(field_name, field_type) \
+ LOAD_BASE(field_name, field_type) \
+ if (field_name##_offset != -1) \
+ { \
+ p_##field_name.EnumMem(); \
+ }
+
// if (field_offset != -1)
// result.field = DPTR(field_type)field_name
#define LOAD_DPTR(field_name, field_type) \
@@ -87,6 +96,13 @@ HeapTableIndex(DPTR(unused_gc_heap**) heaps, size_t index)
} \
}
+#define ENUM_ARRAY(field_name, field_type, array_length) \
+ LOAD_BASE(field_name, field_type) \
+ if (field_name##_offset != -1) \
+ { \
+ DacEnumMemoryRegion(p_##field_name.GetAddr(), sizeof(field_type) * array_length); \
+ }
+
inline bool IsRegion()
{
return (g_gcDacGlobals->minor_version_number & 1) != 0;
@@ -121,6 +137,26 @@ LoadGcHeapData(TADDR heap)
return result;
}
+inline void EnumGcHeap(TADDR heap)
+{
+ DPTR(int) field_offsets = g_gcDacGlobals->gc_heap_field_offsets;
+ int field_index = 0;
+
+#define BASE heap
+#define ALL_FIELDS
+#define DEFINE_FIELD(field_name, field_type) ENUM(field_name, field_type)
+#define DEFINE_DPTR_FIELD(field_name, field_type) ENUM(field_name, field_type)
+#define DEFINE_ARRAY_FIELD(field_name, field_type, array_length) ENUM_ARRAY(field_name, field_type, array_length)
+
+#include "../../gc/dac_gcheap_fields.h"
+
+#undef DEFINE_ARRAY_FIELD
+#undef DEFINE_DPTR_FIELD
+#undef DEFINE_FIELD
+#undef ALL_FIELDS
+#undef BASE
+}
+
// Load an instance of dac_generation for the generation pointed by generation.
// Fields that does not exist in the current generation instance is zero initialized.
// Return the dac_generation object.
@@ -148,6 +184,26 @@ LoadGeneration(TADDR generation)
return result;
}
+inline void EnumGeneration(TADDR generation)
+{
+ DPTR(int) field_offsets = g_gcDacGlobals->generation_field_offsets;
+ int field_index = 0;
+
+#define BASE generation
+#define ALL_FIELDS
+#define DEFINE_FIELD(field_name, field_type) ENUM(field_name, field_type)
+#define DEFINE_DPTR_FIELD(field_name, field_type) ENUM(field_name, field_type)
+#define DEFINE_ARRAY_FIELD(field_name, field_type, array_length) ENUM_ARRAY(field_name, field_type, array_length)
+
+#include "../../gc/dac_generation_fields.h"
+
+#undef DEFINE_ARRAY_FIELD
+#undef DEFINE_DPTR_FIELD
+#undef DEFINE_FIELD
+#undef ALL_FIELDS
+#undef BASE
+}
+
// Indexes into a given generation table, returning a dac_generation
inline dac_generation
GenerationTableIndex(DPTR(unused_generation) base, size_t index)
@@ -155,10 +211,7 @@ GenerationTableIndex(DPTR(unused_generation) base, size_t index)
return LoadGeneration(TableIndex(base, index, g_gcDacGlobals->generation_size).GetAddr());
}
-// Indexes into a heap's generation table, given the heap instance
-// and the desired index. Returns a dac_generation
-inline dac_generation
-ServerGenerationTableIndex(TADDR heap, size_t index)
+inline TADDR ServerGenerationTableAddress(TADDR heap)
{
DPTR(int) field_offsets = g_gcDacGlobals->gc_heap_field_offsets;
int field_index = GENERATION_TABLE_FIELD_INDEX;
@@ -166,9 +219,27 @@ ServerGenerationTableIndex(TADDR heap, size_t index)
LOAD_BASE (generation_table, unused_generation);
#undef BASE
assert (generation_table_offset != -1);
+ return p_generation_table.GetAddr();
+}
+
+// Indexes into a heap's generation table, given the heap instance
+// and the desired index. Returns a dac_generation
+inline dac_generation
+ServerGenerationTableIndex(TADDR heap, size_t index)
+{
+ DPTR(unused_generation) p_generation_table = ServerGenerationTableAddress(heap);
return LoadGeneration(TableIndex(p_generation_table, index, g_gcDacGlobals->generation_size).GetAddr());
}
+inline void EnumGenerationTable(TADDR generation_table)
+{
+ DPTR(unused_generation) p_generation_table = generation_table;
+ for (unsigned int i = 0; i < *g_gcDacGlobals->max_gen + 2; i++)
+ {
+ EnumGeneration(TableIndex(p_generation_table, i, g_gcDacGlobals->generation_size).GetAddr());
+ }
+}
+
#undef LOAD_ARRAY
#undef LOAD_DPTR
#undef LOAD
diff --git a/src/coreclr/debug/daccess/request_svr.cpp b/src/coreclr/debug/daccess/request_svr.cpp
index 5ff14b0adb56a3..2f3b80fedc411b 100644
--- a/src/coreclr/debug/daccess/request_svr.cpp
+++ b/src/coreclr/debug/daccess/request_svr.cpp
@@ -122,8 +122,11 @@ ClrDataAccess::ServerGCHeapDetails(CLRDATA_ADDRESS heapAddr, DacpGcHeapDetails *
detailsData->lowest_address = PTR_CDADDR(g_lowest_address);
detailsData->highest_address = PTR_CDADDR(g_highest_address);
- detailsData->current_c_gc_state = (CLRDATA_ADDRESS)*g_gcDacGlobals->current_c_gc_state;
-
+ detailsData->current_c_gc_state = c_gc_state_free;
+ if (g_gcDacGlobals->current_c_gc_state != NULL)
+ {
+ detailsData->current_c_gc_state = (CLRDATA_ADDRESS)*g_gcDacGlobals->current_c_gc_state;
+ }
// now get information specific to this heap (server mode gives us several heaps; we're getting
// information about only one of them.
detailsData->alloc_allocated = (CLRDATA_ADDRESS)pHeap->alloc_allocated;
@@ -131,18 +134,18 @@ ClrDataAccess::ServerGCHeapDetails(CLRDATA_ADDRESS heapAddr, DacpGcHeapDetails *
detailsData->card_table = (CLRDATA_ADDRESS)pHeap->card_table;
detailsData->mark_array = (CLRDATA_ADDRESS)pHeap->mark_array;
detailsData->next_sweep_obj = (CLRDATA_ADDRESS)pHeap->next_sweep_obj;
- if (pHeap->saved_sweep_ephemeral_seg.IsValid())
- {
- detailsData->saved_sweep_ephemeral_seg = (CLRDATA_ADDRESS)dac_cast(pHeap->saved_sweep_ephemeral_seg);
- detailsData->saved_sweep_ephemeral_start = (CLRDATA_ADDRESS)pHeap->saved_sweep_ephemeral_start;
- }
- else
+ if (IsRegion())
{
// with regions, we don't have these variables anymore
// use special value -1 in saved_sweep_ephemeral_seg to signal the region case
detailsData->saved_sweep_ephemeral_seg = (CLRDATA_ADDRESS)-1;
detailsData->saved_sweep_ephemeral_start = 0;
}
+ else
+ {
+ detailsData->saved_sweep_ephemeral_seg = (CLRDATA_ADDRESS)dac_cast(pHeap->saved_sweep_ephemeral_seg);
+ detailsData->saved_sweep_ephemeral_start = (CLRDATA_ADDRESS)pHeap->saved_sweep_ephemeral_start;
+ }
detailsData->background_saved_lowest_address = (CLRDATA_ADDRESS)pHeap->background_saved_lowest_address;
detailsData->background_saved_highest_address = (CLRDATA_ADDRESS)pHeap->background_saved_highest_address;
@@ -252,21 +255,19 @@ ClrDataAccess::EnumSvrGlobalMemoryRegions(CLRDataEnumMemoryFlags flags)
for (int i = 0; i < heaps; i++)
{
- TADDR heapAddress = HeapTableIndex(g_gcDacGlobals->g_heaps, i);
+ TADDR heapAddress = HeapTableIndex(g_gcDacGlobals->g_heaps, i);
dac_gc_heap heap = LoadGcHeapData(heapAddress);
dac_gc_heap* pHeap = &heap;
-
- size_t gen_table_size = g_gcDacGlobals->generation_size * (*g_gcDacGlobals->max_gen + 2);
- DacEnumMemoryRegion(dac_cast(pHeap), sizeof(dac_gc_heap));
+ EnumGcHeap(heapAddress);
+ TADDR generationTable = ServerGenerationTableAddress(heapAddress);
+ EnumGenerationTable(generationTable);
DacEnumMemoryRegion(dac_cast(pHeap->finalize_queue), sizeof(dac_finalize_queue));
- TADDR taddrTable = dac_cast(pHeap) + offsetof(dac_gc_heap, generation_table);
- DacEnumMemoryRegion(taddrTable, gen_table_size);
-
- // enumerating the generations from max (which is normally gen2) to max+1 gives you
- // the segment list for all the normal segements plus the large heap segment (max+1)
+ ULONG first = IsRegion() ? 0 : (*g_gcDacGlobals->max_gen);
+ // enumerating the first to max + 2 gives you
+ // the segment list for all the normal segments plus the pinned heap segment (max + 2)
// this is the convention in the GC so it is repeated here
- for (ULONG i = *g_gcDacGlobals->max_gen; i <= *g_gcDacGlobals->max_gen +1; i++)
+ for (ULONG i = first; i <= *g_gcDacGlobals->max_gen + 2; i++)
{
dac_generation generation = ServerGenerationTableIndex(heapAddress, i);
DPTR(dac_heap_segment) seg = generation.start_segment;
@@ -305,7 +306,7 @@ HRESULT DacHeapWalker::InitHeapDataSvr(HeapData *&pHeaps, size_t &pCount)
for (int i = 0; i < heaps; ++i)
{
// Basic heap info.
- TADDR heapAddress = HeapTableIndex(g_gcDacGlobals->g_heaps, i);
+ TADDR heapAddress = HeapTableIndex(g_gcDacGlobals->g_heaps, i);
dac_gc_heap heap = LoadGcHeapData(heapAddress);
dac_gc_heap* pHeap = &heap;
dac_generation gen0 = ServerGenerationTableIndex(heapAddress, 0);
diff --git a/src/coreclr/debug/dbgutil/machoreader.cpp b/src/coreclr/debug/dbgutil/machoreader.cpp
index a19c01b94b3736..07528e1d176cbf 100644
--- a/src/coreclr/debug/dbgutil/machoreader.cpp
+++ b/src/coreclr/debug/dbgutil/machoreader.cpp
@@ -75,7 +75,7 @@ TryGetSymbol(ICorDebugDataTarget* dataTarget, uint64_t baseAddress, const char*
// MachO module
//--------------------------------------------------------------------
-MachOModule::MachOModule(MachOReader& reader, mach_vm_address_t baseAddress, mach_header_64* header, std::string* name) :
+MachOModule::MachOModule(MachOReader& reader, mach_vm_address_t baseAddress, std::string* name) :
m_reader(reader),
m_baseAddress(baseAddress),
m_loadBias(0),
@@ -84,9 +84,6 @@ MachOModule::MachOModule(MachOReader& reader, mach_vm_address_t baseAddress, mac
m_nlists(nullptr),
m_strtabAddress(0)
{
- if (header != nullptr) {
- m_header = *header;
- }
if (name != nullptr) {
m_name = *name;
}
@@ -126,19 +123,41 @@ MachOModule::TryLookupSymbol(const char* symbolName, uint64_t* symbolValue)
_ASSERTE(m_nlists != nullptr);
_ASSERTE(m_strtabAddress != 0);
- for (int i = 0; i < m_dysymtabCommand->nextdefsym; i++)
+ // First, search just the "external" export symbols
+ if (TryLookupSymbol(m_dysymtabCommand->iextdefsym, m_dysymtabCommand->nextdefsym, symbolName, symbolValue))
{
- std::string name = GetSymbolName(i);
- // Skip the leading underscores to match Linux externs
- if (name[0] == '_')
- {
- name.erase(0, 1);
- }
- if (strcmp(name.c_str(), symbolName) == 0)
- {
- *symbolValue = m_loadBias + m_nlists[i].n_value;
- return true;
- }
+ m_reader.Trace("SYM: Found '%s' in external symbols\n", symbolName);
+ return true;
+ }
+ m_reader.Trace("SYM: Missed '%s' in external symbols\n", symbolName);
+
+ // If not found in external symbols, search all of them
+ if (TryLookupSymbol(0, m_symtabCommand->nsyms, symbolName, symbolValue))
+ {
+ m_reader.Trace("SYM: Found '%s' in all symbols\n", symbolName);
+ return true;
+ }
+ m_reader.Trace("SYM: Missed '%s' in all symbols\n", symbolName);
+ }
+ *symbolValue = 0;
+ return false;
+}
+
+bool
+MachOModule::TryLookupSymbol(int start, int nsyms, const char* symbolName, uint64_t* symbolValue)
+{
+ for (int i = 0; i < nsyms; i++)
+ {
+ std::string name = GetSymbolName(start + i);
+
+ // Skip the leading underscores to match Linux externs
+ const char* currentName = name.length() > 0 && name[0] == '_' ? name.c_str() + 1 : name.c_str();
+
+ // Does this symbol match?
+ if (strcmp(currentName, symbolName) == 0)
+ {
+ *symbolValue = m_loadBias + m_nlists[start + i].n_value;
+ return true;
}
}
*symbolValue = 0;
@@ -207,11 +226,10 @@ MachOModule::ReadLoadCommands()
m_segments.push_back(segment);
// Calculate the load bias for the module. This is the value to add to the vmaddr of a
- // segment to get the actual address.
+ // segment to get the actual address.
if (strcmp(segment->segname, SEG_TEXT) == 0)
{
m_loadBias = m_baseAddress - segment->vmaddr;
- m_reader.TraceVerbose("CMD: load bias %016llx\n", m_loadBias);
}
m_reader.TraceVerbose("CMD: vmaddr %016llx vmsize %016llx fileoff %016llx filesize %016llx nsects %d max %c%c%c init %c%c%c %02x %s\n",
@@ -245,6 +263,7 @@ MachOModule::ReadLoadCommands()
// Get next load command
command = (load_command*)((char*)command + command->cmdsize);
}
+ m_reader.TraceVerbose("CMD: load bias %016llx\n", m_loadBias);
}
return true;
@@ -262,26 +281,30 @@ MachOModule::ReadSymbolTable()
_ASSERTE(m_symtabCommand != nullptr);
_ASSERTE(m_strtabAddress == 0);
- m_reader.TraceVerbose("SYM: symoff %08x nsyms %d stroff %08x strsize %d iext %d next %d\n",
+ m_reader.TraceVerbose("SYM: symoff %08x nsyms %d stroff %08x strsize %d iext %d next %d iundef %d nundef %d extref %d nextref %d\n",
m_symtabCommand->symoff,
m_symtabCommand->nsyms,
m_symtabCommand->stroff,
m_symtabCommand->strsize,
m_dysymtabCommand->iextdefsym,
- m_dysymtabCommand->nextdefsym);
-
- // Read the external symbol part of symbol table. An array of "nlist" structs.
- void* extSymbolTableAddress = (void*)(GetAddressFromFileOffset(m_symtabCommand->symoff) + (m_dysymtabCommand->iextdefsym * sizeof(nlist_64)));
- size_t symtabSize = sizeof(nlist_64) * m_dysymtabCommand->nextdefsym;
+ m_dysymtabCommand->nextdefsym,
+ m_dysymtabCommand->iundefsym,
+ m_dysymtabCommand->nundefsym,
+ m_dysymtabCommand->extrefsymoff,
+ m_dysymtabCommand->nextrefsyms);
+
+ // Read the entire symbol part of symbol table. An array of "nlist" structs.
+ void* symbolTableAddress = (void*)GetAddressFromFileOffset(m_symtabCommand->symoff);
+ size_t symtabSize = sizeof(nlist_64) * m_symtabCommand->nsyms;
m_nlists = (nlist_64*)malloc(symtabSize);
if (m_nlists == nullptr)
{
- m_reader.Trace("ERROR: Failed to allocate %zu byte external symbol table\n", symtabSize);
+ m_reader.Trace("ERROR: Failed to allocate %zu byte symtab\n", symtabSize);
return false;
}
- if (!m_reader.ReadMemory(extSymbolTableAddress, m_nlists, symtabSize))
+ if (!m_reader.ReadMemory(symbolTableAddress, m_nlists, symtabSize))
{
- m_reader.Trace("ERROR: Failed to read external symtab at %p of %zu\n", extSymbolTableAddress, symtabSize);
+ m_reader.Trace("ERROR: Failed to read symtab at %p of %zu\n", symbolTableAddress, symtabSize);
return false;
}
@@ -337,43 +360,25 @@ MachOReader::MachOReader()
}
bool
-MachOReader::EnumerateModules(mach_vm_address_t address, mach_header_64* header)
+MachOReader::EnumerateModules(mach_vm_address_t dyldInfoAddress)
{
- _ASSERTE(header->magic == MH_MAGIC_64);
- _ASSERTE(header->filetype == MH_DYLINKER);
-
- MachOModule dylinker(*this, address, header);
-
- // Search for symbol for the dyld image info cache
- uint64_t dyldInfoAddress = 0;
- if (!dylinker.TryLookupSymbol("dyld_all_image_infos", &dyldInfoAddress))
- {
- Trace("ERROR: Can not find the _dyld_all_image_infos symbol\n");
- return false;
- }
-
// Read the all image info from the dylinker image
dyld_all_image_infos dyldInfo;
-
if (!ReadMemory((void*)dyldInfoAddress, &dyldInfo, sizeof(dyld_all_image_infos)))
{
Trace("ERROR: Failed to read dyld_all_image_infos at %p\n", (void*)dyldInfoAddress);
return false;
}
- std::string dylinkerPath;
- if (!ReadString(dyldInfo.dyldPath, dylinkerPath))
+ Trace("MOD: infoArray %p infoArrayCount %d\n", dyldInfo.infoArray, dyldInfo.infoArrayCount);
+
+ // Create the dyld module info
+ if (!TryRegisterModule(dyldInfo.dyldImageLoadAddress, dyldInfo.dyldPath, true))
{
- Trace("ERROR: Failed to read name at %p\n", dyldInfo.dyldPath);
+ Trace("ERROR: Failed to read dyld header at %p\n", dyldInfo.dyldImageLoadAddress);
return false;
}
- dylinker.SetName(dylinkerPath);
- Trace("MOD: %016llx %08x %s\n", dylinker.BaseAddress(), dylinker.Header().flags, dylinker.Name().c_str());
- VisitModule(dylinker);
-
void* imageInfosAddress = (void*)dyldInfo.infoArray;
size_t imageInfosSize = dyldInfo.infoArrayCount * sizeof(dyld_image_info);
- Trace("MOD: infoArray %p infoArrayCount %d\n", dyldInfo.infoArray, dyldInfo.infoArrayCount);
-
ArrayHolder imageInfos = new (std::nothrow) dyld_image_info[dyldInfo.infoArrayCount];
if (imageInfos == nullptr)
{
@@ -387,22 +392,38 @@ MachOReader::EnumerateModules(mach_vm_address_t address, mach_header_64* header)
}
for (int i = 0; i < dyldInfo.infoArrayCount; i++)
{
- mach_vm_address_t imageAddress = (mach_vm_address_t)imageInfos[i].imageLoadAddress;
- const char* imageFilePathAddress = imageInfos[i].imageFilePath;
+ // Ignore any errors and continue to next module
+ TryRegisterModule(imageInfos[i].imageLoadAddress, imageInfos[i].imageFilePath, false);
+ }
+ return true;
+}
- std::string imagePath;
- if (!ReadString(imageFilePathAddress, imagePath))
- {
- Trace("ERROR: Failed to read image name at %p\n", imageFilePathAddress);
- continue;
- }
- MachOModule module(*this, imageAddress, nullptr, &imagePath);
- if (!module.ReadHeader())
+bool
+MachOReader::TryRegisterModule(const struct mach_header* imageAddress, const char* imageFilePathAddress, bool dylinker)
+{
+ std::string imagePath;
+ if (!ReadString(imageFilePathAddress, imagePath))
+ {
+ return false;
+ }
+ MachOModule module(*this, (mach_vm_address_t)imageAddress, &imagePath);
+ if (!module.ReadHeader())
+ {
+ return false;
+ }
+ Trace("MOD: %016llx %08x %s\n", imageAddress, module.Header().flags, imagePath.c_str());
+ VisitModule(module);
+ if (dylinker)
+ {
+ // Make sure the memory for the symbol and string tables are in the core dump for our
+ // dump readers which still use this symbol to enumerate modules.
+ uint64_t dyldInfoAddress = 0;
+ if (!module.TryLookupSymbol("dyld_all_image_infos", &dyldInfoAddress))
{
- continue;
+ Trace("ERROR: Can not find the _dyld_all_image_infos symbol\n");
+ return false;
}
- Trace("MOD: %016llx %08x %s\n", imageAddress, module.Header().flags, imagePath.c_str());
- VisitModule(module);
+ Trace("MOD: dyldInfoAddress %016llx\n", dyldInfoAddress);
}
return true;
}
diff --git a/src/coreclr/debug/dbgutil/machoreader.h b/src/coreclr/debug/dbgutil/machoreader.h
index bb9ffe0fdd7ceb..19630e624f61c6 100644
--- a/src/coreclr/debug/dbgutil/machoreader.h
+++ b/src/coreclr/debug/dbgutil/machoreader.h
@@ -27,7 +27,7 @@ class MachOModule
uint64_t m_strtabAddress;
public:
- MachOModule(MachOReader& reader, mach_vm_address_t baseAddress, mach_header_64* header = nullptr, std::string* name = nullptr);
+ MachOModule(MachOReader& reader, mach_vm_address_t baseAddress, std::string* name = nullptr);
~MachOModule();
inline mach_vm_address_t BaseAddress() const { return m_baseAddress; }
@@ -37,11 +37,10 @@ class MachOModule
bool ReadHeader();
bool TryLookupSymbol(const char* symbolName, uint64_t* symbolValue);
+ bool TryLookupSymbol(int start, int nsyms, const char* symbolName, uint64_t* symbolValue);
bool EnumerateSegments();
private:
- inline void SetName(std::string& name) { m_name = name; }
-
bool ReadLoadCommands();
bool ReadSymbolTable();
uint64_t GetAddressFromFileOffset(uint32_t offset);
@@ -53,9 +52,10 @@ class MachOReader
friend MachOModule;
public:
MachOReader();
- bool EnumerateModules(mach_vm_address_t address, mach_header_64* header);
+ bool EnumerateModules(mach_vm_address_t dyldInfoAddress);
private:
+ bool TryRegisterModule(const struct mach_header* imageAddress, const char* imageFilePathAddress, bool dylinker);
bool ReadString(const char* address, std::string& str);
virtual void VisitModule(MachOModule& module) { };
virtual void VisitSegment(MachOModule& module, const segment_command_64& segment) { };
diff --git a/src/coreclr/debug/debug-pal/CMakeLists.txt b/src/coreclr/debug/debug-pal/CMakeLists.txt
index d2846f93b13f93..a382af2c07ad74 100644
--- a/src/coreclr/debug/debug-pal/CMakeLists.txt
+++ b/src/coreclr/debug/debug-pal/CMakeLists.txt
@@ -1,6 +1,6 @@
-
include_directories(../inc)
include_directories(../../pal/inc)
+include_directories(${EP_GENERATED_HEADER_PATH})
add_definitions(-DPAL_STDCPP_COMPAT)
diff --git a/src/coreclr/debug/di/cordb.cpp b/src/coreclr/debug/di/cordb.cpp
index 2c11397fcd3bc7..e3b54bf9f99855 100644
--- a/src/coreclr/debug/di/cordb.cpp
+++ b/src/coreclr/debug/di/cordb.cpp
@@ -102,29 +102,29 @@ STDAPI CreateCordbObject(int iDebuggerVersion, IUnknown ** ppCordb)
{
return E_INVALIDARG;
}
-
return Cordb::CreateObject(
- (CorDebugInterfaceVersion)iDebuggerVersion, ProcessDescriptor::UNINITIALIZED_PID, /*lpApplicationGroupId*/ NULL, IID_ICorDebug, (void **) ppCordb);
+ (CorDebugInterfaceVersion)iDebuggerVersion, ProcessDescriptor::UNINITIALIZED_PID, /*lpApplicationGroupId*/ NULL, /*dacModulePath*/ NULL, IID_ICorDebug, (void **) ppCordb);
}
//
// Public API.
-// Telesto Creation path with Mac sandbox support - only way to debug a sandboxed application on Mac.
-// This supercedes code:CoreCLRCreateCordbObject
+// Creation path with Mac sandbox support and explicit DAC module path for single-file apps
+// This supercedes code:CoreCLRCreateCordbObjectEx
//
// Arguments:
// iDebuggerVersion - version of ICorDebug interfaces that the debugger is requesting
// pid - pid of debuggee that we're attaching to.
-// lpApplicationGroupId - A string representing the application group ID of a sandboxed
+// lpApplicationGroupId - a string representing the application group ID of a sandboxed
// process running in Mac. Pass NULL if the process is not
// running in a sandbox and other platforms.
+// dacModulePath - the full module path of the DAC module or NULL.
// hmodTargetCLR - module handle to clr in target pid that we're attaching to.
// ppCordb - (out) the resulting ICorDebug object.
//
// Notes:
// It's inconsistent that this takes a (handle, pid) but hands back an ICorDebug instead of an ICorDebugProcess.
// Callers will need to call *ppCordb->DebugActiveProcess(pid).
-STDAPI DLLEXPORT CoreCLRCreateCordbObjectEx(int iDebuggerVersion, DWORD pid, LPCWSTR lpApplicationGroupId, HMODULE hmodTargetCLR, IUnknown ** ppCordb)
+STDAPI DLLEXPORT CoreCLRCreateCordbObject3(int iDebuggerVersion, DWORD pid, LPCWSTR lpApplicationGroupId, LPCWSTR dacModulePath, HMODULE hmodTargetCLR, IUnknown** ppCordb)
{
if (ppCordb == NULL)
{
@@ -140,7 +140,7 @@ STDAPI DLLEXPORT CoreCLRCreateCordbObjectEx(int iDebuggerVersion, DWORD pid, LPC
// Create the ICorDebug object
//
RSExtSmartPtr pCordb;
- Cordb::CreateObject((CorDebugInterfaceVersion)iDebuggerVersion, pid, lpApplicationGroupId, IID_ICorDebug, (void **) &pCordb);
+ Cordb::CreateObject((CorDebugInterfaceVersion)iDebuggerVersion, pid, lpApplicationGroupId, dacModulePath, IID_ICorDebug, (void **) &pCordb);
//
// Associate it with the target instance
@@ -162,7 +162,29 @@ STDAPI DLLEXPORT CoreCLRCreateCordbObjectEx(int iDebuggerVersion, DWORD pid, LPC
//
// Public API.
-// Telesto Creation path - only way to debug multi-instance.
+// Creation path with Mac sandbox support - only way to debug a sandboxed application on Mac.
+// This supercedes code:CoreCLRCreateCordbObject
+//
+// Arguments:
+// iDebuggerVersion - version of ICorDebug interfaces that the debugger is requesting
+// pid - pid of debuggee that we're attaching to.
+// lpApplicationGroupId - a string representing the application group ID of a sandboxed
+// process running in Mac. Pass NULL if the process is not
+// running in a sandbox and other platforms.
+// hmodTargetCLR - module handle to clr in target pid that we're attaching to.
+// ppCordb - (out) the resulting ICorDebug object.
+//
+// Notes:
+// It's inconsistent that this takes a (handle, pid) but hands back an ICorDebug instead of an ICorDebugProcess.
+// Callers will need to call *ppCordb->DebugActiveProcess(pid).
+STDAPI DLLEXPORT CoreCLRCreateCordbObjectEx(int iDebuggerVersion, DWORD pid, LPCWSTR lpApplicationGroupId, HMODULE hmodTargetCLR, IUnknown ** ppCordb)
+{
+ return CoreCLRCreateCordbObject3(iDebuggerVersion, pid, lpApplicationGroupId, NULL, hmodTargetCLR, ppCordb);
+}
+
+//
+// Public API.
+// Creation path - only way to debug multi-instance.
// This supercedes code:CreateCordbObject
//
// Arguments:
@@ -180,9 +202,6 @@ STDAPI DLLEXPORT CoreCLRCreateCordbObject(int iDebuggerVersion, DWORD pid, HMODU
}
-
-
-
//*****************************************************************************
// The main dll entry point for this module. This routine is called by the
// OS when the dll gets loaded. Control is simply deferred to the main code.
diff --git a/src/coreclr/debug/di/process.cpp b/src/coreclr/debug/di/process.cpp
index 791871946a1b24..53f2db1109d87c 100644
--- a/src/coreclr/debug/di/process.cpp
+++ b/src/coreclr/debug/di/process.cpp
@@ -686,9 +686,9 @@ CordbProcess::CreateDacDbiInterface()
// in the new arch we can get the module from OpenVirtualProcess2 but in the shim case
// and the deprecated OpenVirtualProcess case we must assume it comes from DAC in the
// same directory as DBI
- if(m_hDacModule == NULL)
+ if (m_hDacModule == NULL)
{
- m_hDacModule.Assign(ShimProcess::GetDacModule());
+ m_hDacModule.Assign(ShimProcess::GetDacModule(m_cordb->GetDacModulePath()));
}
//
diff --git a/src/coreclr/debug/di/rsmain.cpp b/src/coreclr/debug/di/rsmain.cpp
index ff49f2186a40ca..7a0875928c528e 100644
--- a/src/coreclr/debug/di/rsmain.cpp
+++ b/src/coreclr/debug/di/rsmain.cpp
@@ -956,16 +956,17 @@ namespace
* Cordb class
* ------------------------------------------------------------------------- */
Cordb::Cordb(CorDebugInterfaceVersion iDebuggerVersion)
- : Cordb(iDebuggerVersion, ProcessDescriptor::CreateUninitialized())
+ : Cordb(iDebuggerVersion, ProcessDescriptor::CreateUninitialized(), NULL)
{
}
-Cordb::Cordb(CorDebugInterfaceVersion iDebuggerVersion, const ProcessDescriptor& pd)
+Cordb::Cordb(CorDebugInterfaceVersion iDebuggerVersion, const ProcessDescriptor& pd, LPCWSTR dacModulePath)
: CordbBase(NULL, 0, enumCordb),
m_processes(11),
m_initialized(false),
m_debuggerSpecifiedVersion(iDebuggerVersion),
- m_pd(pd)
+ m_pd(pd),
+ m_dacModulePath(dacModulePath)
#ifdef FEATURE_CORESYSTEM
,
m_targetCLR(0)
@@ -2065,7 +2066,7 @@ void Cordb::EnsureCanLaunchOrAttach(BOOL fWin32DebuggingEnabled)
HRESULT Cordb::CreateObjectV1(REFIID id, void **object)
{
- return CreateObject(CorDebugVersion_1_0, ProcessDescriptor::UNINITIALIZED_PID, NULL, id, object);
+ return CreateObject(CorDebugVersion_1_0, ProcessDescriptor::UNINITIALIZED_PID, NULL, NULL, id, object);
}
#if defined(FEATURE_DBGIPC_TRANSPORT_DI)
@@ -2073,13 +2074,13 @@ HRESULT Cordb::CreateObjectV1(REFIID id, void **object)
// same debug engine version as V2, though this may change in the future.
HRESULT Cordb::CreateObjectTelesto(REFIID id, void ** pObject)
{
- return CreateObject(CorDebugVersion_2_0, ProcessDescriptor::UNINITIALIZED_PID, NULL, id, pObject);
+ return CreateObject(CorDebugVersion_2_0, ProcessDescriptor::UNINITIALIZED_PID, NULL, NULL, id, pObject);
}
#endif // FEATURE_DBGIPC_TRANSPORT_DI
// Static
// Used to create an instance for a ClassFactory (thus an external ref).
-HRESULT Cordb::CreateObject(CorDebugInterfaceVersion iDebuggerVersion, DWORD pid, LPCWSTR lpApplicationGroupId, REFIID id, void **object)
+HRESULT Cordb::CreateObject(CorDebugInterfaceVersion iDebuggerVersion, DWORD pid, LPCWSTR lpApplicationGroupId, LPCWSTR dacModulePath, REFIID id, void **object)
{
if (id != IID_IUnknown && id != IID_ICorDebug)
return (E_NOINTERFACE);
@@ -2111,7 +2112,7 @@ HRESULT Cordb::CreateObject(CorDebugInterfaceVersion iDebuggerVersion, DWORD pid
ProcessDescriptor pd = ProcessDescriptor::Create(pid, applicationGroupId);
- Cordb *db = new (nothrow) Cordb(iDebuggerVersion, pd);
+ Cordb *db = new (nothrow) Cordb(iDebuggerVersion, pd, dacModulePath);
if (db == NULL)
{
diff --git a/src/coreclr/debug/di/rspriv.h b/src/coreclr/debug/di/rspriv.h
index f4e3077938b720..054ef9326abb95 100644
--- a/src/coreclr/debug/di/rspriv.h
+++ b/src/coreclr/debug/di/rspriv.h
@@ -2226,7 +2226,7 @@ class Cordb : public CordbBase, public ICorDebug, public ICorDebugRemote
#if defined(FEATURE_DBGIPC_TRANSPORT_DI)
static COM_METHOD CreateObjectTelesto(REFIID id, void ** pObject);
#endif // FEATURE_DBGIPC_TRANSPORT_DI
- static COM_METHOD CreateObject(CorDebugInterfaceVersion iDebuggerVersion, DWORD pid, LPCWSTR lpApplicationGroupId, REFIID id, void **object);
+ static COM_METHOD CreateObject(CorDebugInterfaceVersion iDebuggerVersion, DWORD pid, LPCWSTR lpApplicationGroupId, LPCWSTR lpwstrDacModulePath, REFIID id, void** object);
//-----------------------------------------------------------
// ICorDebugRemote
@@ -2299,6 +2299,7 @@ class Cordb : public CordbBase, public ICorDebug, public ICorDebugRemote
private:
Cordb(CorDebugInterfaceVersion iDebuggerVersion, const ProcessDescriptor& pd);
+ Cordb(CorDebugInterfaceVersion iDebuggerVersion, const ProcessDescriptor& pd, LPCWSTR dacModulePath);
//-----------------------------------------------------------
// Data members
@@ -2315,6 +2316,8 @@ class Cordb : public CordbBase, public ICorDebug, public ICorDebugRemote
CorDebugInterfaceVersion GetDebuggerVersion() const;
+ PathString& GetDacModulePath() { return m_dacModulePath; }
+
#ifdef FEATURE_CORESYSTEM
HMODULE GetTargetCLR() { return m_targetCLR; }
#endif
@@ -2338,6 +2341,8 @@ class Cordb : public CordbBase, public ICorDebug, public ICorDebugRemote
// Store information about the process to be debugged
ProcessDescriptor m_pd;
+ PathString m_dacModulePath;
+
//Note - this code could be useful outside coresystem, but keeping the change localized
// because we are late in the win8 release
#ifdef FEATURE_CORESYSTEM
@@ -6045,7 +6050,8 @@ struct GetActiveInternalFramesData
class CordbThread : public CordbBase, public ICorDebugThread,
public ICorDebugThread2,
public ICorDebugThread3,
- public ICorDebugThread4
+ public ICorDebugThread4,
+ public ICorDebugThread5
{
public:
CordbThread(CordbProcess * pProcess, VMPTR_Thread);
@@ -6116,6 +6122,10 @@ class CordbThread : public CordbBase, public ICorDebugThread,
// ICorDebugThread4
COM_METHOD HasUnhandledException();
+ // ICorDebugThread5
+ COM_METHOD GetBytesAllocated(ULONG64 *pSohAllocatedBytes,
+ ULONG64 *pUohAllocatedBytes);
+
COM_METHOD GetBlockingObjects(ICorDebugBlockingObjectEnum **ppBlockingObjectEnum);
// Gets the current CustomNotification object from the thread or NULL if no such object exists
diff --git a/src/coreclr/debug/di/rsthread.cpp b/src/coreclr/debug/di/rsthread.cpp
index 04a7fa21a1db4d..577574b796019c 100644
--- a/src/coreclr/debug/di/rsthread.cpp
+++ b/src/coreclr/debug/di/rsthread.cpp
@@ -186,6 +186,10 @@ HRESULT CordbThread::QueryInterface(REFIID id, void ** ppInterface)
{
*ppInterface = static_cast(this);
}
+ else if (id == IID_ICorDebugThread5)
+ {
+ *ppInterface = static_cast(this);
+ }
else if (id == IID_IUnknown)
{
*ppInterface = static_cast(static_cast(this));
@@ -2457,6 +2461,42 @@ HRESULT CordbThread::GetCurrentCustomDebuggerNotification(ICorDebugValue ** ppNo
return hr;
}
+// ICorDebugThread5
+
+/*
+ * GetBytesAllocated
+ *
+ * Returns S_OK if it was possible to obtain the allocation information for the thread
+ * and sets the corresponding SOH and UOH allocations.
+ */
+HRESULT CordbThread::GetBytesAllocated(ULONG64 *pSohAllocatedBytes,
+ ULONG64 *pUohAllocatedBytes)
+{
+ PUBLIC_API_ENTRY(this);
+ FAIL_IF_NEUTERED(this);
+ ATT_REQUIRE_STOPPED_MAY_FAIL(GetProcess());
+
+ HRESULT hr = S_OK;
+ EX_TRY
+ {
+ DacThreadAllocInfo threadAllocInfo = { 0 };
+
+ if (pSohAllocatedBytes == NULL || pUohAllocatedBytes == NULL)
+ {
+ ThrowHR(E_INVALIDARG);
+ }
+
+ IDacDbiInterface * pDAC = GetProcess()->GetDAC();
+ pDAC->GetThreadAllocInfo(m_vmThreadToken, &threadAllocInfo);
+
+ *pSohAllocatedBytes = threadAllocInfo.m_allocBytesSOH;
+ *pUohAllocatedBytes = threadAllocInfo.m_allocBytesUOH;
+ }
+ EX_CATCH_HRESULT(hr);
+
+ return hr;
+} // CordbThread::GetBytesAllocated
+
/*
*
* SetRemapIP
@@ -10775,4 +10815,3 @@ HRESULT CordbCodeEnum::Next(ULONG celt, ICorDebugCode *values[], ULONG *pceltFet
return hr;
}
-
diff --git a/src/coreclr/debug/di/shimpriv.h b/src/coreclr/debug/di/shimpriv.h
index 89a0c0d0c79374..0b34227767c96c 100644
--- a/src/coreclr/debug/di/shimpriv.h
+++ b/src/coreclr/debug/di/shimpriv.h
@@ -389,7 +389,7 @@ class ShimProcess
);
// Locates the DAC module adjacent to DBI
- static HMODULE GetDacModule();
+ static HMODULE GetDacModule(PathString& dacModulePath);
//
// Functions used by CordbProcess
diff --git a/src/coreclr/debug/di/shimprocess.cpp b/src/coreclr/debug/di/shimprocess.cpp
index 72da6068e8235b..a49eb224543a35 100644
--- a/src/coreclr/debug/di/shimprocess.cpp
+++ b/src/coreclr/debug/di/shimprocess.cpp
@@ -1819,28 +1819,30 @@ HRESULT ShimProcess::FindLoadedCLR(CORDB_ADDRESS * pClrInstanceId)
// Throws on errors.
//
-HMODULE ShimProcess::GetDacModule()
+HMODULE ShimProcess::GetDacModule(PathString& dacModulePath)
{
- HModuleHolder hDacDll;
- PathString wszAccessDllPath;
+ HMODULE hDacDll;
+ PathString wszAccessDllPath(dacModulePath);
- //
- // Load the access DLL from the same directory as the the current CLR Debugging Services DLL.
- //
- if (GetClrModuleDirectory(wszAccessDllPath) != S_OK)
+ if (wszAccessDllPath.IsEmpty())
{
- ThrowLastError();
- }
-
- // Dac Dll is named:
- // mscordaccore.dll <-- coreclr
- // mscordacwks.dll <-- desktop
- PCWSTR eeFlavor = MAKEDLLNAME_W(W("mscordaccore"));
+ //
+ // Load the access DLL from the same directory as the the current CLR Debugging Services DLL.
+ //
+ if (GetClrModuleDirectory(wszAccessDllPath) != S_OK)
+ {
+ ThrowLastError();
+ }
- wszAccessDllPath.Append(eeFlavor);
+ // Dac Dll is named:
+ // mscordaccore.dll <-- coreclr
+ // mscordacwks.dll <-- desktop
+ PCWSTR eeFlavor = MAKEDLLNAME_W(W("mscordaccore"));
- hDacDll.Assign(WszLoadLibrary(wszAccessDllPath));
- if (!hDacDll)
+ wszAccessDllPath.Append(eeFlavor);
+ }
+ hDacDll = WszLoadLibrary(wszAccessDllPath);
+ if (hDacDll == NULL)
{
DWORD dwLastError = GetLastError();
if (dwLastError == ERROR_MOD_NOT_FOUND)
@@ -1853,8 +1855,7 @@ HMODULE ShimProcess::GetDacModule()
ThrowWin32(dwLastError);
}
}
- hDacDll.SuppressRelease();
- return (HMODULE) hDacDll;
+ return hDacDll;
}
MachineInfo ShimProcess::GetMachineInfo()
diff --git a/src/coreclr/debug/ee/debugger.cpp b/src/coreclr/debug/ee/debugger.cpp
index ab0610226cbf5c..136105fe127bf9 100644
--- a/src/coreclr/debug/ee/debugger.cpp
+++ b/src/coreclr/debug/ee/debugger.cpp
@@ -2719,7 +2719,6 @@ DebuggerJitInfo *Debugger::GetJitInfoWorker(MethodDesc *fd, const BYTE *pbAddr,
// This may take the lock and lazily create an entry, so we do it up front.
dji = dmi->GetLatestJitInfo(fd);
-
DebuggerDataLockHolder debuggerDataLockHolder(this);
// Note the call to GetLatestJitInfo() will lazily create the first DJI if we don't already have one.
@@ -2730,6 +2729,7 @@ DebuggerJitInfo *Debugger::GetJitInfoWorker(MethodDesc *fd, const BYTE *pbAddr,
break;
}
}
+
LOG((LF_CORDB, LL_INFO1000, "D::GJI: for md:0x%x (%s::%s), got dmi:0x%x.\n",
fd, fd->m_pszDebugClassName, fd->m_pszDebugMethodName,
dmi));
@@ -2757,7 +2757,9 @@ DebuggerJitInfo *Debugger::GetJitInfoWorker(MethodDesc *fd, const BYTE *pbAddr,
LOG((LF_CORDB,LL_INFO1000,"Couldn't find a DJI by address 0x%p, "
"so it might be a stub or thunk\n", pbAddr));
TraceDestination trace;
-
+ // Nothing here needs the data lock anymore, and GetJitInfo will grab the lock as needed.
+ // However, tracing may go into code versioning paths and this lock can't be held for that.
+ debuggerDataLockHolder.Release();
g_pEEInterface->TraceStub((const BYTE *)pbAddr, &trace);
if ((trace.GetTraceType() == TRACE_MANAGED) && (pbAddr != (const BYTE *)trace.GetAddress()))
@@ -16507,7 +16509,7 @@ HRESULT DebuggerHeap::Init(BOOL fExecutable)
return E_OUTOFMEMORY;
}
}
-#endif
+#endif
#endif // !DACCESS_COMPILE
diff --git a/src/coreclr/debug/inc/dacdbistructures.h b/src/coreclr/debug/inc/dacdbistructures.h
index 2dabaa48e2c23d..19c788edb297f6 100644
--- a/src/coreclr/debug/inc/dacdbistructures.h
+++ b/src/coreclr/debug/inc/dacdbistructures.h
@@ -787,8 +787,8 @@ struct MSLAYOUT DacSharedReJitInfo
// These represent the allocated bytes so far on the thread.
struct MSLAYOUT DacThreadAllocInfo
{
- ULONG m_allocBytesSOH;
- ULONG m_allocBytesUOH;
+ ULONG64 m_allocBytesSOH;
+ ULONG64 m_allocBytesUOH;
};
#include "dacdbistructures.inl"
diff --git a/src/coreclr/dlls/mscordac/mscordac_unixexports.src b/src/coreclr/dlls/mscordac/mscordac_unixexports.src
index 4fc0af3d682340..046f71196b0d23 100644
--- a/src/coreclr/dlls/mscordac/mscordac_unixexports.src
+++ b/src/coreclr/dlls/mscordac/mscordac_unixexports.src
@@ -31,6 +31,7 @@ nativeStringResourceTable_mscorrc
#PAL_GetLogicalCpuCountFromOS
#PAL_GetTotalCpuCount
#PAL_GetNumaProcessorNode
+#PAL_GetUnwindInfoSize
#PAL_get_stdout
#PAL_get_stderr
#PAL_GetApplicationGroupId
diff --git a/src/coreclr/dlls/mscordbi/CMakeLists.txt b/src/coreclr/dlls/mscordbi/CMakeLists.txt
index c7a23c9923fe1d..b7618b324c2608 100644
--- a/src/coreclr/dlls/mscordbi/CMakeLists.txt
+++ b/src/coreclr/dlls/mscordbi/CMakeLists.txt
@@ -99,6 +99,17 @@ elseif(CLR_CMAKE_HOST_UNIX)
mscordaccore
)
+ # Before llvm 16, lld was setting `--undefined-version` by default. The default was
+ # flipped to `--no-undefined-version` in lld 16, so we will explicitly set it to
+ # `--undefined-version` for our use-case.
+ include(CheckLinkerFlag OPTIONAL)
+ if(COMMAND check_linker_flag)
+ check_linker_flag(CXX -Wl,--undefined-version LINKER_SUPPORTS_UNDEFINED_VERSION)
+ if (LINKER_SUPPORTS_UNDEFINED_VERSION)
+ add_linker_flag(-Wl,--undefined-version)
+ endif(LINKER_SUPPORTS_UNDEFINED_VERSION)
+ endif(COMMAND check_linker_flag)
+
# COREDBI_LIBRARIES is mentioned twice because ld is one pass linker and will not find symbols
# if they are defined after they are used. Having all libs twice makes sure that ld will actually
# find all symbols.
diff --git a/src/coreclr/dlls/mscordbi/mscordbi.src b/src/coreclr/dlls/mscordbi/mscordbi.src
index 04f7c172b9bd35..ec3aa1303fb232 100644
--- a/src/coreclr/dlls/mscordbi/mscordbi.src
+++ b/src/coreclr/dlls/mscordbi/mscordbi.src
@@ -20,6 +20,7 @@ EXPORTS
CoreCLRCreateCordbObject private
CoreCLRCreateCordbObjectEx private
+ CoreCLRCreateCordbObject3 private
#if defined(FEATURE_DBGIPC_TRANSPORT_DI)
DllGetClassObject private
diff --git a/src/coreclr/dlls/mscordbi/mscordbi_unixexports.src b/src/coreclr/dlls/mscordbi/mscordbi_unixexports.src
index 1ff9d997a445c1..78aaf25f69d58e 100644
--- a/src/coreclr/dlls/mscordbi/mscordbi_unixexports.src
+++ b/src/coreclr/dlls/mscordbi/mscordbi_unixexports.src
@@ -8,6 +8,7 @@ DllGetClassObject
; CoreClr API
CoreCLRCreateCordbObject
CoreCLRCreateCordbObjectEx
+CoreCLRCreateCordbObject3
; Out-of-proc creation path from the shim - ICLRDebugging
OpenVirtualProcessImpl
diff --git a/src/coreclr/dlls/mscoree/CMakeLists.txt b/src/coreclr/dlls/mscoree/CMakeLists.txt
index 4571b196aaa942..3979c42245295d 100644
--- a/src/coreclr/dlls/mscoree/CMakeLists.txt
+++ b/src/coreclr/dlls/mscoree/CMakeLists.txt
@@ -11,7 +11,7 @@ set(CLR_SOURCES
if(CLR_CMAKE_TARGET_WIN32)
list(APPEND CLR_SOURCES
- delayloadhook.cpp
+ ${CLR_SRC_NATIVE_DIR}/common/delayloadhook_windows.cpp
Native.rc
)
diff --git a/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt b/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt
index cfc08adbc43406..4d88855ca6a2f7 100644
--- a/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt
+++ b/src/coreclr/dlls/mscoree/coreclr/CMakeLists.txt
@@ -167,10 +167,15 @@ if(FEATURE_MERGE_JIT_AND_ENGINE)
set(CLRJIT_STATIC clrjit_static)
endif(FEATURE_MERGE_JIT_AND_ENGINE)
+if (CLR_CMAKE_TARGET_OSX OR CLR_CMAKE_TARGET_MACCATALYST)
+ include(CMakeFindFrameworks)
+ find_library(FOUNDATION Foundation REQUIRED)
+endif()
+
target_sources(coreclr PUBLIC $)
-target_link_libraries(coreclr PUBLIC ${CORECLR_LIBRARIES} ${CLRJIT_STATIC} cee_wks)
+target_link_libraries(coreclr PUBLIC ${CORECLR_LIBRARIES} ${CLRJIT_STATIC} cee_wks ${FOUNDATION})
target_sources(coreclr_static PUBLIC $)
-target_link_libraries(coreclr_static PUBLIC ${CORECLR_LIBRARIES} clrjit_static cee_wks_mergeable)
+target_link_libraries(coreclr_static PUBLIC ${CORECLR_LIBRARIES} clrjit_static cee_wks_mergeable ${FOUNDATION})
target_compile_definitions(coreclr_static PUBLIC CORECLR_EMBEDDED)
if(CLR_CMAKE_TARGET_WIN32)
diff --git a/src/coreclr/dlls/mscoree/unixinterface.cpp b/src/coreclr/dlls/mscoree/unixinterface.cpp
index c6ce99302467ff..7a5524a939c6de 100644
--- a/src/coreclr/dlls/mscoree/unixinterface.cpp
+++ b/src/coreclr/dlls/mscoree/unixinterface.cpp
@@ -22,6 +22,25 @@
#define ASSERTE_ALL_BUILDS(expr) _ASSERTE_ALL_BUILDS(__FILE__, (expr))
+#ifdef TARGET_UNIX
+#define NO_HOSTING_API_RETURN_ADDRESS ((void*)ULONG_PTR_MAX)
+void* g_hostingApiReturnAddress = NO_HOSTING_API_RETURN_ADDRESS;
+
+class HostingApiFrameHolder
+{
+public:
+ HostingApiFrameHolder(void* returnAddress)
+ {
+ g_hostingApiReturnAddress = returnAddress;
+ }
+
+ ~HostingApiFrameHolder()
+ {
+ g_hostingApiReturnAddress = NO_HOSTING_API_RETURN_ADDRESS;
+ }
+};
+#endif // TARGET_UNIX
+
// Holder for const wide strings
typedef NewArrayHolder ConstWStringHolder;
@@ -179,6 +198,7 @@ extern "C" int coreclr_create_delegate(void*, unsigned int, const char*, const c
// HRESULT indicating status of the operation. S_OK if the assembly was successfully executed
//
extern "C"
+NOINLINE
DLLEXPORT
int coreclr_initialize(
const char* exePath,
@@ -197,6 +217,10 @@ int coreclr_initialize(
bool hostPolicyEmbedded = false;
PInvokeOverrideFn* pinvokeOverride = nullptr;
+#ifdef TARGET_UNIX
+ HostingApiFrameHolder apiFrameHolder(_ReturnAddress());
+#endif
+
ConvertConfigPropertiesToUnicode(
propertyKeys,
propertyValues,
@@ -421,6 +445,7 @@ int coreclr_create_delegate(
// HRESULT indicating status of the operation. S_OK if the assembly was successfully executed
//
extern "C"
+NOINLINE
DLLEXPORT
int coreclr_execute_assembly(
void* hostHandle,
@@ -436,6 +461,10 @@ int coreclr_execute_assembly(
}
*exitCode = -1;
+#ifdef TARGET_UNIX
+ HostingApiFrameHolder apiFrameHolder(_ReturnAddress());
+#endif
+
ICLRRuntimeHost4* host = reinterpret_cast(hostHandle);
ConstWStringArrayHolder argvW;
diff --git a/src/coreclr/dlls/mscorrc/mscorrc.rc b/src/coreclr/dlls/mscorrc/mscorrc.rc
index 161f6e1e6c8c4c..7f83466b055e44 100644
--- a/src/coreclr/dlls/mscorrc/mscorrc.rc
+++ b/src/coreclr/dlls/mscorrc/mscorrc.rc
@@ -496,6 +496,7 @@ BEGIN
IDS_EE_ARRAY_DIMENSIONS_EXCEEDED "Array dimensions exceeded supported range."
+ IDS_EE_OUT_OF_SYNCBLOCKS "Internal limitation: attempt to create more than 2^26 SyncBlocks."
IDS_EE_THREAD_NOTSTARTED "Thread has not been started."
IDS_EE_STRING_TOOLONG "Marshaler restriction: Excessively long string."
diff --git a/src/coreclr/dlls/mscorrc/resource.h b/src/coreclr/dlls/mscorrc/resource.h
index 0e39c27f0c88cf..7acb390b640a60 100644
--- a/src/coreclr/dlls/mscorrc/resource.h
+++ b/src/coreclr/dlls/mscorrc/resource.h
@@ -369,6 +369,7 @@
#define IDS_EE_COMIMPORT_METHOD_NO_INTERFACE 0x1aab
#define IDS_EE_OUT_OF_MEMORY_WITHIN_RANGE 0x1aac
#define IDS_EE_ARRAY_DIMENSIONS_EXCEEDED 0x1aad
+#define IDS_EE_OUT_OF_SYNCBLOCKS 0x1aae
#define IDS_CLASSLOAD_MI_CANNOT_OVERRIDE 0x1ab3
#define IDS_CLASSLOAD_COLLECTIBLEFIXEDVTATTR 0x1ab6
diff --git a/src/coreclr/gc/env/gcenv.base.h b/src/coreclr/gc/env/gcenv.base.h
index 5cb2f4178ce0c7..c5e516ed15c82d 100644
--- a/src/coreclr/gc/env/gcenv.base.h
+++ b/src/coreclr/gc/env/gcenv.base.h
@@ -43,6 +43,10 @@
#define SSIZE_T_MAX ((ptrdiff_t)(SIZE_T_MAX / 2))
#endif
+#ifndef __has_builtin
+#define __has_builtin(x) 0
+#endif
+
#ifndef _INC_WINDOWS
// -----------------------------------------------------------------------------------------------------------
//
@@ -191,26 +195,15 @@ typedef DWORD (WINAPI *PTHREAD_START_ROUTINE)(void* lpThreadParameter);
#endif
#else // _MSC_VER
-#ifdef __llvm__
-#define HAS_IA32_PAUSE __has_builtin(__builtin_ia32_pause)
-#define HAS_IA32_MFENCE __has_builtin(__builtin_ia32_mfence)
-#else
-#define HAS_IA32_PAUSE 0
-#define HAS_IA32_MFENCE 0
-#endif
-
-// Only clang defines __has_builtin, so we first test for a GCC define
-// before using __has_builtin.
-
#if defined(__i386__) || defined(__x86_64__)
-#if (__GNUC__ > 4 && __GNUC_MINOR > 7) || HAS_IA32_PAUSE
+#if __has_builtin(__builtin_ia32_pause)
// clang added this intrinsic in 3.8
// gcc added this intrinsic by 4.7.1
#define YieldProcessor __builtin_ia32_pause
#endif // __has_builtin(__builtin_ia32_pause)
-#if defined(__GNUC__) || HAS_IA32_MFENCE
+#if __has_builtin(__builtin_ia32_mfence)
// clang has had this intrinsic since at least 3.0
// gcc has had this intrinsic since forever
#define MemoryBarrier __builtin_ia32_mfence
diff --git a/src/coreclr/gc/env/gcenv.ee.h b/src/coreclr/gc/env/gcenv.ee.h
index 7ecbfdda4f21ad..472679736a538d 100644
--- a/src/coreclr/gc/env/gcenv.ee.h
+++ b/src/coreclr/gc/env/gcenv.ee.h
@@ -92,6 +92,8 @@ class GCToEEInterface
static void UpdateGCEventStatus(int publicLevel, int publicKeywords, int privateLevel, int privateKeywords);
static void LogStressMsg(unsigned level, unsigned facility, const StressLogMsg &msg);
static uint32_t GetCurrentProcessCpuCount();
+
+ static void DiagAddNewRegion(int generation, uint8_t* rangeStart, uint8_t* rangeEnd, uint8_t* rangeEndReserved);
};
#endif // __GCENV_EE_H__
diff --git a/src/coreclr/gc/gc.cpp b/src/coreclr/gc/gc.cpp
index 47ff77df3f49f8..df9a96b8dc0099 100644
--- a/src/coreclr/gc/gc.cpp
+++ b/src/coreclr/gc/gc.cpp
@@ -86,6 +86,7 @@ BOOL bgc_heap_walk_for_etw_p = FALSE;
#define LOH_PIN_DECAY 10
uint32_t yp_spin_count_unit = 0;
+uint32_t original_spin_count_unit = 0;
size_t loh_size_threshold = LARGE_OBJECT_SIZE;
#ifdef GC_CONFIG_DRIVEN
@@ -2243,6 +2244,7 @@ double gc_heap::short_plugs_pad_ratio = 0;
#endif //SHORT_PLUGS
int gc_heap::generation_skip_ratio_threshold = 0;
+int gc_heap::conserve_mem_setting = 0;
uint64_t gc_heap::suspended_start_time = 0;
uint64_t gc_heap::end_gc_time = 0;
@@ -2724,7 +2726,7 @@ alloc_list gc_heap::poh_alloc_list [NUM_POH_ALIST-1];
#ifdef DOUBLY_LINKED_FL
// size we removed with no undo; only for recording purpose
size_t gc_heap::gen2_removed_no_undo = 0;
-size_t gc_heap::saved_pinned_plug_index = 0;
+size_t gc_heap::saved_pinned_plug_index = INVALID_SAVED_PINNED_PLUG_INDEX;
#endif //DOUBLY_LINKED_FL
#ifdef FEATURE_EVENT_TRACE
@@ -3255,6 +3257,12 @@ gc_heap::dt_low_card_table_efficiency_p (gc_tuning_point tp)
return ret;
}
+inline BOOL
+gc_heap::dt_high_memory_load_p()
+{
+ return ((settings.entry_memory_load >= high_memory_load_th) || g_low_memory_status);
+}
+
inline BOOL
in_range_for_segment(uint8_t* add, heap_segment* seg)
{
@@ -5807,8 +5815,6 @@ heap_segment* gc_heap::get_segment_for_uoh (int gen_number, size_t size
gc_etw_segment_pinned_object_heap :
gc_etw_segment_large_object_heap);
- GCToEEInterface::DiagUpdateGenerationBounds();
-
#ifndef USE_REGIONS
#ifdef MULTIPLE_HEAPS
hp->thread_uoh_segment (gen_number, res);
@@ -5816,6 +5822,12 @@ heap_segment* gc_heap::get_segment_for_uoh (int gen_number, size_t size
thread_uoh_segment (gen_number, res);
#endif //MULTIPLE_HEAPS
#endif //!USE_REGIONS
+ GCToEEInterface::DiagAddNewRegion(
+ gen_number,
+ heap_segment_mem (res),
+ heap_segment_allocated (res),
+ heap_segment_reserved (res)
+ );
}
return res;
@@ -10913,7 +10925,7 @@ void gc_heap::clear_region_info (heap_segment* region)
settings.gc_index, current_bgc_state,
seg_deleted);
- if (settings.entry_memory_load >= high_memory_load_th || g_low_memory_status)
+ if (dt_high_memory_load_p())
{
decommit_mark_array_by_seg (region);
}
@@ -11372,7 +11384,7 @@ size_t gc_heap::decommit_heap_segment_pages_worker (heap_segment* seg,
uint8_t* new_committed)
{
#ifdef USE_REGIONS
- if (settings.entry_memory_load < high_memory_load_th && !g_low_memory_status)
+ if (!dt_high_memory_load_p())
{
return 0;
}
@@ -11407,7 +11419,7 @@ size_t gc_heap::decommit_heap_segment_pages_worker (heap_segment* seg,
void gc_heap::decommit_heap_segment (heap_segment* seg)
{
#ifdef USE_REGIONS
- if (settings.entry_memory_load < high_memory_load_th && !g_low_memory_status)
+ if (!dt_high_memory_load_p())
{
return;
}
@@ -12357,9 +12369,9 @@ void gc_heap::make_generation (int gen_num, heap_segment* seg, uint8_t* start)
#endif //DOUBLY_LINKED_FL
#ifdef FREE_USAGE_STATS
- memset (gen->gen_free_spaces, 0, sizeof (gen.gen_free_spaces));
- memset (gen->gen_current_pinned_free_spaces, 0, sizeof (gen.gen_current_pinned_free_spaces));
- memset (gen->gen_plugs, 0, sizeof (gen.gen_plugs));
+ memset (gen->gen_free_spaces, 0, sizeof (gen->gen_free_spaces));
+ memset (gen->gen_current_pinned_free_spaces, 0, sizeof (gen->gen_current_pinned_free_spaces));
+ memset (gen->gen_plugs, 0, sizeof (gen->gen_plugs));
#endif //FREE_USAGE_STATS
}
@@ -12717,6 +12729,8 @@ HRESULT gc_heap::initialize_gc (size_t soh_segment_size,
yp_spin_count_unit = 32 * g_num_processors;
#endif //MULTIPLE_HEAPS
+ original_spin_count_unit = yp_spin_count_unit;
+
#if defined(__linux__)
GCToEEInterface::UpdateGCEventStatus(static_cast(GCEventStatus::GetEnabledLevel(GCEventProvider_Default)),
static_cast(GCEventStatus::GetEnabledKeywords(GCEventProvider_Default)),
@@ -12954,6 +12968,14 @@ gc_heap::init_semi_shared()
#endif //FEATURE_LOH_COMPACTION
#endif //FEATURE_EVENT_TRACE
+ conserve_mem_setting = (int)GCConfig::GetGCConserveMem();
+ if (conserve_mem_setting < 0)
+ conserve_mem_setting = 0;
+ if (conserve_mem_setting > 9)
+ conserve_mem_setting = 9;
+
+ dprintf (1, ("conserve_mem_setting = %d", conserve_mem_setting));
+
ret = 1;
cleanup:
@@ -13884,7 +13906,20 @@ void gc_heap::adjust_limit (uint8_t* start, size_t limit_size, generation* gen)
uint8_t* old_loc = generation_last_free_list_allocated (gen);
// check if old_loc happens to be in a saved plug_and_gap with a pinned plug after it
- uint8_t* saved_plug_and_gap = pinned_plug (pinned_plug_of (saved_pinned_plug_index)) - sizeof(plug_and_gap);
+ uint8_t* saved_plug_and_gap = nullptr;
+ if (saved_pinned_plug_index != INVALID_SAVED_PINNED_PLUG_INDEX)
+ {
+ saved_plug_and_gap = pinned_plug (pinned_plug_of (saved_pinned_plug_index)) - sizeof(plug_and_gap);
+
+ dprintf (3333, ("[h%d] sppi: %Id mtos: %Id old_loc: %Ix pp: %Ix(%Id) offs: %Id",
+ heap_number,
+ saved_pinned_plug_index,
+ mark_stack_tos,
+ old_loc,
+ pinned_plug (pinned_plug_of (saved_pinned_plug_index)),
+ pinned_len (pinned_plug_of (saved_pinned_plug_index)),
+ old_loc - saved_plug_and_gap));
+ }
size_t offset = old_loc - saved_plug_and_gap;
if (offset < sizeof(gap_reloc_pair))
{
@@ -15904,11 +15939,13 @@ BOOL gc_heap::soh_try_fit (int gen_number,
fix_youngest_allocation_area();
heap_segment* next_seg = heap_segment_next (ephemeral_heap_segment);
+ bool new_seg = false;
if (!next_seg)
{
assert (ephemeral_heap_segment == generation_tail_region (generation_of (gen_number)));
next_seg = get_new_region (gen_number);
+ new_seg = true;
}
if (next_seg)
@@ -15916,6 +15953,15 @@ BOOL gc_heap::soh_try_fit (int gen_number,
dprintf (REGIONS_LOG, ("eph seg %Ix -> next %Ix",
heap_segment_mem (ephemeral_heap_segment), heap_segment_mem (next_seg)));
ephemeral_heap_segment = next_seg;
+ if (new_seg)
+ {
+ GCToEEInterface::DiagAddNewRegion(
+ heap_segment_gen_num (next_seg),
+ heap_segment_mem (next_seg),
+ heap_segment_allocated (next_seg),
+ heap_segment_reserved (next_seg)
+ );
+ }
}
else
{
@@ -17462,7 +17508,6 @@ void gc_heap::init_free_and_plug()
#else
memset (gen->gen_free_spaces, 0, sizeof (gen->gen_free_spaces));
#endif //DOUBLY_LINKED_FL
- memset (gen->gen_plugs_allocated_in_free, 0, sizeof (gen->gen_plugs_allocated_in_free));
memset (gen->gen_plugs, 0, sizeof (gen->gen_plugs));
memset (gen->gen_current_pinned_free_spaces, 0, sizeof (gen->gen_current_pinned_free_spaces));
}
@@ -17480,7 +17525,7 @@ void gc_heap::init_free_and_plug()
void gc_heap::print_free_and_plug (const char* msg)
{
-#if defined(FREE_USAGE_STATS) && defined(SIMPLE_DPRINTF)
+#ifdef FREE_USAGE_STATS
int older_gen = ((settings.condemned_generation == max_generation) ? max_generation : (settings.condemned_generation + 1));
for (int i = 0; i <= older_gen; i++)
{
@@ -17501,7 +17546,7 @@ void gc_heap::print_free_and_plug (const char* msg)
}
#else
UNREFERENCED_PARAMETER(msg);
-#endif //FREE_USAGE_STATS && SIMPLE_DPRINTF
+#endif //FREE_USAGE_STATS
}
// replace with allocator::first_suitable_bucket
@@ -17573,8 +17618,8 @@ void gc_heap::add_gen_free (int gen_number, size_t free_size)
(gen->gen_free_spaces[i])++;
if (gen_number == max_generation)
{
- dprintf (3, ("Mb b%d: f+ %Id (%Id->%Id)",
- i, free_size, (gen->gen_free_spaces[i]).num_items, (gen->gen_free_spaces[i]).total_size));
+ dprintf (3, ("Mb b%d: f+ %Id (%Id)",
+ i, free_size, gen->gen_free_spaces[i]));
}
#else
UNREFERENCED_PARAMETER(gen_number);
@@ -17596,8 +17641,8 @@ void gc_heap::remove_gen_free (int gen_number, size_t free_size)
(gen->gen_free_spaces[i])--;
if (gen_number == max_generation)
{
- dprintf (3, ("Mb b%d: f- %Id (%Id->%Id)",
- i, free_size, (gen->gen_free_spaces[i]).num_items, (gen->gen_free_spaces[i]).total_size));
+ dprintf (3, ("Mb b%d: f- %Id (%Id)",
+ i, free_size, gen->gen_free_spaces[i]));
}
#else
UNREFERENCED_PARAMETER(gen_number);
@@ -18794,6 +18839,37 @@ int gc_heap::joined_generation_to_condemn (BOOL should_evaluate_elevation,
}
}
+ if ((conserve_mem_setting != 0) && (n == max_generation))
+ {
+ float frag_limit = 1.0f - conserve_mem_setting / 10.0f;
+
+ size_t loh_size = get_total_gen_size (loh_generation);
+ size_t gen2_size = get_total_gen_size (max_generation);
+ float loh_frag_ratio = 0.0f;
+ float combined_frag_ratio = 0.0f;
+ if (loh_size != 0)
+ {
+ size_t loh_frag = get_total_gen_fragmentation (loh_generation);
+ size_t gen2_frag = get_total_gen_fragmentation (max_generation);
+ loh_frag_ratio = (float)loh_frag / (float)loh_size;
+ combined_frag_ratio = (float)(gen2_frag + loh_frag) / (float)(gen2_size + loh_size);
+ }
+ if (combined_frag_ratio > frag_limit)
+ {
+ dprintf (GTC_LOG, ("combined frag: %f > limit %f, loh frag: %f", combined_frag_ratio, frag_limit, loh_frag_ratio));
+ gc_data_global.gen_to_condemn_reasons.set_condition (gen_max_high_frag_p);
+
+ n = max_generation;
+ *blocking_collection_p = TRUE;
+ if (loh_frag_ratio > frag_limit)
+ {
+ settings.loh_compaction = TRUE;
+
+ dprintf (GTC_LOG, ("compacting LOH due to GCConserveMem setting"));
+ }
+ }
+ }
+
#ifdef BGC_SERVO_TUNING
if (bgc_tuning::should_trigger_ngc2())
{
@@ -19912,6 +19988,8 @@ BOOL gc_heap::should_proceed_with_gc()
// The no_gc mode was already in progress yet we triggered another GC,
// this effectively exits the no_gc mode.
restore_data_for_no_gc();
+
+ memset (¤t_no_gc_region_info, 0, sizeof (current_no_gc_region_info));
}
else
return should_proceed_for_no_gc();
@@ -20996,9 +21074,22 @@ bool gc_heap::extend_soh_for_no_gc()
}
region = heap_segment_next (region);
- if ((region == nullptr) && !(region = get_new_region (0)))
+ if (region == nullptr)
{
- break;
+ region = get_new_region (0);
+ if (region == nullptr)
+ {
+ break;
+ }
+ else
+ {
+ GCToEEInterface::DiagAddNewRegion(
+ 0,
+ heap_segment_mem (region),
+ heap_segment_allocated (region),
+ heap_segment_reserved (region)
+ );
+ }
}
}
else
@@ -23939,6 +24030,21 @@ size_t gc_heap::get_total_gen_estimated_reclaim (int gen_number)
return total_estimated_reclaim;
}
+size_t gc_heap::get_total_gen_size (int gen_number)
+{
+#ifdef MULTIPLE_HEAPS
+ size_t size = 0;
+ for (int hn = 0; hn < gc_heap::n_heaps; hn++)
+ {
+ gc_heap* hp = gc_heap::g_heaps[hn];
+ size += hp->generation_size (gen_number);
+ }
+#else
+ size_t size = generation_size (gen_number);
+#endif //MULTIPLE_HEAPS
+ return size;
+}
+
size_t gc_heap::committed_size()
{
size_t total_committed = 0;
@@ -26100,7 +26206,7 @@ BOOL gc_heap::plan_loh()
void gc_heap::compact_loh()
{
- assert (loh_compaction_requested() || heap_hard_limit);
+ assert (loh_compaction_requested() || heap_hard_limit || conserve_mem_setting);
#ifdef FEATURE_EVENT_TRACE
uint64_t start_time, end_time;
@@ -27431,7 +27537,7 @@ void gc_heap::plan_phase (int condemned_gen_number)
#ifdef DOUBLY_LINKED_FL
gen2_removed_no_undo = 0;
- saved_pinned_plug_index = 0;
+ saved_pinned_plug_index = INVALID_SAVED_PINNED_PLUG_INDEX;
#endif //DOUBLY_LINKED_FL
while (1)
@@ -33021,8 +33127,6 @@ void gc_heap::background_mark_phase ()
#endif //MULTIPLE_HEAPS
}
- gen0_bricks_cleared = FALSE;
-
dprintf (2, ("end of bgc mark: loh: %d, poh: %d, soh: %d",
generation_size (loh_generation),
generation_size (poh_generation),
@@ -37881,6 +37985,19 @@ size_t gc_heap::desired_new_allocation (dynamic_data* dd,
cst = min (1.0f, float (out) / float (dd_begin_data_size (dd)));
f = surv_to_growth (cst, limit, max_limit);
+ if (conserve_mem_setting != 0)
+ {
+ // if this is set, compute a growth factor based on it.
+ // example: a setting of 6 means we have a goal of 60% live data
+ // this means we allow 40% fragmentation
+ // to keep heap size stable, we only use half of that (20%) for new allocation
+ // f is (live data + new allocation)/(live data), so would be (60% + 20%) / 60% or 1.33
+ float f_conserve = ((10.0f / conserve_mem_setting) - 1) * 0.5f + 1.0f;
+
+ // use the smaller one
+ f = min (f, f_conserve);
+ }
+
size_t max_growth_size = (size_t)(max_size / f);
if (current_size >= max_growth_size)
{
@@ -37904,6 +38021,7 @@ size_t gc_heap::desired_new_allocation (dynamic_data* dd,
#ifdef BGC_SERVO_TUNING
!bgc_tuning::fl_tuning_triggered &&
#endif //BGC_SERVO_TUNING
+ (conserve_mem_setting == 0) &&
(dd_fragmentation (dd) > ((size_t)((f-1)*current_size))))
{
//reducing allocation in case of fragmentation
@@ -38163,7 +38281,8 @@ size_t gc_heap::trim_youngest_desired (uint32_t memory_load,
}
else
{
- return max (mem_one_percent, total_min_allocation);
+ size_t total_max_allocation = max (mem_one_percent, total_min_allocation);
+ return min (total_new_allocation, total_max_allocation);
}
}
@@ -38395,7 +38514,7 @@ void gc_heap::decommit_ephemeral_segment_pages()
dynamic_data* dd0 = dynamic_data_of (0);
- ptrdiff_t desired_allocation = estimate_gen_growth (soh_gen0) +
+ ptrdiff_t desired_allocation = dd_new_allocation (dd0) +
estimate_gen_growth (soh_gen1) +
loh_size_threshold;
@@ -39326,7 +39445,7 @@ void reset_memory (uint8_t* o, size_t sizeo)
size_t size = align_lower_page ((size_t)o + sizeo - size_to_skip - plug_skew) - page_start;
// Note we need to compensate for an OS bug here. This bug would cause the MEM_RESET to fail
// on write watched memory.
- if (reset_mm_p && gc_heap::g_low_memory_status)
+ if (reset_mm_p && gc_heap::dt_high_memory_load_p())
{
#ifdef MULTIPLE_HEAPS
bool unlock_p = true;
@@ -42923,11 +43042,11 @@ size_t GCHeap::GetPromotedBytes(int heap_index)
void GCHeap::SetYieldProcessorScalingFactor (float scalingFactor)
{
assert (yp_spin_count_unit != 0);
- int saved_yp_spin_count_unit = yp_spin_count_unit;
- yp_spin_count_unit = (int)((float)yp_spin_count_unit * scalingFactor / (float)9);
+ uint32_t saved_yp_spin_count_unit = yp_spin_count_unit;
+ yp_spin_count_unit = (uint32_t)((float)original_spin_count_unit * scalingFactor / (float)9);
- // It's very suspicious if it becomes 0
- if (yp_spin_count_unit == 0)
+ // It's very suspicious if it becomes 0 and also, we don't want to spin too much.
+ if ((yp_spin_count_unit == 0) || (yp_spin_count_unit > 32768))
{
yp_spin_count_unit = saved_yp_spin_count_unit;
}
@@ -42941,6 +43060,76 @@ unsigned int GCHeap::WhichGeneration (Object* object)
return g;
}
+unsigned int GCHeap::GetGenerationWithRange (Object* object, uint8_t** ppStart, uint8_t** ppAllocated, uint8_t** ppReserved)
+{
+ int generation = -1;
+ heap_segment * hs = gc_heap::find_segment ((uint8_t*)object, FALSE);
+#ifdef USE_REGIONS
+ generation = heap_segment_gen_num (hs);
+ if (generation == max_generation)
+ {
+ if (heap_segment_loh_p (hs))
+ {
+ generation = loh_generation;
+ }
+ else if (heap_segment_poh_p (hs))
+ {
+ generation = poh_generation;
+ }
+ }
+
+ *ppStart = heap_segment_mem (hs);
+ *ppAllocated = heap_segment_allocated (hs);
+ *ppReserved = heap_segment_reserved (hs);
+#else
+#ifdef MULTIPLE_HEAPS
+ gc_heap* hp = heap_segment_heap (hs);
+#else
+ gc_heap* hp = __this;
+#endif //MULTIPLE_HEAPS
+ if (hs == hp->ephemeral_heap_segment)
+ {
+ uint8_t* reserved = heap_segment_reserved (hs);
+ uint8_t* end = heap_segment_allocated(hs);
+ for (int gen = 0; gen < max_generation; gen++)
+ {
+ uint8_t* start = generation_allocation_start (hp->generation_of (gen));
+ if ((uint8_t*)object >= start)
+ {
+ generation = gen;
+ *ppStart = start;
+ *ppAllocated = end;
+ *ppReserved = reserved;
+ break;
+ }
+ end = reserved = start;
+ }
+ if (generation == -1)
+ {
+ generation = max_generation;
+ *ppStart = heap_segment_mem (hs);
+ *ppAllocated = *ppReserved = generation_allocation_start (hp->generation_of (max_generation - 1));
+ }
+ }
+ else
+ {
+ generation = max_generation;
+ if (heap_segment_loh_p (hs))
+ {
+ generation = loh_generation;
+ }
+ else if (heap_segment_poh_p (hs))
+ {
+ generation = poh_generation;
+ }
+ *ppStart = heap_segment_mem (hs);
+ *ppAllocated = heap_segment_allocated (hs);
+ *ppReserved = heap_segment_reserved (hs);
+ }
+#endif //USE_REGIONS
+ return (unsigned int)generation;
+}
+
bool GCHeap::IsEphemeral (Object* object)
{
uint8_t* o = (uint8_t*)object;
@@ -44170,6 +44359,8 @@ bool gc_heap::is_pm_ratio_exceeded()
void gc_heap::update_recorded_gen_data (last_recorded_gc_info* gc_info)
{
+ memset (gc_info->gen_info, 0, sizeof (gc_info->gen_info));
+
#ifdef MULTIPLE_HEAPS
for (int i = 0; i < gc_heap::n_heaps; i++)
{
@@ -44854,6 +45045,11 @@ void GCHeap::GetMemoryInfo(uint64_t* highMemLoadThresholdBytes,
#endif //_DEBUG
}
+int64_t GCHeap::GetTotalPauseDuration()
+{
+ return (int64_t)(gc_heap::total_suspended_time * 10);
+}
+
uint32_t GCHeap::GetMemoryLoad()
{
uint32_t memory_load = 0;
diff --git a/src/coreclr/gc/gcconfig.h b/src/coreclr/gc/gcconfig.h
index 8a9112ec480849..886ea17743880d 100644
--- a/src/coreclr/gc/gcconfig.h
+++ b/src/coreclr/gc/gcconfig.h
@@ -133,6 +133,7 @@ class GCConfigStringHolder
INT_CONFIG (GCHeapHardLimitLOHPercent, "GCHeapHardLimitLOHPercent", "System.GC.HeapHardLimitLOHPercent", 0, "Specifies the GC heap LOH usage as a percentage of the total memory") \
INT_CONFIG (GCHeapHardLimitPOHPercent, "GCHeapHardLimitPOHPercent", "System.GC.HeapHardLimitPOHPercent", 0, "Specifies the GC heap POH usage as a percentage of the total memory") \
INT_CONFIG (GCEnabledInstructionSets, "GCEnabledInstructionSets", NULL, -1, "Specifies whether GC can use AVX2 or AVX512F - 0 for neither, 1 for AVX2, 3 for AVX512F")\
+ INT_CONFIG (GCConserveMem, "GCConserveMemory", NULL, 0, "Specifies how hard GC should try to conserve memory - values 0-9") \
// This class is responsible for retreiving configuration information
// for how the GC should operate.
diff --git a/src/coreclr/gc/gcenv.ee.standalone.inl b/src/coreclr/gc/gcenv.ee.standalone.inl
index c7e4dc4c98b2f0..c2a023fa5c5eb1 100644
--- a/src/coreclr/gc/gcenv.ee.standalone.inl
+++ b/src/coreclr/gc/gcenv.ee.standalone.inl
@@ -306,4 +306,9 @@ inline uint32_t GCToEEInterface::GetCurrentProcessCpuCount()
return g_theGCToCLR->GetCurrentProcessCpuCount();
}
+inline void GCToEEInterface::DiagAddNewRegion(int generation, uint8_t* rangeStart, uint8_t* rangeEnd, uint8_t* rangeEndReserved)
+{
+ g_theGCToCLR->DiagAddNewRegion(generation, rangeStart, rangeEnd, rangeEndReserved);
+}
+
#endif // __GCTOENV_EE_STANDALONE_INL__
diff --git a/src/coreclr/gc/gcimpl.h b/src/coreclr/gc/gcimpl.h
index 2c21ceada4fe00..1d470a0c8ca124 100644
--- a/src/coreclr/gc/gcimpl.h
+++ b/src/coreclr/gc/gcimpl.h
@@ -180,7 +180,9 @@ class GCHeap : public IGCHeapInternal
bool* isConcurrent,
uint64_t* genInfoRaw,
uint64_t* pauseInfoRaw,
- int kind);;
+ int kind);
+
+ int64_t GetTotalPauseDuration();
uint32_t GetMemoryLoad();
@@ -309,6 +311,7 @@ class GCHeap : public IGCHeapInternal
virtual void DiagGetGCSettings(EtwGCSettingsInfo* etw_settings);
+ virtual unsigned int GetGenerationWithRange(Object* object, uint8_t** ppStart, uint8_t** ppAllocated, uint8_t** ppReserved);
public:
Object * NextObj (Object * object);
diff --git a/src/coreclr/gc/gcinterface.ee.h b/src/coreclr/gc/gcinterface.ee.h
index 6525cc653ef635..e2019c8a1adbe6 100644
--- a/src/coreclr/gc/gcinterface.ee.h
+++ b/src/coreclr/gc/gcinterface.ee.h
@@ -443,6 +443,9 @@ class IGCToCLR {
virtual
uint32_t GetCurrentProcessCpuCount() = 0;
+
+ virtual
+ void DiagAddNewRegion(int generation, uint8_t* rangeStart, uint8_t* rangeEnd, uint8_t* rangeEndReserved) = 0;
};
#endif // _GCINTERFACE_EE_H_
diff --git a/src/coreclr/gc/gcinterface.h b/src/coreclr/gc/gcinterface.h
index 920c321da8ebec..03c56d49dbb531 100644
--- a/src/coreclr/gc/gcinterface.h
+++ b/src/coreclr/gc/gcinterface.h
@@ -6,7 +6,7 @@
// The major version of the GC/EE interface. Breaking changes to this interface
// require bumps in the major version number.
-#define GC_INTERFACE_MAJOR_VERSION 4
+#define GC_INTERFACE_MAJOR_VERSION 5
// The minor version of the GC/EE interface. Non-breaking changes are required
// to bump the minor version number. GCs and EEs with minor version number
@@ -921,8 +921,13 @@ class IGCHeap {
// Enables or disables the given keyword or level on the private event provider.
virtual void ControlPrivateEvents(GCEventKeyword keyword, GCEventLevel level) = 0;
+ virtual unsigned int GetGenerationWithRange(Object* object, uint8_t** ppStart, uint8_t** ppAllocated, uint8_t** ppReserved) = 0;
+
IGCHeap() {}
virtual ~IGCHeap() {}
+
+ // Get the total paused duration
+ virtual int64_t GetTotalPauseDuration() = 0;
};
#ifdef WRITE_BARRIER_CHECK
diff --git a/src/coreclr/gc/gcpriv.h b/src/coreclr/gc/gcpriv.h
index cda8e68e0a08f8..a04e24c112a48c 100644
--- a/src/coreclr/gc/gcpriv.h
+++ b/src/coreclr/gc/gcpriv.h
@@ -3187,6 +3187,8 @@ class gc_heap
PER_HEAP_ISOLATED
size_t get_total_gen_estimated_reclaim (int gen_number);
PER_HEAP_ISOLATED
+ size_t get_total_gen_size (int gen_number);
+ PER_HEAP_ISOLATED
void get_memory_info (uint32_t* memory_load,
uint64_t* available_physical=NULL,
uint64_t* available_page_file=NULL);
@@ -4494,6 +4496,8 @@ class gc_heap
PER_HEAP
size_t gen2_removed_no_undo;
+#define INVALID_SAVED_PINNED_PLUG_INDEX ((size_t)~0)
+
PER_HEAP
size_t saved_pinned_plug_index;
#endif //DOUBLY_LINKED_FL
@@ -4663,6 +4667,9 @@ class gc_heap
PER_HEAP_ISOLATED
int generation_skip_ratio_threshold;
+ PER_HEAP_ISOLATED
+ int conserve_mem_setting;
+
PER_HEAP
BOOL gen0_bricks_cleared;
PER_HEAP
@@ -4962,6 +4969,9 @@ class gc_heap
PER_HEAP_ISOLATED
size_t exponential_smoothing (int gen, size_t collection_count, size_t desired_per_heap);
+ PER_HEAP_ISOLATED
+ BOOL dt_high_memory_load_p();
+
protected:
PER_HEAP
void update_collection_counts ();
diff --git a/src/coreclr/gc/sample/gcenv.ee.cpp b/src/coreclr/gc/sample/gcenv.ee.cpp
index 060a5556e21715..84274f2341c3e4 100644
--- a/src/coreclr/gc/sample/gcenv.ee.cpp
+++ b/src/coreclr/gc/sample/gcenv.ee.cpp
@@ -354,3 +354,7 @@ uint32_t GCToEEInterface::GetCurrentProcessCpuCount()
{
return GCToOSInterface::GetTotalProcessorCount();
}
+
+void GCToEEInterface::DiagAddNewRegion(int generation, uint8_t* rangeStart, uint8_t* rangeEnd, uint8_t* rangeEndReserved)
+{
+}
diff --git a/src/coreclr/gc/unix/gcenv.unix.cpp b/src/coreclr/gc/unix/gcenv.unix.cpp
index 2a37c17f8c9f81..0cce732ebc4725 100644
--- a/src/coreclr/gc/unix/gcenv.unix.cpp
+++ b/src/coreclr/gc/unix/gcenv.unix.cpp
@@ -67,7 +67,6 @@
#include
#include
-#if defined(HOST_ARM64)
#include
#include
extern "C"
@@ -84,7 +83,6 @@ extern "C"
abort(); \
} \
} while (false)
-#endif // defined(HOST_ARM64)
#endif // __APPLE__
@@ -372,7 +370,7 @@ bool GCToOSInterface::Initialize()
{
s_flushUsingMemBarrier = TRUE;
}
-#if !(defined(TARGET_OSX) && defined(HOST_ARM64))
+#ifndef TARGET_OSX
else
{
assert(g_helperPage == 0);
@@ -404,7 +402,7 @@ bool GCToOSInterface::Initialize()
return false;
}
}
-#endif // !(defined(TARGET_OSX) && defined(HOST_ARM64))
+#endif // !TARGET_OSX
InitializeCGroup();
@@ -544,7 +542,7 @@ void GCToOSInterface::FlushProcessWriteBuffers()
status = pthread_mutex_unlock(&g_flushProcessWriteBuffersMutex);
assert(status == 0 && "Failed to unlock the flushProcessWriteBuffersMutex lock");
}
-#if defined(TARGET_OSX) && defined(HOST_ARM64)
+#ifdef TARGET_OSX
else
{
mach_msg_type_number_t cThreads;
@@ -570,19 +568,13 @@ void GCToOSInterface::FlushProcessWriteBuffers()
machret = vm_deallocate(mach_task_self(), (vm_address_t)pThreads, cThreads * sizeof(thread_act_t));
CHECK_MACH("vm_deallocate()", machret);
}
-#endif // defined(TARGET_OSX) && defined(HOST_ARM64)
+#endif // TARGET_OSX
}
// Break into a debugger. Uses a compiler intrinsic if one is available,
// otherwise raises a SIGTRAP.
void GCToOSInterface::DebugBreak()
{
- // __has_builtin is only defined by clang. GCC doesn't have a debug
- // trap intrinsic anyway.
-#ifndef __has_builtin
- #define __has_builtin(x) 0
-#endif // __has_builtin
-
#if __has_builtin(__builtin_debugtrap)
__builtin_debugtrap();
#else
diff --git a/src/coreclr/ilasm/writer.cpp b/src/coreclr/ilasm/writer.cpp
index c7bc6d56d43674..7b5dd8a74f9eea 100644
--- a/src/coreclr/ilasm/writer.cpp
+++ b/src/coreclr/ilasm/writer.cpp
@@ -212,26 +212,28 @@ HRESULT Assembler::CreateDebugDirectory()
param.debugDirData = NULL;
// get module ID
- DWORD rsds = 0x53445352;
- DWORD pdbAge = 0x1;
+ DWORD rsds = VAL32(0x53445352);
+ DWORD pdbAge = VAL32(0x1);
+ GUID pdbGuid = *m_pPortablePdbWriter->GetGuid();
+ SwapGuid(&pdbGuid);
DWORD len = sizeof(rsds) + sizeof(GUID) + sizeof(pdbAge) + (DWORD)strlen(m_szPdbFileName) + 1;
BYTE* dbgDirData = new BYTE[len];
DWORD offset = 0;
memcpy_s(dbgDirData + offset, len, &rsds, sizeof(rsds)); // RSDS
offset += sizeof(rsds);
- memcpy_s(dbgDirData + offset, len, m_pPortablePdbWriter->GetGuid(), sizeof(GUID)); // PDB GUID
+ memcpy_s(dbgDirData + offset, len, &pdbGuid, sizeof(GUID)); // PDB GUID
offset += sizeof(GUID);
memcpy_s(dbgDirData + offset, len, &pdbAge, sizeof(pdbAge)); // PDB AGE
offset += sizeof(pdbAge);
memcpy_s(dbgDirData + offset, len, m_szPdbFileName, strlen(m_szPdbFileName) + 1); // PDB PATH
debugDirIDD.Characteristics = 0;
- debugDirIDD.TimeDateStamp = m_pPortablePdbWriter->GetTimestamp();
- debugDirIDD.MajorVersion = 0x100;
- debugDirIDD.MinorVersion = 0x504d;
- debugDirIDD.Type = IMAGE_DEBUG_TYPE_CODEVIEW;
- debugDirIDD.SizeOfData = len;
+ debugDirIDD.TimeDateStamp = VAL32(m_pPortablePdbWriter->GetTimestamp());
+ debugDirIDD.MajorVersion = VAL16(0x100);
+ debugDirIDD.MinorVersion = VAL16(0x504d);
+ debugDirIDD.Type = VAL32(IMAGE_DEBUG_TYPE_CODEVIEW);
+ debugDirIDD.SizeOfData = VAL32(len);
debugDirIDD.AddressOfRawData = 0; // will be updated bellow
debugDirIDD.PointerToRawData = 0; // will be updated bellow
diff --git a/src/coreclr/inc/CrstTypes.def b/src/coreclr/inc/CrstTypes.def
index c7266df7dbb012..d6fb713a98a1ec 100644
--- a/src/coreclr/inc/CrstTypes.def
+++ b/src/coreclr/inc/CrstTypes.def
@@ -381,6 +381,7 @@ End
// between the thread executing DetachProfiler(), and the DetachThread
// carrying out the evacuation order.
Crst ProfilingAPIStatus
+ AcquiredBefore ThreadStore
End
Crst RCWCache
@@ -496,9 +497,8 @@ End
Crst ThreadStore
AcquiredBefore AvailableParamTypes DeadlockDetection DebuggerController
DebuggerHeapLock DebuggerJitInfo DynamicIL ExecuteManRangeLock HandleTable IbcProfile
- JitGenericHandleCache JumpStubCache LoaderHeap ModuleLookupTable ProfilingAPIStatus
- ProfilerGCRefDataFreeList SingleUseLock SyncBlockCache SystemDomainDelayedUnloadList
- ThreadIdDispenser DebuggerMutex
+ JitGenericHandleCache JumpStubCache LoaderHeap ModuleLookupTable ProfilerGCRefDataFreeList
+ SingleUseLock SyncBlockCache SystemDomainDelayedUnloadList ThreadIdDispenser DebuggerMutex
End
Crst TypeIDMap
diff --git a/src/coreclr/inc/clrconfigvalues.h b/src/coreclr/inc/clrconfigvalues.h
index f8ffae0672e8a6..69b0dd758b7515 100644
--- a/src/coreclr/inc/clrconfigvalues.h
+++ b/src/coreclr/inc/clrconfigvalues.h
@@ -513,6 +513,7 @@ RETAIL_CONFIG_DWORD_INFO(EXTERNAL_ProfAPI_DetachMinSleepMs, W("ProfAPI_DetachMin
RETAIL_CONFIG_DWORD_INFO(EXTERNAL_ProfAPI_DetachMaxSleepMs, W("ProfAPI_DetachMaxSleepMs"), 0, "The maximum time, in milliseconds, the CLR will wait before checking whether a profiler that is in the process of detaching is ready to be unloaded.")
RETAIL_CONFIG_DWORD_INFO(EXTERNAL_ProfAPI_RejitOnAttach, W("ProfApi_RejitOnAttach"), 1, "Enables the ability for profilers to rejit methods on attach.")
RETAIL_CONFIG_DWORD_INFO(EXTERNAL_ProfAPI_InliningTracking, W("ProfApi_InliningTracking"), 1, "Enables the runtime's tracking of inlining for profiler ReJIT.")
+RETAIL_CONFIG_DWORD_INFO(EXTERNAL_DebuggerLaunchDisablesCodeVersioning, W("EXTERNAL_DebuggerLaunchDisablesCodeVersioning"), 1, "Attaching a debugger at startup will disable TieredCompilation and RejitOnAttach.")
CONFIG_DWORD_INFO(INTERNAL_ProfAPI_EnableRejitDiagnostics, W("ProfAPI_EnableRejitDiagnostics"), 0, "Enable extra dumping to stdout of rejit structures")
CONFIG_DWORD_INFO(INTERNAL_ProfAPIFault, W("ProfAPIFault"), 0, "Test-only bitmask to inject various types of faults in the profapi code")
CONFIG_DWORD_INFO(INTERNAL_TestOnlyAllowedEventMask, W("TestOnlyAllowedEventMask"), 0, "Test-only bitmask to allow profiler tests to override CLR enforcement of COR_PRF_ALLOWABLE_AFTER_ATTACH and COR_PRF_MONITOR_IMMUTABLE")
@@ -525,7 +526,7 @@ RETAIL_CONFIG_DWORD_INFO(UNSUPPORTED_ProfAPI_ValidateNGENInstrumentation, W("Pro
#ifdef FEATURE_PERFMAP
RETAIL_CONFIG_DWORD_INFO(EXTERNAL_PerfMapEnabled, W("PerfMapEnabled"), 0, "This flag is used on Linux to enable writing /tmp/perf-$pid.map. It is disabled by default")
-RETAIL_CONFIG_STRING_INFO(EXTERNAL_PerfMapJitDumpPath, W("PerfMapJitDumpPath"), "Specifies a path to write the perf jitdump file. Defaults to GetTempPathA()")
+RETAIL_CONFIG_STRING_INFO(EXTERNAL_PerfMapJitDumpPath, W("PerfMapJitDumpPath"), "Specifies a path to write the perf jitdump file. Defaults to /tmp")
RETAIL_CONFIG_DWORD_INFO(EXTERNAL_PerfMapIgnoreSignal, W("PerfMapIgnoreSignal"), 0, "When perf map is enabled, this option will configure the specified signal to be accepted and ignored as a marker in the perf logs. It is disabled by default")
RETAIL_CONFIG_DWORD_INFO(EXTERNAL_PerfMapShowOptimizationTiers, W("PerfMapShowOptimizationTiers"), 1, "Shows optimization tiers in the perf map for methods, as part of the symbol name. Useful for seeing separate stack frames for different optimization tiers of each method.")
RETAIL_CONFIG_STRING_INFO(EXTERNAL_NativeImagePerfMapFormat, W("NativeImagePerfMapFormat"), "Specifies the format of native image perfmap files generated by crossgen. Valid options are RVA or OFFSET.")
@@ -576,6 +577,8 @@ RETAIL_CONFIG_DWORD_INFO(INTERNAL_ThreadPool_UnfairSemaphoreSpinLimit, W("Thread
#else // !TARGET_ARM64
RETAIL_CONFIG_DWORD_INFO(INTERNAL_ThreadPool_UnfairSemaphoreSpinLimit, W("ThreadPool_UnfairSemaphoreSpinLimit"), 0x46, "Maximum number of spins a thread pool worker thread performs before waiting for work")
#endif // TARGET_ARM64
+RETAIL_CONFIG_DWORD_INFO_EX(EXTERNAL_ThreadPool_ThreadTimeoutMs, W("ThreadPool_ThreadTimeoutMs"), (DWORD)-2, "The amount of time in milliseconds a thread pool thread waits without having done any work before timing out and exiting. Set to -1 to disable the timeout. Applies to worker threads, completion port threads, and wait threads. Also see the ThreadPool_ThreadsToKeepAlive config value for relevant information.", CLRConfig::LookupOptions::ParseIntegerAsBase10)
+RETAIL_CONFIG_DWORD_INFO_EX(EXTERNAL_ThreadPool_ThreadsToKeepAlive, W("ThreadPool_ThreadsToKeepAlive"), 0, "The number of worker or completion port threads to keep alive after they are created. Set to -1 to keep all created worker or completion port threads alive. When the ThreadPool_ThreadTimeoutMs config value is also set, for worker and completion port threads the timeout applies to threads in the respective pool that are in excess of the number configured for ThreadPool_ThreadsToKeepAlive.", CLRConfig::LookupOptions::ParseIntegerAsBase10)
RETAIL_CONFIG_DWORD_INFO(INTERNAL_HillClimbing_Disable, W("HillClimbing_Disable"), 0, "Disables hill climbing for thread adjustments in the thread pool");
RETAIL_CONFIG_DWORD_INFO(INTERNAL_HillClimbing_WavePeriod, W("HillClimbing_WavePeriod"), 4, "");
diff --git a/src/coreclr/inc/cordebug.idl b/src/coreclr/inc/cordebug.idl
index 66862c7c2b8b1c..c52ae26781dc90 100644
--- a/src/coreclr/inc/cordebug.idl
+++ b/src/coreclr/inc/cordebug.idl
@@ -135,6 +135,7 @@ interface ICorDebugThread;
interface ICorDebugThread2;
interface ICorDebugThread3;
interface ICorDebugThread4;
+interface ICorDebugThread5;
interface ICorDebugStackWalk;
interface ICorDebugChain;
interface ICorDebugFrame;
@@ -4376,6 +4377,26 @@ interface ICorDebugThread4 : IUnknown
HRESULT GetCurrentCustomDebuggerNotification([out] ICorDebugValue ** ppNotificationObject);
};
+/*
+ * ICorDebugThread5 is a logical extension to ICorDebugThread.
+ */
+[
+ object,
+ local,
+ uuid(F98421C4-E506-4D24-916F-0237EE853EC6),
+ pointer_default(unique)
+]
+interface ICorDebugThread5 : IUnknown
+{
+ /*
+ * Returns S_OK if it was possible to obtain the allocation information for the thread
+ * and sets the corresponding SOH and UOH allocations.
+ * Returns E_INVALIDARG if any of the pointers for the outputs is null.
+ * Can return E_FAIL if the process is not properly stopped.
+ */
+ HRESULT GetBytesAllocated([out] ULONG64 *pSohAllocatedBytes, [out] ULONG64 *pUohAllocatedBytes);
+};
+
/*
* The new V3.0 stackwalking API.
*/
diff --git a/src/coreclr/inc/corhlpr.h b/src/coreclr/inc/corhlpr.h
index 450514da95c180..427e8cdc0ff5c5 100644
--- a/src/coreclr/inc/corhlpr.h
+++ b/src/coreclr/inc/corhlpr.h
@@ -336,7 +336,7 @@ struct COR_ILMETHOD_SECT
const COR_ILMETHOD_SECT* Next() const
{
if (!More()) return(0);
- return ((COR_ILMETHOD_SECT*)(((BYTE *)this) + DataSize()))->Align();
+ return ((COR_ILMETHOD_SECT*)Align(((BYTE *)this) + DataSize()));
}
const BYTE* Data() const
@@ -374,9 +374,9 @@ struct COR_ILMETHOD_SECT
return((AsSmall()->Kind & CorILMethod_Sect_FatFormat) != 0);
}
- const COR_ILMETHOD_SECT* Align() const
+ static const void* Align(const void* p)
{
- return((COR_ILMETHOD_SECT*) ((((UINT_PTR) this) + 3) & ~3));
+ return((void*) ((((UINT_PTR) p) + 3) & ~3));
}
protected:
@@ -579,7 +579,7 @@ typedef struct tagCOR_ILMETHOD_FAT : IMAGE_COR_ILMETHOD_FAT
const COR_ILMETHOD_SECT* GetSect() const {
if (!More()) return (0);
- return(((COR_ILMETHOD_SECT*) (GetCode() + GetCodeSize()))->Align());
+ return(((COR_ILMETHOD_SECT*) COR_ILMETHOD_SECT::Align(GetCode() + GetCodeSize())));
}
} COR_ILMETHOD_FAT;
diff --git a/src/coreclr/inc/corjit.h b/src/coreclr/inc/corjit.h
index d4a22f2ee3e4de..d679c99ce90270 100644
--- a/src/coreclr/inc/corjit.h
+++ b/src/coreclr/inc/corjit.h
@@ -484,6 +484,12 @@ class ICorJitInfo : public ICorDynamicInfo
uint32_t sizeInBytes /* IN: The size of the buffer. Note that this is effectively a
version number for the CORJIT_FLAGS value. */
) = 0;
+
+ // Checks if a field belongs to a given class.
+ virtual bool doesFieldBelongToClass(
+ CORINFO_FIELD_HANDLE fldHnd, /* IN: the field that we are checking */
+ CORINFO_CLASS_HANDLE cls /* IN: the class that we are checking */
+ ) = 0;
};
/**********************************************************************************/
diff --git a/src/coreclr/inc/crsttypes.h b/src/coreclr/inc/crsttypes.h
index 7be482c48bb551..23070d7820d61d 100644
--- a/src/coreclr/inc/crsttypes.h
+++ b/src/coreclr/inc/crsttypes.h
@@ -1,6 +1,7 @@
//
// 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.
//
#ifndef __CRST_TYPES_INCLUDED
@@ -10,7 +11,7 @@
// This file describes the range of Crst types available and their mapping to a numeric level (used by the
// runtime in debug mode to validate we're deadlock free). To modify these settings edit the
-// file:CrstTypes.def file and run the clr\artifacts\CrstTypeTool utility to generate a new version of this file.
+// file:CrstTypes.def file and run the clr\bin\CrstTypeTool utility to generate a new version of this file.
// Each Crst type is declared as a value in the following CrstType enum.
enum CrstType
@@ -230,7 +231,7 @@ int g_rgCrstLevelMap[] =
4, // CrstPgoData
0, // CrstPinnedByrefValidation
0, // CrstProfilerGCRefDataFreeList
- 0, // CrstProfilingAPIStatus
+ 13, // CrstProfilingAPIStatus
4, // CrstRCWCache
0, // CrstRCWCleanupList
10, // CrstReadyToRunEntryPointToMethodDescMap
diff --git a/src/coreclr/inc/daccess.h b/src/coreclr/inc/daccess.h
index 71c5d2f376025a..fb99c0c1fb6430 100644
--- a/src/coreclr/inc/daccess.h
+++ b/src/coreclr/inc/daccess.h
@@ -1469,10 +1469,10 @@ class __Str16Ptr : public __DPtr
}
void EnumMem(void) const
{
- char* str = DacInstantiateStringW(m_addr, maxChars, false);
+ WCHAR* str = DacInstantiateStringW(m_addr, maxChars, false);
if (str)
{
- DacEnumMemoryRegion(m_addr, strlen(str) + 1);
+ DacEnumMemoryRegion(m_addr, wcslen(str) + 1);
}
}
};
diff --git a/src/coreclr/inc/dacvars.h b/src/coreclr/inc/dacvars.h
index e27c122b5645a2..21fa7ad6db61c8 100644
--- a/src/coreclr/inc/dacvars.h
+++ b/src/coreclr/inc/dacvars.h
@@ -252,5 +252,7 @@ DEFINE_DACVAR(ULONG, SIZE_T, dac__g_clrNotificationArguments, ::g_clrNotificatio
DEFINE_DACVAR(ULONG, bool, dac__g_metadataUpdatesApplied, ::g_metadataUpdatesApplied)
#endif
+DEFINE_DACVAR(ULONG, PTR_WSTR, dac__g_EntryAssemblyPath, ::g_EntryAssemblyPath)
+
#undef DEFINE_DACVAR
#undef DEFINE_DACVAR_NO_DUMP
diff --git a/src/coreclr/inc/icorjitinfoimpl_generated.h b/src/coreclr/inc/icorjitinfoimpl_generated.h
index b3b77ece974a87..1c470cf1fdd51d 100644
--- a/src/coreclr/inc/icorjitinfoimpl_generated.h
+++ b/src/coreclr/inc/icorjitinfoimpl_generated.h
@@ -710,6 +710,10 @@ uint32_t getJitFlags(
CORJIT_FLAGS* flags,
uint32_t sizeInBytes) override;
+bool doesFieldBelongToClass(
+ CORINFO_FIELD_HANDLE fldHnd,
+ CORINFO_CLASS_HANDLE cls) override;
+
/**********************************************************************************/
// clang-format on
/**********************************************************************************/
diff --git a/src/coreclr/inc/jiteeversionguid.h b/src/coreclr/inc/jiteeversionguid.h
index f2d6921bc76cd7..f78582151fc69a 100644
--- a/src/coreclr/inc/jiteeversionguid.h
+++ b/src/coreclr/inc/jiteeversionguid.h
@@ -43,12 +43,12 @@ typedef const GUID *LPCGUID;
#define GUID_DEFINED
#endif // !GUID_DEFINED
-constexpr GUID JITEEVersionIdentifier = { /* c2e4a466-795d-4e64-a776-0ae7b2eed65b */
- 0xc2e4a466,
- 0x795d,
- 0x4e64,
- {0xa7, 0x76, 0x0a, 0xe7, 0xb2, 0xee, 0xd6, 0x5b}
- };
+constexpr GUID JITEEVersionIdentifier = { /* 5ed35c58-857b-48dd-a818-7c0136dc9f73 */
+ 0x5ed35c58,
+ 0x857b,
+ 0x48dd,
+ {0xa8, 0x18, 0x7c, 0x01, 0x36, 0xdc, 0x9f, 0x73}
+};
//////////////////////////////////////////////////////////////////////////////////////////////////////////
//
diff --git a/src/coreclr/inc/longfilepathwrappers.h b/src/coreclr/inc/longfilepathwrappers.h
index 149cdcf4443acd..e62f1ae6be3c71 100644
--- a/src/coreclr/inc/longfilepathwrappers.h
+++ b/src/coreclr/inc/longfilepathwrappers.h
@@ -87,10 +87,6 @@ UINT WINAPI GetTempFileNameWrapper(
SString& lpTempFileName
);
-DWORD WINAPI GetTempPathWrapper(
- SString& lpBuffer
- );
-
DWORD WINAPI GetCurrentDirectoryWrapper(
SString& lpBuffer
);
diff --git a/src/coreclr/inc/profilepriv.h b/src/coreclr/inc/profilepriv.h
index 4a77b65e8b24df..4bd3801644002b 100644
--- a/src/coreclr/inc/profilepriv.h
+++ b/src/coreclr/inc/profilepriv.h
@@ -109,16 +109,10 @@ class ProfilerInfo
EventMask eventMask;
- //---------------------------------------------------------------
- // dwProfilerEvacuationCounter keeps track of how many profiler
- // callback calls remain on the stack
- //---------------------------------------------------------------
- // Why volatile?
- // See code:ProfilingAPIUtility::InitializeProfiling#LoadUnloadCallbackSynchronization.
- Volatile dwProfilerEvacuationCounter;
-
Volatile inUse;
+ DWORD slot;
+
// Reset those variables that is only for the current attach session
void ResetPerSessionStatus();
void Init();
@@ -150,19 +144,11 @@ class EvacuationCounterHolder
{
private:
ProfilerInfo *m_pProfilerInfo;
+ Thread *m_pThread;
public:
- EvacuationCounterHolder(ProfilerInfo *pProfilerInfo) :
- m_pProfilerInfo(pProfilerInfo)
- {
- _ASSERTE(m_pProfilerInfo != NULL);
- InterlockedIncrement((LONG *)(m_pProfilerInfo->dwProfilerEvacuationCounter.GetPointer()));
- }
-
- ~EvacuationCounterHolder()
- {
- InterlockedDecrement((LONG *)(m_pProfilerInfo->dwProfilerEvacuationCounter.GetPointer()));
- }
+ EvacuationCounterHolder(ProfilerInfo *pProfilerInfo);
+ ~EvacuationCounterHolder();
};
struct StoredProfilerNode
@@ -289,23 +275,26 @@ class ProfControlBlock
BOOL IsMainProfiler(ProfToEEInterfaceImpl *pProfToEE);
ProfilerInfo *GetProfilerInfo(ProfToEEInterfaceImpl *pProfToEE);
- template
- FORCEINLINE HRESULT DoProfilerCallback(ProfilerCallbackType callbackType, ConditionFunc condition, Data *additionalData, CallbackFunc callback, Args... args)
+ template
+ static void DoProfilerCallbackHelper(ProfilerInfo *pProfilerInfo, ConditionFunc condition, CallbackFunc callback, HRESULT *pHR, Args... args)
+ {
+ if (condition(pProfilerInfo))
+ {
+ HRESULT innerHR = callback(pProfilerInfo->pProfInterface, args...);
+ if (FAILED(innerHR))
+ {
+ *pHR = innerHR;
+ }
+ }
+ }
+
+ template
+ FORCEINLINE HRESULT DoProfilerCallback(ProfilerCallbackType callbackType, ConditionFunc condition, CallbackFunc callback, Args... args)
{
HRESULT hr = S_OK;
IterateProfilers(callbackType,
- [](ProfilerInfo *pProfilerInfo, ConditionFunc condition, Data *additionalData, CallbackFunc callback, HRESULT *pHR, Args... args)
- {
- if (condition(pProfilerInfo))
- {
- HRESULT innerHR = callback(additionalData, pProfilerInfo->pProfInterface, args...);
- if (FAILED(innerHR))
- {
- *pHR = innerHR;
- }
- }
- },
- condition, additionalData, callback, &hr, args...);
+ &DoProfilerCallbackHelper,
+ condition, callback, &hr, args...);
return hr;
}
@@ -317,7 +306,6 @@ class ProfControlBlock
BOOL IsCallback3Supported();
BOOL IsCallback5Supported();
- BOOL IsDisableTransparencySet();
BOOL RequiresGenericsContextForEnterLeave();
UINT_PTR EEFunctionIDMapper(FunctionID funcId, BOOL * pbHookFunction);
diff --git a/src/coreclr/inc/profilepriv.inl b/src/coreclr/inc/profilepriv.inl
index cee2dfb36b273d..cd8d7f26b3b774 100644
--- a/src/coreclr/inc/profilepriv.inl
+++ b/src/coreclr/inc/profilepriv.inl
@@ -84,23 +84,24 @@ inline void ProfilerInfo::ResetPerSessionStatus()
inline void ProfilerInfo::Init()
{
curProfStatus.Init();
- dwProfilerEvacuationCounter = 0;
ResetPerSessionStatus();
inUse = FALSE;
}
+inline HRESULT AnyProfilerPassesConditionHelper(EEToProfInterfaceImpl *profInterface, BOOL *pAnyPassed)
+{
+ *pAnyPassed = TRUE;
+ return S_OK;
+}
+
template
-inline BOOL AnyProfilerPassesCondition(ConditionFunc condition)
+FORCEINLINE BOOL AnyProfilerPassesCondition(ConditionFunc condition)
{
BOOL anyPassed = FALSE;
(&g_profControlBlock)->DoProfilerCallback(ProfilerCallbackType::ActiveOrInitializing,
- condition,
- &anyPassed,
- [](BOOL *pAnyPassed, VolatilePtr profInterface)
- {
- *pAnyPassed = TRUE;
- return S_OK;
- });
+ condition,
+ &AnyProfilerPassesConditionHelper,
+ &anyPassed);
return anyPassed;
}
@@ -120,10 +121,13 @@ inline void ProfControlBlock::Init()
CONTRACTL_END;
mainProfilerInfo.Init();
+ // Special magic value for the main one
+ mainProfilerInfo.slot = MAX_NOTIFICATION_PROFILERS;
for (SIZE_T i = 0; i < MAX_NOTIFICATION_PROFILERS; ++i)
{
notificationOnlyProfilers[i].Init();
+ notificationOnlyProfilers[i].slot = (DWORD)i;
}
globalEventMask.SetEventMask(COR_PRF_MONITOR_NONE);
@@ -165,17 +169,19 @@ inline BOOL ProfControlBlock::IsMainProfiler(ProfToEEInterfaceImpl *pProfToEE)
return pProfInterface != NULL && pProfInterface->m_pProfToEE == pProfToEE;
}
+inline void GetProfilerInfoHelper(ProfilerInfo *pProfilerInfo, ProfToEEInterfaceImpl *pProfToEE, ProfilerInfo **ppFoundProfilerInfo)
+{
+ if (pProfilerInfo->pProfInterface->GetProfToEE() == pProfToEE)
+ {
+ *ppFoundProfilerInfo = pProfilerInfo;
+ }
+}
+
inline ProfilerInfo *ProfControlBlock::GetProfilerInfo(ProfToEEInterfaceImpl *pProfToEE)
{
ProfilerInfo *pProfilerInfo = NULL;
IterateProfilers(ProfilerCallbackType::ActiveOrInitializing,
- [](ProfilerInfo *pProfilerInfo, ProfToEEInterfaceImpl *pProfToEE, ProfilerInfo **ppFoundProfilerInfo)
- {
- if (pProfilerInfo->pProfInterface->m_pProfToEE == pProfToEE)
- {
- *ppFoundProfilerInfo = pProfilerInfo;
- }
- },
+ &GetProfilerInfoHelper,
pProfToEE,
&pProfilerInfo);
@@ -203,6 +209,16 @@ inline void ProfControlBlock::DeRegisterProfilerInfo(ProfilerInfo *pProfilerInfo
InterlockedDecrement(notificationProfilerCount.GetPointer());
}
+inline void UpdateGlobalEventMaskHelper(ProfilerInfo *pProfilerInfo, DWORD *pEventMask)
+{
+ *pEventMask |= pProfilerInfo->eventMask.GetEventMask();
+}
+
+inline void UpdateGlobalEventMaskHighHelper(ProfilerInfo *pProfilerInfo, DWORD *pEventMaskHigh)
+{
+ *pEventMaskHigh |= pProfilerInfo->eventMask.GetEventMaskHigh();
+}
+
inline void ProfControlBlock::UpdateGlobalEventMask()
{
while (true)
@@ -227,53 +243,57 @@ inline void ProfControlBlock::UpdateGlobalEventMask()
}
#endif // DACCESS_COMPILE
-inline BOOL ProfControlBlock::IsCallback3Supported()
+inline BOOL IsCallback3SupportedHelper(ProfilerInfo *pProfilerInfo)
{
- return AnyProfilerPassesCondition([](ProfilerInfo *pProfilerInfo) { return pProfilerInfo->pProfInterface->IsCallback3Supported(); });
+ return pProfilerInfo->pProfInterface->IsCallback3Supported();
}
-inline BOOL ProfControlBlock::IsCallback5Supported()
+FORCEINLINE BOOL ProfControlBlock::IsCallback3Supported()
{
- return AnyProfilerPassesCondition([](ProfilerInfo *pProfilerInfo) { return pProfilerInfo->pProfInterface->IsCallback5Supported(); });
+ return AnyProfilerPassesCondition(&IsCallback3SupportedHelper);
}
-inline BOOL ProfControlBlock::IsDisableTransparencySet()
+inline BOOL IsCallback5SupportedHelper(ProfilerInfo *pProfilerInfo)
{
- return AnyProfilerPassesCondition([](ProfilerInfo *pProfilerInfo) { return pProfilerInfo->eventMask.IsEventMaskSet(COR_PRF_DISABLE_TRANSPARENCY_CHECKS_UNDER_FULL_TRUST); });
+ return pProfilerInfo->pProfInterface->IsCallback5Supported();
}
-inline BOOL ProfControlBlock::RequiresGenericsContextForEnterLeave()
+FORCEINLINE BOOL ProfControlBlock::IsCallback5Supported()
{
- return AnyProfilerPassesCondition([](ProfilerInfo *pProfilerInfo) { return pProfilerInfo->pProfInterface->RequiresGenericsContextForEnterLeave(); });
+ return AnyProfilerPassesCondition(&IsCallback5SupportedHelper);
}
-inline bool DoesProfilerWantEEFunctionIDMapper(ProfilerInfo *pProfilerInfo)
+inline BOOL RequiresGenericsContextForEnterLeaveHelper(ProfilerInfo *pProfilerInfo)
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ return pProfilerInfo->pProfInterface->RequiresGenericsContextForEnterLeave();
+}
+FORCEINLINE BOOL ProfControlBlock::RequiresGenericsContextForEnterLeave()
+{
+ return AnyProfilerPassesCondition(&RequiresGenericsContextForEnterLeaveHelper);
+}
+
+inline bool DoesProfilerWantEEFunctionIDMapper(ProfilerInfo *pProfilerInfo)
+{
return ((pProfilerInfo->pProfInterface->GetFunctionIDMapper() != NULL) ||
(pProfilerInfo->pProfInterface->GetFunctionIDMapper2() != NULL));
}
+inline void EEFunctionIDMapperHelper(ProfilerInfo *pProfilerInfo, FunctionID funcId, BOOL *pbHookFunction, UINT_PTR *pPtr)
+{
+ if (DoesProfilerWantEEFunctionIDMapper(pProfilerInfo))
+ {
+ *pPtr = pProfilerInfo->pProfInterface->EEFunctionIDMapper(funcId, pbHookFunction);
+ }
+}
+
inline UINT_PTR ProfControlBlock::EEFunctionIDMapper(FunctionID funcId, BOOL *pbHookFunction)
{
LIMITED_METHOD_CONTRACT;
UINT_PTR ptr = NULL;
DoOneProfilerIteration(&mainProfilerInfo,
ProfilerCallbackType::Active,
- [](ProfilerInfo *pProfilerInfo, FunctionID funcId, BOOL *pbHookFunction, UINT_PTR *pPtr)
- {
- if (DoesProfilerWantEEFunctionIDMapper(pProfilerInfo))
- {
- *pPtr = pProfilerInfo->pProfInterface->EEFunctionIDMapper(funcId, pbHookFunction);
- }
- },
+ &EEFunctionIDMapperHelper,
funcId, pbHookFunction, &ptr);
return ptr;
@@ -292,18 +312,24 @@ inline BOOL IsProfilerTrackingThreads(ProfilerInfo *pProfilerInfo)
return pProfilerInfo->eventMask.IsEventMaskSet(COR_PRF_MONITOR_THREADS);
}
+inline HRESULT ThreadCreatedHelper(EEToProfInterfaceImpl *profInterface, ThreadID threadID)
+{
+ return profInterface->ThreadCreated(threadID);
+}
+
inline void ProfControlBlock::ThreadCreated(ThreadID threadID)
{
LIMITED_METHOD_CONTRACT;
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingThreads,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, ThreadID threadID)
- {
- return profInterface->ThreadCreated(threadID);
- },
- threadID);
+ &ThreadCreatedHelper,
+ threadID);
+}
+
+inline HRESULT ThreadDestroyedHelper(EEToProfInterfaceImpl *profInterface, ThreadID threadID)
+{
+ return profInterface->ThreadDestroyed(threadID);
}
inline void ProfControlBlock::ThreadDestroyed(ThreadID threadID)
@@ -312,12 +338,13 @@ inline void ProfControlBlock::ThreadDestroyed(ThreadID threadID)
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingThreads,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, ThreadID threadID)
- {
- return profInterface->ThreadDestroyed(threadID);
- },
- threadID);
+ &ThreadDestroyedHelper,
+ threadID);
+}
+
+inline HRESULT ThreadAssignedToOSThreadHelper(EEToProfInterfaceImpl *profInterface, ThreadID managedThreadId, DWORD osThreadId)
+{
+ return profInterface->ThreadAssignedToOSThread(managedThreadId, osThreadId);
}
inline void ProfControlBlock::ThreadAssignedToOSThread(ThreadID managedThreadId, DWORD osThreadId)
@@ -326,12 +353,13 @@ inline void ProfControlBlock::ThreadAssignedToOSThread(ThreadID managedThreadId,
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingThreads,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, ThreadID managedThreadId, DWORD osThreadId)
- {
- return profInterface->ThreadAssignedToOSThread(managedThreadId, osThreadId);
- },
- managedThreadId, osThreadId);
+ &ThreadAssignedToOSThreadHelper,
+ managedThreadId, osThreadId);
+}
+
+inline HRESULT ThreadNameChangedHelper(EEToProfInterfaceImpl *profInterface, ThreadID managedThreadId, ULONG cchName, WCHAR name[])
+{
+ return profInterface->ThreadNameChanged(managedThreadId, cchName, name);
}
inline void ProfControlBlock::ThreadNameChanged(ThreadID managedThreadId, ULONG cchName, WCHAR name[])
@@ -340,12 +368,13 @@ inline void ProfControlBlock::ThreadNameChanged(ThreadID managedThreadId, ULONG
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingThreads,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, ThreadID managedThreadId, ULONG cchName, WCHAR name[])
- {
- return profInterface->ThreadNameChanged(managedThreadId, cchName, name);
- },
- managedThreadId, cchName, name);
+ &ThreadNameChangedHelper,
+ managedThreadId, cchName, name);
+}
+
+inline HRESULT ShutdownHelper(EEToProfInterfaceImpl *profInterface)
+{
+ return profInterface->Shutdown();
}
inline void ProfControlBlock::Shutdown()
@@ -354,11 +383,7 @@ inline void ProfControlBlock::Shutdown()
DoProfilerCallback(ProfilerCallbackType::Active,
[](ProfilerInfo *pProfilerInfo) { return true; },
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface)
- {
- return profInterface->Shutdown();
- });
+ &ShutdownHelper);
}
inline BOOL IsProfilerTrackingJITInfo(ProfilerInfo *pProfilerInfo)
@@ -374,18 +399,24 @@ inline BOOL IsProfilerTrackingJITInfo(ProfilerInfo *pProfilerInfo)
return pProfilerInfo->eventMask.IsEventMaskSet(COR_PRF_MONITOR_JIT_COMPILATION);
}
+inline HRESULT JITCompilationFinishedHelper(EEToProfInterfaceImpl *profInterface, FunctionID functionId, HRESULT hrStatus, BOOL fIsSafeToBlock)
+{
+ return profInterface->JITCompilationFinished(functionId, hrStatus, fIsSafeToBlock);
+}
+
inline void ProfControlBlock::JITCompilationFinished(FunctionID functionId, HRESULT hrStatus, BOOL fIsSafeToBlock)
{
LIMITED_METHOD_CONTRACT;
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingJITInfo,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, FunctionID functionId, HRESULT hrStatus, BOOL fIsSafeToBlock)
- {
- return profInterface->JITCompilationFinished(functionId, hrStatus, fIsSafeToBlock);
- },
- functionId, hrStatus, fIsSafeToBlock);
+ &JITCompilationFinishedHelper,
+ functionId, hrStatus, fIsSafeToBlock);
+}
+
+inline HRESULT JITCompilationStartedHelper(EEToProfInterfaceImpl *profInterface, FunctionID functionId, BOOL fIsSafeToBlock)
+{
+ return profInterface->JITCompilationStarted(functionId, fIsSafeToBlock);
}
inline void ProfControlBlock::JITCompilationStarted(FunctionID functionId, BOOL fIsSafeToBlock)
@@ -394,12 +425,13 @@ inline void ProfControlBlock::JITCompilationStarted(FunctionID functionId, BOOL
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingJITInfo,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, FunctionID functionId, BOOL fIsSafeToBlock)
- {
- return profInterface->JITCompilationStarted(functionId, fIsSafeToBlock);
- },
- functionId, fIsSafeToBlock);
+ &JITCompilationStartedHelper,
+ functionId, fIsSafeToBlock);
+}
+
+inline HRESULT DynamicMethodJITCompilationStartedHelper(EEToProfInterfaceImpl *profInterface, FunctionID functionId, BOOL fIsSafeToBlock, LPCBYTE pILHeader, ULONG cbILHeader)
+{
+ return profInterface->DynamicMethodJITCompilationStarted(functionId, fIsSafeToBlock, pILHeader, cbILHeader);
}
inline void ProfControlBlock::DynamicMethodJITCompilationStarted(FunctionID functionId, BOOL fIsSafeToBlock, LPCBYTE pILHeader, ULONG cbILHeader)
@@ -408,12 +440,13 @@ inline void ProfControlBlock::DynamicMethodJITCompilationStarted(FunctionID func
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingJITInfo,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, FunctionID functionId, BOOL fIsSafeToBlock, LPCBYTE pILHeader, ULONG cbILHeader)
- {
- return profInterface->DynamicMethodJITCompilationStarted(functionId, fIsSafeToBlock, pILHeader, cbILHeader);
- },
- functionId, fIsSafeToBlock, pILHeader, cbILHeader);
+ &DynamicMethodJITCompilationStartedHelper,
+ functionId, fIsSafeToBlock, pILHeader, cbILHeader);
+}
+
+inline HRESULT DynamicMethodJITCompilationFinishedHelper(EEToProfInterfaceImpl *profInterface, FunctionID functionId, HRESULT hrStatus, BOOL fIsSafeToBlock)
+{
+ return profInterface->DynamicMethodJITCompilationFinished(functionId, hrStatus, fIsSafeToBlock);
}
inline void ProfControlBlock::DynamicMethodJITCompilationFinished(FunctionID functionId, HRESULT hrStatus, BOOL fIsSafeToBlock)
@@ -422,12 +455,8 @@ inline void ProfControlBlock::DynamicMethodJITCompilationFinished(FunctionID fun
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingJITInfo,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, FunctionID functionId, HRESULT hrStatus, BOOL fIsSafeToBlock)
- {
- return profInterface->DynamicMethodJITCompilationFinished(functionId, hrStatus, fIsSafeToBlock);
- },
- functionId, hrStatus, fIsSafeToBlock);
+ &DynamicMethodJITCompilationFinishedHelper,
+ functionId, hrStatus, fIsSafeToBlock);
}
inline BOOL IsProfilerMonitoringDynamicFunctionUnloads(ProfilerInfo *pProfilerInfo)
@@ -443,18 +472,19 @@ inline BOOL IsProfilerMonitoringDynamicFunctionUnloads(ProfilerInfo *pProfilerIn
return pProfilerInfo->eventMask.IsEventMaskHighSet(COR_PRF_HIGH_MONITOR_DYNAMIC_FUNCTION_UNLOADS);
}
+inline HRESULT DynamicMethodUnloadedHelper(EEToProfInterfaceImpl *profInterface, FunctionID functionId)
+{
+ return profInterface->DynamicMethodUnloaded(functionId);
+}
+
inline void ProfControlBlock::DynamicMethodUnloaded(FunctionID functionId)
{
LIMITED_METHOD_CONTRACT;
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerMonitoringDynamicFunctionUnloads,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, FunctionID functionId)
- {
- return profInterface->DynamicMethodUnloaded(functionId);
- },
- functionId);
+ &DynamicMethodUnloadedHelper,
+ functionId);
}
inline BOOL IsProfilerTrackingCacheSearches(ProfilerInfo *pProfilerInfo)
@@ -470,6 +500,14 @@ inline BOOL IsProfilerTrackingCacheSearches(ProfilerInfo *pProfilerInfo)
return pProfilerInfo->eventMask.IsEventMaskSet(COR_PRF_MONITOR_CACHE_SEARCHES);
}
+inline HRESULT JITCachedFunctionSearchStartedHelper(EEToProfInterfaceImpl *profInterface, BOOL *pAllTrue, FunctionID functionId)
+{
+ BOOL fUseCachedFunction = TRUE;
+ HRESULT hr = profInterface->JITCachedFunctionSearchStarted(functionId, &fUseCachedFunction);
+ *pAllTrue = *pAllTrue && fUseCachedFunction;
+ return hr;
+}
+
inline void ProfControlBlock::JITCachedFunctionSearchStarted(FunctionID functionId, BOOL *pbUseCachedFunction)
{
LIMITED_METHOD_CONTRACT;
@@ -477,48 +515,46 @@ inline void ProfControlBlock::JITCachedFunctionSearchStarted(FunctionID function
BOOL allTrue = TRUE;
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingCacheSearches,
- &allTrue,
- [](BOOL *pAllTrue, VolatilePtr profInterface, FunctionID functionId, BOOL *pbUseCachedFunction)
- {
- HRESULT hr = profInterface->JITCachedFunctionSearchStarted(functionId, pbUseCachedFunction);
- *pAllTrue &= *pbUseCachedFunction;
- return hr;
- },
- functionId, pbUseCachedFunction);
+ &JITCachedFunctionSearchStartedHelper,
+ &allTrue, functionId);
// If any reject it, consider it rejected.
*pbUseCachedFunction = allTrue;
}
+inline HRESULT JITCachedFunctionSearchFinishedHelper(EEToProfInterfaceImpl *profInterface, FunctionID functionId, COR_PRF_JIT_CACHE result)
+{
+ return profInterface->JITCachedFunctionSearchFinished(functionId, result);
+}
+
inline void ProfControlBlock::JITCachedFunctionSearchFinished(FunctionID functionId, COR_PRF_JIT_CACHE result)
{
LIMITED_METHOD_CONTRACT;
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingCacheSearches,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, FunctionID functionId, COR_PRF_JIT_CACHE result)
- {
- return profInterface->JITCachedFunctionSearchFinished(functionId, result);
- },
- functionId, result);
+ &JITCachedFunctionSearchFinishedHelper,
+ functionId, result);
+}
+
+inline HRESULT JITInliningHelper(EEToProfInterfaceImpl *profInterface, BOOL *pAllTrue, FunctionID callerId, FunctionID calleeId)
+{
+ BOOL fShouldInline = TRUE;
+ HRESULT hr = profInterface->JITInlining(callerId, calleeId, &fShouldInline);
+ *pAllTrue = *pAllTrue && fShouldInline;
+ return hr;
}
inline HRESULT ProfControlBlock::JITInlining(FunctionID callerId, FunctionID calleeId, BOOL *pfShouldInline)
{
LIMITED_METHOD_CONTRACT;
+ *pfShouldInline = TRUE;
BOOL allTrue = TRUE;
HRESULT hr = DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingJITInfo,
- &allTrue,
- [](BOOL *pAllTrue, VolatilePtr profInterface, FunctionID callerId, FunctionID calleeId, BOOL *pfShouldInline)
- {
- HRESULT hr = profInterface->JITInlining(callerId, calleeId, pfShouldInline);
- *pAllTrue &= *pfShouldInline;
- return hr;
- },
- callerId, calleeId, pfShouldInline);
+ &JITInliningHelper,
+ &allTrue, callerId, calleeId);
// If any reject it, consider it rejected.
*pfShouldInline = allTrue;
@@ -530,65 +566,73 @@ inline BOOL IsRejitEnabled(ProfilerInfo *pProfilerInfo)
return pProfilerInfo->eventMask.IsEventMaskSet(COR_PRF_ENABLE_REJIT);
}
+inline void ReJITCompilationStartedHelper(ProfilerInfo *pProfilerInfo, FunctionID functionId, ReJITID reJitId, BOOL fIsSafeToBlock)
+{
+ if (IsRejitEnabled(pProfilerInfo))
+ {
+ pProfilerInfo->pProfInterface->ReJITCompilationStarted(functionId, reJitId, fIsSafeToBlock);
+ }
+}
+
inline void ProfControlBlock::ReJITCompilationStarted(FunctionID functionId, ReJITID reJitId, BOOL fIsSafeToBlock)
{
LIMITED_METHOD_CONTRACT;
DoOneProfilerIteration(&mainProfilerInfo,
ProfilerCallbackType::Active,
- [](ProfilerInfo *pProfilerInfo, FunctionID functionId, ReJITID reJitId, BOOL fIsSafeToBlock)
- {
- if (IsRejitEnabled(pProfilerInfo))
- {
- pProfilerInfo->pProfInterface->ReJITCompilationStarted(functionId, reJitId, fIsSafeToBlock);
- }
- },
+ &ReJITCompilationStartedHelper,
functionId, reJitId, fIsSafeToBlock);
}
+inline void GetReJITParametersHelper(ProfilerInfo *pProfilerInfo, ModuleID moduleId, mdMethodDef methodId, ICorProfilerFunctionControl *pFunctionControl, HRESULT *pHr)
+{
+ if (IsRejitEnabled(pProfilerInfo))
+ {
+ *pHr = pProfilerInfo->pProfInterface->GetReJITParameters(moduleId, methodId, pFunctionControl);
+ }
+}
+
inline HRESULT ProfControlBlock::GetReJITParameters(ModuleID moduleId, mdMethodDef methodId, ICorProfilerFunctionControl *pFunctionControl)
{
LIMITED_METHOD_CONTRACT;
HRESULT hr = S_OK;
DoOneProfilerIteration(&mainProfilerInfo,
ProfilerCallbackType::Active,
- [](ProfilerInfo *pProfilerInfo, ModuleID moduleId, mdMethodDef methodId, ICorProfilerFunctionControl *pFunctionControl, HRESULT *pHr)
- {
- if (IsRejitEnabled(pProfilerInfo))
- {
- *pHr = pProfilerInfo->pProfInterface->GetReJITParameters(moduleId, methodId, pFunctionControl);
- }
- },
+ &GetReJITParametersHelper,
moduleId, methodId, pFunctionControl, &hr);
return hr;
}
+inline void ReJITCompilationFinishedHelper(ProfilerInfo *pProfilerInfo, FunctionID functionId, ReJITID reJitId, HRESULT hrStatus, BOOL fIsSafeToBlock)
+{
+ if (IsRejitEnabled(pProfilerInfo))
+ {
+ pProfilerInfo->pProfInterface->ReJITCompilationFinished(functionId, reJitId, hrStatus, fIsSafeToBlock);
+ }
+}
+
inline void ProfControlBlock::ReJITCompilationFinished(FunctionID functionId, ReJITID reJitId, HRESULT hrStatus, BOOL fIsSafeToBlock)
{
LIMITED_METHOD_CONTRACT;
DoOneProfilerIteration(&mainProfilerInfo,
ProfilerCallbackType::Active,
- [](ProfilerInfo *pProfilerInfo, FunctionID functionId, ReJITID reJitId, HRESULT hrStatus, BOOL fIsSafeToBlock)
- {
- if (IsRejitEnabled(pProfilerInfo))
- {
- pProfilerInfo->pProfInterface->ReJITCompilationFinished(functionId, reJitId, hrStatus, fIsSafeToBlock);
- }
- },
+ &ReJITCompilationFinishedHelper,
functionId, reJitId, hrStatus, fIsSafeToBlock);
}
+inline void ReJITErrorHelper(ProfilerInfo *pProfilerInfo, ModuleID moduleId, mdMethodDef methodId, FunctionID functionId, HRESULT hrStatus)
+{
+ if (IsRejitEnabled(pProfilerInfo))
+ {
+ pProfilerInfo->pProfInterface->ReJITError(moduleId, methodId, functionId, hrStatus);
+ }
+}
+
inline void ProfControlBlock::ReJITError(ModuleID moduleId, mdMethodDef methodId, FunctionID functionId, HRESULT hrStatus)
{
LIMITED_METHOD_CONTRACT;
DoOneProfilerIteration(&mainProfilerInfo,
ProfilerCallbackType::Active,
- [](ProfilerInfo *pProfilerInfo, ModuleID moduleId, mdMethodDef methodId, FunctionID functionId, HRESULT hrStatus)
- {
- if (IsRejitEnabled(pProfilerInfo))
- {
- pProfilerInfo->pProfInterface->ReJITError(moduleId, methodId, functionId, hrStatus);
- }
- },
+ &ReJITErrorHelper,
moduleId, methodId, functionId, hrStatus);
}
@@ -605,18 +649,24 @@ inline BOOL IsProfilerTrackingModuleLoads(ProfilerInfo *pProfilerInfo)
return pProfilerInfo->eventMask.IsEventMaskSet(COR_PRF_MONITOR_MODULE_LOADS);
}
+inline HRESULT ModuleLoadStartedHelper(EEToProfInterfaceImpl *profInterface, ModuleID moduleId)
+{
+ return profInterface->ModuleLoadStarted(moduleId);
+}
+
inline void ProfControlBlock::ModuleLoadStarted(ModuleID moduleId)
{
LIMITED_METHOD_CONTRACT;
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingModuleLoads,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, ModuleID moduleId)
- {
- return profInterface->ModuleLoadStarted(moduleId);
- },
- moduleId);
+ &ModuleLoadStartedHelper,
+ moduleId);
+}
+
+inline HRESULT ModuleLoadFinishedHelper(EEToProfInterfaceImpl *profInterface, ModuleID moduleId, HRESULT hrStatus)
+{
+ return profInterface->ModuleLoadFinished(moduleId, hrStatus);
}
inline void ProfControlBlock::ModuleLoadFinished(ModuleID moduleId, HRESULT hrStatus)
@@ -625,12 +675,13 @@ inline void ProfControlBlock::ModuleLoadFinished(ModuleID moduleId, HRESULT hrSt
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingModuleLoads,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, ModuleID moduleId, HRESULT hrStatus)
- {
- return profInterface->ModuleLoadFinished(moduleId, hrStatus);
- },
- moduleId, hrStatus);
+ &ModuleLoadFinishedHelper,
+ moduleId, hrStatus);
+}
+
+inline HRESULT ModuleUnloadStartedHelper(EEToProfInterfaceImpl *profInterface, ModuleID moduleId)
+{
+ return profInterface->ModuleUnloadStarted(moduleId);
}
inline void ProfControlBlock::ModuleUnloadStarted(ModuleID moduleId)
@@ -639,12 +690,13 @@ inline void ProfControlBlock::ModuleUnloadStarted(ModuleID moduleId)
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingModuleLoads,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, ModuleID moduleId)
- {
- return profInterface->ModuleUnloadStarted(moduleId);
- },
- moduleId);
+ &ModuleUnloadStartedHelper,
+ moduleId);
+}
+
+inline HRESULT ModuleUnloadFinishedHelper(EEToProfInterfaceImpl *profInterface, ModuleID moduleId, HRESULT hrStatus)
+{
+ return profInterface->ModuleUnloadFinished(moduleId, hrStatus);
}
inline void ProfControlBlock::ModuleUnloadFinished(ModuleID moduleId, HRESULT hrStatus)
@@ -653,12 +705,13 @@ inline void ProfControlBlock::ModuleUnloadFinished(ModuleID moduleId, HRESULT hr
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingModuleLoads,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, ModuleID moduleId, HRESULT hrStatus)
- {
- return profInterface->ModuleUnloadFinished(moduleId, hrStatus);
- },
- moduleId, hrStatus);
+ &ModuleUnloadFinishedHelper,
+ moduleId, hrStatus);
+}
+
+inline HRESULT ModuleAttachedToAssemblyHelper(EEToProfInterfaceImpl *profInterface, ModuleID moduleId, AssemblyID AssemblyId)
+{
+ return profInterface->ModuleAttachedToAssembly(moduleId, AssemblyId);
}
inline void ProfControlBlock::ModuleAttachedToAssembly(ModuleID moduleId, AssemblyID AssemblyId)
@@ -667,12 +720,8 @@ inline void ProfControlBlock::ModuleAttachedToAssembly(ModuleID moduleId, Assemb
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingModuleLoads,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, ModuleID moduleId, AssemblyID AssemblyId)
- {
- return profInterface->ModuleAttachedToAssembly(moduleId, AssemblyId);
- },
- moduleId, AssemblyId);
+ &ModuleAttachedToAssemblyHelper,
+ moduleId, AssemblyId);
}
inline BOOL IsProfilerTrackingInMemorySymbolsUpdatesEnabled(ProfilerInfo *pProfilerInfo)
@@ -688,18 +737,19 @@ inline BOOL IsProfilerTrackingInMemorySymbolsUpdatesEnabled(ProfilerInfo *pProfi
return pProfilerInfo->eventMask.IsEventMaskHighSet(COR_PRF_HIGH_IN_MEMORY_SYMBOLS_UPDATED);
}
+inline HRESULT ModuleInMemorySymbolsUpdatedHelper(EEToProfInterfaceImpl *profInterface, ModuleID moduleId)
+{
+ return profInterface->ModuleInMemorySymbolsUpdated(moduleId);
+}
+
inline void ProfControlBlock::ModuleInMemorySymbolsUpdated(ModuleID moduleId)
{
LIMITED_METHOD_CONTRACT;
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingInMemorySymbolsUpdatesEnabled,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, ModuleID moduleId)
- {
- return profInterface->ModuleInMemorySymbolsUpdated(moduleId);
- },
- moduleId);
+ &ModuleInMemorySymbolsUpdatedHelper,
+ moduleId);
}
inline BOOL IsProfilerTrackingClasses(ProfilerInfo *pProfilerInfo)
@@ -715,18 +765,24 @@ inline BOOL IsProfilerTrackingClasses(ProfilerInfo *pProfilerInfo)
return pProfilerInfo->eventMask.IsEventMaskSet(COR_PRF_MONITOR_CLASS_LOADS);
}
+inline HRESULT ClassLoadStartedHelper(EEToProfInterfaceImpl *profInterface, ClassID classId)
+{
+ return profInterface->ClassLoadStarted(classId);
+}
+
inline void ProfControlBlock::ClassLoadStarted(ClassID classId)
{
LIMITED_METHOD_CONTRACT;
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingClasses,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, ClassID classId)
- {
- return profInterface->ClassLoadStarted(classId);
- },
- classId);
+ &ClassLoadStartedHelper,
+ classId);
+}
+
+inline HRESULT ClassLoadFinishedHelper(EEToProfInterfaceImpl *profInterface, ClassID classId, HRESULT hrStatus)
+{
+ return profInterface->ClassLoadFinished(classId, hrStatus);
}
inline void ProfControlBlock::ClassLoadFinished(ClassID classId, HRESULT hrStatus)
@@ -735,12 +791,13 @@ inline void ProfControlBlock::ClassLoadFinished(ClassID classId, HRESULT hrStatu
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingClasses,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, ClassID classId, HRESULT hrStatus)
- {
- return profInterface->ClassLoadFinished(classId, hrStatus);
- },
- classId, hrStatus);
+ &ClassLoadFinishedHelper,
+ classId, hrStatus);
+}
+
+inline HRESULT ClassUnloadStartedHelper(EEToProfInterfaceImpl *profInterface, ClassID classId)
+{
+ return profInterface->ClassUnloadStarted(classId);
}
inline void ProfControlBlock::ClassUnloadStarted(ClassID classId)
@@ -749,12 +806,13 @@ inline void ProfControlBlock::ClassUnloadStarted(ClassID classId)
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingClasses,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, ClassID classId)
- {
- return profInterface->ClassUnloadStarted(classId);
- },
- classId);
+ &ClassUnloadStartedHelper,
+ classId);
+}
+
+inline HRESULT ClassUnloadFinishedHelper(EEToProfInterfaceImpl *profInterface, ClassID classId, HRESULT hrStatus)
+{
+ return profInterface->ClassUnloadFinished(classId, hrStatus);
}
inline void ProfControlBlock::ClassUnloadFinished(ClassID classId, HRESULT hrStatus)
@@ -763,12 +821,8 @@ inline void ProfControlBlock::ClassUnloadFinished(ClassID classId, HRESULT hrSta
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingClasses,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, ClassID classId, HRESULT hrStatus)
- {
- return profInterface->ClassUnloadFinished(classId, hrStatus);
- },
- classId, hrStatus);
+ &ClassUnloadFinishedHelper,
+ classId, hrStatus);
}
inline BOOL IsProfilerTrackingAppDomainLoads(ProfilerInfo *pProfilerInfo)
@@ -784,18 +838,24 @@ inline BOOL IsProfilerTrackingAppDomainLoads(ProfilerInfo *pProfilerInfo)
return pProfilerInfo->eventMask.IsEventMaskSet(COR_PRF_MONITOR_APPDOMAIN_LOADS);
}
+inline HRESULT AppDomainCreationStartedHelper(EEToProfInterfaceImpl *profInterface, AppDomainID appDomainId)
+{
+ return profInterface->AppDomainCreationStarted(appDomainId);
+}
+
inline void ProfControlBlock::AppDomainCreationStarted(AppDomainID appDomainId)
{
LIMITED_METHOD_CONTRACT;
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingAppDomainLoads,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, AppDomainID appDomainId)
- {
- return profInterface->AppDomainCreationStarted(appDomainId);
- },
- appDomainId);
+ &AppDomainCreationStartedHelper,
+ appDomainId);
+}
+
+inline HRESULT AppDomainCreationFinishedHelper(EEToProfInterfaceImpl *profInterface, AppDomainID appDomainId, HRESULT hrStatus)
+{
+ return profInterface->AppDomainCreationFinished(appDomainId, hrStatus);
}
inline void ProfControlBlock::AppDomainCreationFinished(AppDomainID appDomainId, HRESULT hrStatus)
@@ -804,12 +864,13 @@ inline void ProfControlBlock::AppDomainCreationFinished(AppDomainID appDomainId,
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingAppDomainLoads,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, AppDomainID appDomainId, HRESULT hrStatus)
- {
- return profInterface->AppDomainCreationFinished(appDomainId, hrStatus);
- },
- appDomainId, hrStatus);
+ &AppDomainCreationFinishedHelper,
+ appDomainId, hrStatus);
+}
+
+inline HRESULT AppDomainShutdownStartedHelper(EEToProfInterfaceImpl *profInterface, AppDomainID appDomainId)
+{
+ return profInterface->AppDomainShutdownStarted(appDomainId);
}
inline void ProfControlBlock::AppDomainShutdownStarted(AppDomainID appDomainId)
@@ -818,12 +879,13 @@ inline void ProfControlBlock::AppDomainShutdownStarted(AppDomainID appDomainId)
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingAppDomainLoads,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, AppDomainID appDomainId)
- {
- return profInterface->AppDomainShutdownStarted(appDomainId);
- },
- appDomainId);
+ &AppDomainShutdownStartedHelper,
+ appDomainId);
+}
+
+inline HRESULT AppDomainShutdownFinishedHelper(EEToProfInterfaceImpl *profInterface, AppDomainID appDomainId, HRESULT hrStatus)
+{
+ return profInterface->AppDomainShutdownFinished(appDomainId, hrStatus);
}
inline void ProfControlBlock::AppDomainShutdownFinished(AppDomainID appDomainId, HRESULT hrStatus)
@@ -832,12 +894,8 @@ inline void ProfControlBlock::AppDomainShutdownFinished(AppDomainID appDomainId,
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingAppDomainLoads,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, AppDomainID appDomainId, HRESULT hrStatus)
- {
- return profInterface->AppDomainShutdownFinished(appDomainId, hrStatus);
- },
- appDomainId, hrStatus);
+ &AppDomainShutdownFinishedHelper,
+ appDomainId, hrStatus);
}
inline BOOL IsProfilerTrackingAssemblyLoads(ProfilerInfo *pProfilerInfo)
@@ -853,18 +911,24 @@ inline BOOL IsProfilerTrackingAssemblyLoads(ProfilerInfo *pProfilerInfo)
return pProfilerInfo->eventMask.IsEventMaskSet(COR_PRF_MONITOR_ASSEMBLY_LOADS);
}
+inline HRESULT AssemblyLoadStartedHelper(EEToProfInterfaceImpl *profInterface, AssemblyID assemblyId)
+{
+ return profInterface->AssemblyLoadStarted(assemblyId);
+}
+
inline void ProfControlBlock::AssemblyLoadStarted(AssemblyID assemblyId)
{
LIMITED_METHOD_CONTRACT;
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingAssemblyLoads,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, AssemblyID assemblyId)
- {
- return profInterface->AssemblyLoadStarted(assemblyId);
- },
- assemblyId);
+ &AssemblyLoadStartedHelper,
+ assemblyId);
+}
+
+inline HRESULT AssemblyLoadFinishedHelper(EEToProfInterfaceImpl *profInterface, AssemblyID assemblyId, HRESULT hrStatus)
+{
+ return profInterface->AssemblyLoadFinished(assemblyId, hrStatus);
}
inline void ProfControlBlock::AssemblyLoadFinished(AssemblyID assemblyId, HRESULT hrStatus)
@@ -873,12 +937,13 @@ inline void ProfControlBlock::AssemblyLoadFinished(AssemblyID assemblyId, HRESUL
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingAssemblyLoads,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, AssemblyID assemblyId, HRESULT hrStatus)
- {
- return profInterface->AssemblyLoadFinished(assemblyId, hrStatus);
- },
- assemblyId, hrStatus);
+ &AssemblyLoadFinishedHelper,
+ assemblyId, hrStatus);
+}
+
+inline HRESULT AssemblyUnloadStartedHelper(EEToProfInterfaceImpl *profInterface, AssemblyID assemblyId)
+{
+ return profInterface->AssemblyUnloadStarted(assemblyId);
}
inline void ProfControlBlock::AssemblyUnloadStarted(AssemblyID assemblyId)
@@ -887,12 +952,13 @@ inline void ProfControlBlock::AssemblyUnloadStarted(AssemblyID assemblyId)
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingAssemblyLoads,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, AssemblyID assemblyId)
- {
- return profInterface->AssemblyUnloadStarted(assemblyId);
- },
- assemblyId);
+ &AssemblyUnloadStartedHelper,
+ assemblyId);
+}
+
+inline HRESULT AssemblyUnloadFinishedHelper(EEToProfInterfaceImpl *profInterface, AssemblyID assemblyId, HRESULT hrStatus)
+{
+ return profInterface->AssemblyUnloadFinished(assemblyId, hrStatus);
}
inline void ProfControlBlock::AssemblyUnloadFinished(AssemblyID assemblyId, HRESULT hrStatus)
@@ -901,12 +967,8 @@ inline void ProfControlBlock::AssemblyUnloadFinished(AssemblyID assemblyId, HRES
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingAssemblyLoads,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, AssemblyID assemblyId, HRESULT hrStatus)
- {
- return profInterface->AssemblyUnloadFinished(assemblyId, hrStatus);
- },
- assemblyId, hrStatus);
+ &AssemblyUnloadFinishedHelper,
+ assemblyId, hrStatus);
}
inline BOOL IsProfilerTrackingTransitions(ProfilerInfo *pProfilerInfo)
@@ -922,18 +984,24 @@ inline BOOL IsProfilerTrackingTransitions(ProfilerInfo *pProfilerInfo)
return pProfilerInfo->eventMask.IsEventMaskSet(COR_PRF_MONITOR_CODE_TRANSITIONS);
}
+inline HRESULT UnmanagedToManagedTransitionHelper(EEToProfInterfaceImpl *profInterface, FunctionID functionId, COR_PRF_TRANSITION_REASON reason)
+{
+ return profInterface->UnmanagedToManagedTransition(functionId, reason);
+}
+
inline void ProfControlBlock::UnmanagedToManagedTransition(FunctionID functionId, COR_PRF_TRANSITION_REASON reason)
{
LIMITED_METHOD_CONTRACT;
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingTransitions,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, FunctionID functionId, COR_PRF_TRANSITION_REASON reason)
- {
- return profInterface->UnmanagedToManagedTransition(functionId, reason);
- },
- functionId, reason);
+ &UnmanagedToManagedTransitionHelper,
+ functionId, reason);
+}
+
+inline HRESULT ManagedToUnmanagedTransitionHelper(EEToProfInterfaceImpl *profInterface, FunctionID functionId, COR_PRF_TRANSITION_REASON reason)
+{
+ return profInterface->ManagedToUnmanagedTransition(functionId, reason);
}
inline void ProfControlBlock::ManagedToUnmanagedTransition(FunctionID functionId, COR_PRF_TRANSITION_REASON reason)
@@ -942,12 +1010,8 @@ inline void ProfControlBlock::ManagedToUnmanagedTransition(FunctionID functionId
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingTransitions,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, FunctionID functionId, COR_PRF_TRANSITION_REASON reason)
- {
- return profInterface->ManagedToUnmanagedTransition(functionId, reason);
- },
- functionId, reason);
+ &ManagedToUnmanagedTransitionHelper,
+ functionId, reason);
}
inline BOOL IsProfilerTrackingExceptions(ProfilerInfo *pProfilerInfo)
@@ -963,18 +1027,24 @@ inline BOOL IsProfilerTrackingExceptions(ProfilerInfo *pProfilerInfo)
return pProfilerInfo->eventMask.IsEventMaskSet(COR_PRF_MONITOR_EXCEPTIONS);
}
+inline HRESULT ExceptionThrownHelper(EEToProfInterfaceImpl *profInterface, ObjectID thrownObjectId)
+{
+ return profInterface->ExceptionThrown(thrownObjectId);
+}
+
inline void ProfControlBlock::ExceptionThrown(ObjectID thrownObjectId)
{
LIMITED_METHOD_CONTRACT;
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingExceptions,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, ObjectID thrownObjectId)
- {
- return profInterface->ExceptionThrown(thrownObjectId);
- },
- thrownObjectId);
+ &ExceptionThrownHelper,
+ thrownObjectId);
+}
+
+inline HRESULT ExceptionSearchFunctionEnterHelper(EEToProfInterfaceImpl *profInterface, FunctionID functionId)
+{
+ return profInterface->ExceptionSearchFunctionEnter(functionId);
}
inline void ProfControlBlock::ExceptionSearchFunctionEnter(FunctionID functionId)
@@ -983,12 +1053,13 @@ inline void ProfControlBlock::ExceptionSearchFunctionEnter(FunctionID functionId
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingExceptions,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, FunctionID functionId)
- {
- return profInterface->ExceptionSearchFunctionEnter(functionId);
- },
- functionId);
+ &ExceptionSearchFunctionEnterHelper,
+ functionId);
+}
+
+inline HRESULT ExceptionSearchFunctionLeaveHelper(EEToProfInterfaceImpl *profInterface)
+{
+ return profInterface->ExceptionSearchFunctionLeave();
}
inline void ProfControlBlock::ExceptionSearchFunctionLeave()
@@ -997,11 +1068,12 @@ inline void ProfControlBlock::ExceptionSearchFunctionLeave()
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingExceptions,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface)
- {
- return profInterface->ExceptionSearchFunctionLeave();
- });
+ &ExceptionSearchFunctionLeaveHelper);
+}
+
+inline HRESULT ExceptionSearchFilterEnterHelper(EEToProfInterfaceImpl *profInterface, FunctionID funcId)
+{
+ return profInterface->ExceptionSearchFilterEnter(funcId);
}
inline void ProfControlBlock::ExceptionSearchFilterEnter(FunctionID funcId)
@@ -1010,12 +1082,13 @@ inline void ProfControlBlock::ExceptionSearchFilterEnter(FunctionID funcId)
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingExceptions,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, FunctionID funcId)
- {
- return profInterface->ExceptionSearchFilterEnter(funcId);
- },
- funcId);
+ &ExceptionSearchFilterEnterHelper,
+ funcId);
+}
+
+inline HRESULT ExceptionSearchFilterLeaveHelper(EEToProfInterfaceImpl *profInterface)
+{
+ return profInterface->ExceptionSearchFilterLeave();
}
inline void ProfControlBlock::ExceptionSearchFilterLeave()
@@ -1024,11 +1097,12 @@ inline void ProfControlBlock::ExceptionSearchFilterLeave()
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingExceptions,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface)
- {
- return profInterface->ExceptionSearchFilterLeave();
- });
+ &ExceptionSearchFilterLeaveHelper);
+}
+
+inline HRESULT ExceptionSearchCatcherFoundHelper(EEToProfInterfaceImpl *profInterface, FunctionID functionId)
+{
+ return profInterface->ExceptionSearchCatcherFound(functionId);
}
inline void ProfControlBlock::ExceptionSearchCatcherFound(FunctionID functionId)
@@ -1037,12 +1111,13 @@ inline void ProfControlBlock::ExceptionSearchCatcherFound(FunctionID functionId)
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingExceptions,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, FunctionID functionId)
- {
- return profInterface->ExceptionSearchCatcherFound(functionId);
- },
- functionId);
+ &ExceptionSearchCatcherFoundHelper,
+ functionId);
+}
+
+inline HRESULT ExceptionOSHandlerEnterHelper(EEToProfInterfaceImpl *profInterface, FunctionID funcId)
+{
+ return profInterface->ExceptionOSHandlerEnter(funcId);
}
inline void ProfControlBlock::ExceptionOSHandlerEnter(FunctionID funcId)
@@ -1051,12 +1126,13 @@ inline void ProfControlBlock::ExceptionOSHandlerEnter(FunctionID funcId)
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingExceptions,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, FunctionID funcId)
- {
- return profInterface->ExceptionOSHandlerEnter(funcId);
- },
- funcId);
+ &ExceptionOSHandlerEnterHelper,
+ funcId);
+}
+
+inline HRESULT ExceptionOSHandlerLeaveHelper(EEToProfInterfaceImpl *profInterface, FunctionID funcId)
+{
+ return profInterface->ExceptionOSHandlerLeave(funcId);
}
inline void ProfControlBlock::ExceptionOSHandlerLeave(FunctionID funcId)
@@ -1065,12 +1141,13 @@ inline void ProfControlBlock::ExceptionOSHandlerLeave(FunctionID funcId)
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingExceptions,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, FunctionID funcId)
- {
- return profInterface->ExceptionOSHandlerLeave(funcId);
- },
- funcId);
+ &ExceptionOSHandlerLeaveHelper,
+ funcId);
+}
+
+inline HRESULT ExceptionUnwindFunctionEnterHelper(EEToProfInterfaceImpl *profInterface, FunctionID functionId)
+{
+ return profInterface->ExceptionUnwindFunctionEnter(functionId);
}
inline void ProfControlBlock::ExceptionUnwindFunctionEnter(FunctionID functionId)
@@ -1079,12 +1156,13 @@ inline void ProfControlBlock::ExceptionUnwindFunctionEnter(FunctionID functionId
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingExceptions,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, FunctionID functionId)
- {
- return profInterface->ExceptionUnwindFunctionEnter(functionId);
- },
- functionId);
+ &ExceptionUnwindFunctionEnterHelper,
+ functionId);
+}
+
+inline HRESULT ExceptionUnwindFunctionLeaveHelper(EEToProfInterfaceImpl *profInterface)
+{
+ return profInterface->ExceptionUnwindFunctionLeave();
}
inline void ProfControlBlock::ExceptionUnwindFunctionLeave()
@@ -1093,11 +1171,12 @@ inline void ProfControlBlock::ExceptionUnwindFunctionLeave()
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingExceptions,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface)
- {
- return profInterface->ExceptionUnwindFunctionLeave();
- });
+ &ExceptionUnwindFunctionLeaveHelper);
+}
+
+inline HRESULT ExceptionUnwindFinallyEnterHelper(EEToProfInterfaceImpl *profInterface, FunctionID functionId)
+{
+ return profInterface->ExceptionUnwindFinallyEnter(functionId);
}
inline void ProfControlBlock::ExceptionUnwindFinallyEnter(FunctionID functionId)
@@ -1106,12 +1185,13 @@ inline void ProfControlBlock::ExceptionUnwindFinallyEnter(FunctionID functionId)
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingExceptions,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, FunctionID functionId)
- {
- return profInterface->ExceptionUnwindFinallyEnter(functionId);
- },
- functionId);
+ &ExceptionUnwindFinallyEnterHelper,
+ functionId);
+}
+
+inline HRESULT ExceptionUnwindFinallyLeaveHelper(EEToProfInterfaceImpl *profInterface)
+{
+ return profInterface->ExceptionUnwindFinallyLeave();
}
inline void ProfControlBlock::ExceptionUnwindFinallyLeave()
@@ -1120,11 +1200,12 @@ inline void ProfControlBlock::ExceptionUnwindFinallyLeave()
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingExceptions,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface)
- {
- return profInterface->ExceptionUnwindFinallyLeave();
- });
+ &ExceptionUnwindFinallyLeaveHelper);
+}
+
+inline HRESULT ExceptionCatcherEnterHelper(EEToProfInterfaceImpl *profInterface, FunctionID functionId, ObjectID objectId)
+{
+ return profInterface->ExceptionCatcherEnter(functionId, objectId);
}
inline void ProfControlBlock::ExceptionCatcherEnter(FunctionID functionId, ObjectID objectId)
@@ -1133,12 +1214,13 @@ inline void ProfControlBlock::ExceptionCatcherEnter(FunctionID functionId, Objec
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingExceptions,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, FunctionID functionId, ObjectID objectId)
- {
- return profInterface->ExceptionCatcherEnter(functionId, objectId);
- },
- functionId, objectId);
+ &ExceptionCatcherEnterHelper,
+ functionId, objectId);
+}
+
+inline HRESULT ExceptionCatcherLeaveHelper(EEToProfInterfaceImpl *profInterface)
+{
+ return profInterface->ExceptionCatcherLeave();
}
inline void ProfControlBlock::ExceptionCatcherLeave()
@@ -1147,11 +1229,7 @@ inline void ProfControlBlock::ExceptionCatcherLeave()
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingExceptions,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface)
- {
- return profInterface->ExceptionCatcherLeave();
- });
+ &ExceptionCatcherLeaveHelper);
}
inline BOOL IsProfilerTrackingCCW(ProfilerInfo *pProfilerInfo)
@@ -1167,18 +1245,19 @@ inline BOOL IsProfilerTrackingCCW(ProfilerInfo *pProfilerInfo)
return pProfilerInfo->eventMask.IsEventMaskSet(COR_PRF_MONITOR_CCW);
}
+inline HRESULT COMClassicVTableCreatedHelper(EEToProfInterfaceImpl *profInterface, ClassID wrappedClassId, REFGUID implementedIID, void *pVTable, ULONG cSlots)
+{
+ return profInterface->COMClassicVTableCreated(wrappedClassId, implementedIID, pVTable, cSlots);
+}
+
inline void ProfControlBlock::COMClassicVTableCreated(ClassID wrappedClassId, REFGUID implementedIID, void *pVTable, ULONG cSlots)
{
LIMITED_METHOD_CONTRACT;
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingCCW,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, ClassID wrappedClassId, REFGUID implementedIID, void *pVTable, ULONG cSlots)
- {
- return profInterface->COMClassicVTableCreated(wrappedClassId, implementedIID, pVTable, cSlots);
- },
- wrappedClassId, implementedIID, pVTable, cSlots);
+ &COMClassicVTableCreatedHelper,
+ wrappedClassId, implementedIID, pVTable, cSlots);
}
inline BOOL IsProfilerTrackingSuspends(ProfilerInfo *pProfilerInfo)
@@ -1194,18 +1273,24 @@ inline BOOL IsProfilerTrackingSuspends(ProfilerInfo *pProfilerInfo)
return pProfilerInfo->eventMask.IsEventMaskSet(COR_PRF_MONITOR_SUSPENDS);
}
+inline HRESULT RuntimeSuspendStartedHelper(EEToProfInterfaceImpl *profInterface, COR_PRF_SUSPEND_REASON suspendReason)
+{
+ return profInterface->RuntimeSuspendStarted(suspendReason);
+}
+
inline void ProfControlBlock::RuntimeSuspendStarted(COR_PRF_SUSPEND_REASON suspendReason)
{
LIMITED_METHOD_CONTRACT;
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingSuspends,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, COR_PRF_SUSPEND_REASON suspendReason)
- {
- return profInterface->RuntimeSuspendStarted(suspendReason);
- },
- suspendReason);
+ &RuntimeSuspendStartedHelper,
+ suspendReason);
+}
+
+inline HRESULT RuntimeSuspendFinishedHelper(EEToProfInterfaceImpl *profInterface)
+{
+ return profInterface->RuntimeSuspendFinished();
}
inline void ProfControlBlock::RuntimeSuspendFinished()
@@ -1214,11 +1299,12 @@ inline void ProfControlBlock::RuntimeSuspendFinished()
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingSuspends,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface)
- {
- return profInterface->RuntimeSuspendFinished();
- });
+ &RuntimeSuspendFinishedHelper);
+}
+
+inline HRESULT RuntimeSuspendAbortedHelper(EEToProfInterfaceImpl *profInterface)
+{
+ return profInterface->RuntimeSuspendAborted();
}
inline void ProfControlBlock::RuntimeSuspendAborted()
@@ -1227,11 +1313,12 @@ inline void ProfControlBlock::RuntimeSuspendAborted()
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingSuspends,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface)
- {
- return profInterface->RuntimeSuspendAborted();
- });
+ &RuntimeSuspendAbortedHelper);
+}
+
+inline HRESULT RuntimeResumeStartedHelper(EEToProfInterfaceImpl *profInterface)
+{
+ return profInterface->RuntimeResumeStarted();
}
inline void ProfControlBlock::RuntimeResumeStarted()
@@ -1240,11 +1327,12 @@ inline void ProfControlBlock::RuntimeResumeStarted()
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingSuspends,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface)
- {
- return profInterface->RuntimeResumeStarted();
- });
+ &RuntimeResumeStartedHelper);
+}
+
+inline HRESULT RuntimeResumeFinishedHelper(EEToProfInterfaceImpl *profInterface)
+{
+ return profInterface->RuntimeResumeFinished();
}
inline void ProfControlBlock::RuntimeResumeFinished()
@@ -1253,11 +1341,12 @@ inline void ProfControlBlock::RuntimeResumeFinished()
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingSuspends,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface)
- {
- return profInterface->RuntimeResumeFinished();
- });
+ &RuntimeResumeFinishedHelper);
+}
+
+inline HRESULT RuntimeThreadSuspendedHelper(EEToProfInterfaceImpl *profInterface, ThreadID suspendedThreadId)
+{
+ return profInterface->RuntimeThreadSuspended(suspendedThreadId);
}
inline void ProfControlBlock::RuntimeThreadSuspended(ThreadID suspendedThreadId)
@@ -1266,12 +1355,13 @@ inline void ProfControlBlock::RuntimeThreadSuspended(ThreadID suspendedThreadId)
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingSuspends,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, ThreadID suspendedThreadId)
- {
- return profInterface->RuntimeThreadSuspended(suspendedThreadId);
- },
- suspendedThreadId);
+ &RuntimeThreadSuspendedHelper,
+ suspendedThreadId);
+}
+
+inline HRESULT RuntimeThreadResumedHelper(EEToProfInterfaceImpl *profInterface, ThreadID resumedThreadId)
+{
+ return profInterface->RuntimeThreadResumed(resumedThreadId);
}
inline void ProfControlBlock::RuntimeThreadResumed(ThreadID resumedThreadId)
@@ -1280,12 +1370,8 @@ inline void ProfControlBlock::RuntimeThreadResumed(ThreadID resumedThreadId)
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingSuspends,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, ThreadID resumedThreadId)
- {
- return profInterface->RuntimeThreadResumed(resumedThreadId);
- },
- resumedThreadId);
+ &RuntimeThreadResumedHelper,
+ resumedThreadId);
}
inline BOOL IsProfilerTrackingAllocations(ProfilerInfo *pProfilerInfo)
@@ -1302,18 +1388,19 @@ inline BOOL IsProfilerTrackingAllocations(ProfilerInfo *pProfilerInfo)
|| pProfilerInfo->eventMask.IsEventMaskHighSet(COR_PRF_HIGH_MONITOR_LARGEOBJECT_ALLOCATED));
}
+inline HRESULT ObjectAllocatedHelper(EEToProfInterfaceImpl *profInterface, ObjectID objectId, ClassID classId)
+{
+ return profInterface->ObjectAllocated(objectId, classId);
+}
+
inline void ProfControlBlock::ObjectAllocated(ObjectID objectId, ClassID classId)
{
LIMITED_METHOD_CONTRACT;
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingAllocations,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, ObjectID objectId, ClassID classId)
- {
- return profInterface->ObjectAllocated(objectId, classId);
- },
- objectId, classId);
+ &ObjectAllocatedHelper,
+ objectId, classId);
}
@@ -1330,18 +1417,24 @@ inline BOOL IsProfilerTrackingGC(ProfilerInfo *pProfilerInfo)
return pProfilerInfo->eventMask.IsEventMaskSet(COR_PRF_MONITOR_GC);
}
+inline HRESULT FinalizeableObjectQueuedHelper(EEToProfInterfaceImpl *profInterface, BOOL isCritical, ObjectID objectID)
+{
+ return profInterface->FinalizeableObjectQueued(isCritical, objectID);
+}
+
inline void ProfControlBlock::FinalizeableObjectQueued(BOOL isCritical, ObjectID objectID)
{
LIMITED_METHOD_CONTRACT;
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingGC,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, BOOL isCritical, ObjectID objectID)
- {
- return profInterface->FinalizeableObjectQueued(isCritical, objectID);
- },
- isCritical, objectID);
+ &FinalizeableObjectQueuedHelper,
+ isCritical, objectID);
+}
+
+inline HRESULT MovedReferenceHelper(EEToProfInterfaceImpl *profInterface, BYTE *pbMemBlockStart, BYTE *pbMemBlockEnd, ptrdiff_t cbRelocDistance, void *pHeapId, BOOL fCompacting)
+{
+ return profInterface->MovedReference(pbMemBlockStart, pbMemBlockEnd, cbRelocDistance, pHeapId, fCompacting);
}
inline void ProfControlBlock::MovedReference(BYTE *pbMemBlockStart, BYTE *pbMemBlockEnd, ptrdiff_t cbRelocDistance, void *pHeapId, BOOL fCompacting)
@@ -1350,12 +1443,13 @@ inline void ProfControlBlock::MovedReference(BYTE *pbMemBlockStart, BYTE *pbMemB
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingGC,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, BYTE *pbMemBlockStart, BYTE *pbMemBlockEnd, ptrdiff_t cbRelocDistance, void *pHeapId, BOOL fCompacting)
- {
- return profInterface->MovedReference(pbMemBlockStart, pbMemBlockEnd, cbRelocDistance, pHeapId, fCompacting);
- },
- pbMemBlockStart, pbMemBlockEnd, cbRelocDistance, pHeapId, fCompacting);
+ &MovedReferenceHelper,
+ pbMemBlockStart, pbMemBlockEnd, cbRelocDistance, pHeapId, fCompacting);
+}
+
+inline HRESULT EndMovedReferencesHelper(EEToProfInterfaceImpl *profInterface, void *pHeapId)
+{
+ return profInterface->EndMovedReferences(pHeapId);
}
inline void ProfControlBlock::EndMovedReferences(void *pHeapId)
@@ -1364,12 +1458,13 @@ inline void ProfControlBlock::EndMovedReferences(void *pHeapId)
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingGC,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, void *pHeapId)
- {
- return profInterface->EndMovedReferences(pHeapId);
- },
- pHeapId);
+ &EndMovedReferencesHelper,
+ pHeapId);
+}
+
+inline HRESULT RootReference2Helper(EEToProfInterfaceImpl *profInterface, BYTE *objectId, EtwGCRootKind dwEtwRootKind, EtwGCRootFlags dwEtwRootFlags, void *rootID, void *pHeapId)
+{
+ return profInterface->RootReference2(objectId, dwEtwRootKind, dwEtwRootFlags, rootID, pHeapId);
}
inline void ProfControlBlock::RootReference2(BYTE *objectId, EtwGCRootKind dwEtwRootKind, EtwGCRootFlags dwEtwRootFlags, void *rootID, void *pHeapId)
@@ -1378,12 +1473,13 @@ inline void ProfControlBlock::RootReference2(BYTE *objectId, EtwGCRootKind dwEtw
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingGC,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, BYTE *objectId, EtwGCRootKind dwEtwRootKind, EtwGCRootFlags dwEtwRootFlags, void *rootID, void *pHeapId)
- {
- return profInterface->RootReference2(objectId, dwEtwRootKind, dwEtwRootFlags, rootID, pHeapId);
- },
- objectId, dwEtwRootKind, dwEtwRootFlags, rootID, pHeapId);
+ &RootReference2Helper,
+ objectId, dwEtwRootKind, dwEtwRootFlags, rootID, pHeapId);
+}
+
+inline HRESULT EndRootReferences2Helper(EEToProfInterfaceImpl *profInterface, void *pHeapId)
+{
+ return profInterface->EndRootReferences2(pHeapId);
}
inline void ProfControlBlock::EndRootReferences2(void *pHeapId)
@@ -1392,50 +1488,53 @@ inline void ProfControlBlock::EndRootReferences2(void *pHeapId)
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingGC,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, void *pHeapId)
- {
- return profInterface->EndRootReferences2(pHeapId);
- },
- pHeapId);
+ &EndRootReferences2Helper,
+ pHeapId);
}
-inline void ProfControlBlock::ConditionalWeakTableElementReference(BYTE *primaryObjectId, BYTE *secondaryObjectId, void *rootID, void *pHeapId)
+inline HRESULT ConditionalWeakTableElementReferenceHelper(EEToProfInterfaceImpl *profInterface, BYTE *primaryObjectId, BYTE *secondaryObjectId, void *rootID, void *pHeapId)
{
- LIMITED_METHOD_CONTRACT;
-
- DoProfilerCallback(ProfilerCallbackType::Active,
- IsProfilerTrackingGC,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, BYTE *primaryObjectId, BYTE *secondaryObjectId, void *rootID, void *pHeapId)
- {
- if (!profInterface->IsCallback5Supported())
- {
- return S_OK;
- }
+ if (!profInterface->IsCallback5Supported())
+ {
+ return S_OK;
+ }
- return profInterface->ConditionalWeakTableElementReference(primaryObjectId, secondaryObjectId, rootID, pHeapId);
- },
- primaryObjectId, secondaryObjectId, rootID, pHeapId);
+ return profInterface->ConditionalWeakTableElementReference(primaryObjectId, secondaryObjectId, rootID, pHeapId);
}
-inline void ProfControlBlock::EndConditionalWeakTableElementReferences(void *pHeapId)
+inline void ProfControlBlock::ConditionalWeakTableElementReference(BYTE *primaryObjectId, BYTE *secondaryObjectId, void *rootID, void *pHeapId)
{
LIMITED_METHOD_CONTRACT;
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingGC,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, void *pHeapId)
- {
- if (!profInterface->IsCallback5Supported())
- {
- return S_OK;
- }
+ &ConditionalWeakTableElementReferenceHelper,
+ primaryObjectId, secondaryObjectId, rootID, pHeapId);
+}
+
+inline HRESULT EndConditionalWeakTableElementReferencesHelper(EEToProfInterfaceImpl *profInterface, void *pHeapId)
+{
+ if (!profInterface->IsCallback5Supported())
+ {
+ return S_OK;
+ }
+
+ return profInterface->EndConditionalWeakTableElementReferences(pHeapId);
+}
+
+inline void ProfControlBlock::EndConditionalWeakTableElementReferences(void *pHeapId)
+{
+ LIMITED_METHOD_CONTRACT;
+
+ DoProfilerCallback(ProfilerCallbackType::Active,
+ IsProfilerTrackingGC,
+ &EndConditionalWeakTableElementReferencesHelper,
+ pHeapId);
+}
- return profInterface->EndConditionalWeakTableElementReferences(pHeapId);
- },
- pHeapId);
+inline HRESULT AllocByClassHelper(EEToProfInterfaceImpl *profInterface, ObjectID objId, ClassID classId, void *pHeapId)
+{
+ return profInterface->AllocByClass(objId, classId, pHeapId);
}
inline void ProfControlBlock::AllocByClass(ObjectID objId, ClassID classId, void *pHeapId)
@@ -1444,12 +1543,13 @@ inline void ProfControlBlock::AllocByClass(ObjectID objId, ClassID classId, void
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingGC,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, ObjectID objId, ClassID classId, void *pHeapId)
- {
- return profInterface->AllocByClass(objId, classId, pHeapId);
- },
- objId, classId, pHeapId);
+ &AllocByClassHelper,
+ objId, classId, pHeapId);
+}
+
+inline HRESULT EndAllocByClassHelper(EEToProfInterfaceImpl *profInterface, void *pHeapId)
+{
+ return profInterface->EndAllocByClass(pHeapId);
}
inline void ProfControlBlock::EndAllocByClass(void *pHeapId)
@@ -1458,12 +1558,13 @@ inline void ProfControlBlock::EndAllocByClass(void *pHeapId)
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingGC,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, void *pHeapId)
- {
- return profInterface->EndAllocByClass(pHeapId);
- },
- pHeapId);
+ &EndAllocByClassHelper,
+ pHeapId);
+}
+
+inline HRESULT ObjectReferenceHelper(EEToProfInterfaceImpl *profInterface, ObjectID objId, ClassID classId, ULONG cNumRefs, ObjectID *arrObjRef)
+{
+ return profInterface->ObjectReference(objId, classId, cNumRefs, arrObjRef);
}
inline HRESULT ProfControlBlock::ObjectReference(ObjectID objId, ClassID classId, ULONG cNumRefs, ObjectID *arrObjRef)
@@ -1472,12 +1573,13 @@ inline HRESULT ProfControlBlock::ObjectReference(ObjectID objId, ClassID classId
return DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingGC,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, ObjectID objId, ClassID classId, ULONG cNumRefs, ObjectID *arrObjRef)
- {
- return profInterface->ObjectReference(objId, classId, cNumRefs, arrObjRef);
- },
- objId, classId, cNumRefs, arrObjRef);
+ &ObjectReferenceHelper,
+ objId, classId, cNumRefs, arrObjRef);
+}
+
+inline HRESULT HandleCreatedHelper(EEToProfInterfaceImpl *profInterface, UINT_PTR handleId, ObjectID initialObjectId)
+{
+ return profInterface->HandleCreated(handleId, initialObjectId);
}
inline void ProfControlBlock::HandleCreated(UINT_PTR handleId, ObjectID initialObjectId)
@@ -1486,12 +1588,13 @@ inline void ProfControlBlock::HandleCreated(UINT_PTR handleId, ObjectID initialO
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingGC,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, UINT_PTR handleId, ObjectID initialObjectId)
- {
- return profInterface->HandleCreated(handleId, initialObjectId);
- },
- handleId, initialObjectId);
+ &HandleCreatedHelper,
+ handleId, initialObjectId);
+}
+
+inline HRESULT HandleDestroyedHelper(EEToProfInterfaceImpl *profInterface, UINT_PTR handleId)
+{
+ return profInterface->HandleDestroyed(handleId);
}
inline void ProfControlBlock::HandleDestroyed(UINT_PTR handleId)
@@ -1500,12 +1603,8 @@ inline void ProfControlBlock::HandleDestroyed(UINT_PTR handleId)
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingGC,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, UINT_PTR handleId)
- {
- return profInterface->HandleDestroyed(handleId);
- },
- handleId);
+ &HandleDestroyedHelper,
+ handleId);
}
@@ -1545,18 +1644,24 @@ inline BOOL IsProfilerTrackingGCOrMovedObjects(ProfilerInfo *pProfilerInfo)
return IsProfilerTrackingGC(pProfilerInfo) || IsProfilerTrackingMovedObjects(pProfilerInfo);
}
+inline HRESULT GarbageCollectionStartedHelper(EEToProfInterfaceImpl *profInterface, int cGenerations, BOOL generationCollected[], COR_PRF_GC_REASON reason)
+{
+ return profInterface->GarbageCollectionStarted(cGenerations, generationCollected, reason);
+}
+
inline void ProfControlBlock::GarbageCollectionStarted(int cGenerations, BOOL generationCollected[], COR_PRF_GC_REASON reason)
{
LIMITED_METHOD_CONTRACT;
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingGCOrBasicGC,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, int cGenerations, BOOL generationCollected[], COR_PRF_GC_REASON reason)
- {
- return profInterface->GarbageCollectionStarted(cGenerations, generationCollected, reason);
- },
- cGenerations, generationCollected, reason);
+ &GarbageCollectionStartedHelper,
+ cGenerations, generationCollected, reason);
+}
+
+inline HRESULT GarbageCollectionFinishedHelper(EEToProfInterfaceImpl *profInterface)
+{
+ return profInterface->GarbageCollectionFinished();
}
inline void ProfControlBlock::GarbageCollectionFinished()
@@ -1565,11 +1670,7 @@ inline void ProfControlBlock::GarbageCollectionFinished()
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerTrackingGCOrBasicGC,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface)
- {
- return profInterface->GarbageCollectionFinished();
- });
+ &GarbageCollectionFinishedHelper);
}
@@ -1586,6 +1687,33 @@ inline BOOL IsProfilerMonitoringEventPipe(ProfilerInfo *pProfilerInfo)
return pProfilerInfo->eventMask.IsEventMaskHighSet(COR_PRF_HIGH_MONITOR_EVENT_PIPE);
}
+inline HRESULT EventPipeEventDeliveredHelper(EEToProfInterfaceImpl *profInterface,
+ EventPipeProvider *provider,
+ DWORD eventId,
+ DWORD eventVersion,
+ ULONG cbMetadataBlob,
+ LPCBYTE metadataBlob,
+ ULONG cbEventData,
+ LPCBYTE eventData,
+ LPCGUID pActivityId,
+ LPCGUID pRelatedActivityId,
+ Thread *pEventThread,
+ ULONG numStackFrames,
+ UINT_PTR stackFrames[])
+{
+ return profInterface->EventPipeEventDelivered(provider,
+ eventId,
+ eventVersion,
+ cbMetadataBlob,
+ metadataBlob,
+ cbEventData,
+ eventData,
+ pActivityId,
+ pRelatedActivityId,
+ pEventThread,
+ numStackFrames,
+ stackFrames);
+}
inline void ProfControlBlock::EventPipeEventDelivered(EventPipeProvider *provider,
DWORD eventId,
@@ -1604,33 +1732,7 @@ inline void ProfControlBlock::EventPipeEventDelivered(EventPipeProvider *provide
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerMonitoringEventPipe,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, EventPipeProvider *provider,
- DWORD eventId,
- DWORD eventVersion,
- ULONG cbMetadataBlob,
- LPCBYTE metadataBlob,
- ULONG cbEventData,
- LPCBYTE eventData,
- LPCGUID pActivityId,
- LPCGUID pRelatedActivityId,
- Thread *pEventThread,
- ULONG numStackFrames,
- UINT_PTR stackFrames[])
- {
- return profInterface->EventPipeEventDelivered(provider,
- eventId,
- eventVersion,
- cbMetadataBlob,
- metadataBlob,
- cbEventData,
- eventData,
- pActivityId,
- pRelatedActivityId,
- pEventThread,
- numStackFrames,
- stackFrames);
- },
+ &EventPipeEventDeliveredHelper,
provider,
eventId,
eventVersion,
@@ -1645,18 +1747,19 @@ inline void ProfControlBlock::EventPipeEventDelivered(EventPipeProvider *provide
stackFrames);
}
+inline HRESULT EventPipeProviderCreatedHelper(EEToProfInterfaceImpl *profInterface, EventPipeProvider *provider)
+{
+ return profInterface->EventPipeProviderCreated(provider);
+}
+
inline void ProfControlBlock::EventPipeProviderCreated(EventPipeProvider *provider)
{
LIMITED_METHOD_CONTRACT;
DoProfilerCallback(ProfilerCallbackType::Active,
IsProfilerMonitoringEventPipe,
- (void *)NULL,
- [](void *additionalData, VolatilePtr profInterface, EventPipeProvider *provider)
- {
- return profInterface->EventPipeProviderCreated(provider);
- },
- provider);
+ &EventPipeProviderCreatedHelper,
+ provider);
}
//---------------------------------------------------------------------------------------
@@ -1664,16 +1767,17 @@ inline void ProfControlBlock::EventPipeProviderCreated(EventPipeProvider *provid
// and what features it enabled callbacks for.
//---------------------------------------------------------------------------------------
-inline BOOL CORProfilerPresent()
+FORCEINLINE BOOL CORProfilerPresent()
{
- LIMITED_METHOD_DAC_CONTRACT;
+ STATIC_CONTRACT_LIMITED_METHOD;
- return AnyProfilerPassesCondition([](ProfilerInfo *pProfilerInfo) { return pProfilerInfo->curProfStatus.Get() >= kProfStatusActive; });
+ return (&g_profControlBlock)->mainProfilerInfo.pProfInterface.Load() != NULL
+ || (&g_profControlBlock)->notificationProfilerCount.Load() > 0;
}
-inline BOOL CORMainProfilerPresent()
+FORCEINLINE BOOL CORMainProfilerPresent()
{
- LIMITED_METHOD_DAC_CONTRACT;
+ STATIC_CONTRACT_LIMITED_METHOD;
return (&g_profControlBlock)->mainProfilerInfo.curProfStatus.Get() >= kProfStatusActive;
}
@@ -1681,15 +1785,9 @@ inline BOOL CORMainProfilerPresent()
// These return whether a CLR Profiler is actively loaded AND has requested the
// specified callback or functionality
-inline BOOL CORProfilerFunctionIDMapperEnabled()
+FORCEINLINE BOOL CORProfilerFunctionIDMapperEnabled()
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ STATIC_CONTRACT_LIMITED_METHOD;
return (CORMainProfilerPresent() &&
(
@@ -1698,287 +1796,151 @@ inline BOOL CORProfilerFunctionIDMapperEnabled()
));
}
-inline BOOL CORProfilerTrackJITInfo()
+FORCEINLINE BOOL CORProfilerTrackJITInfo()
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ STATIC_CONTRACT_LIMITED_METHOD;
- return (CORProfilerPresent() &&
- (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_MONITOR_JIT_COMPILATION));
+ return (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_MONITOR_JIT_COMPILATION);
}
-inline BOOL CORProfilerTrackCacheSearches()
+FORCEINLINE BOOL CORProfilerTrackCacheSearches()
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ STATIC_CONTRACT_LIMITED_METHOD;
- return (CORProfilerPresent() &&
- (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_MONITOR_CACHE_SEARCHES));
+ return (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_MONITOR_CACHE_SEARCHES);
}
-inline BOOL CORProfilerTrackModuleLoads()
+FORCEINLINE BOOL CORProfilerTrackModuleLoads()
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ STATIC_CONTRACT_LIMITED_METHOD;
- return (CORProfilerPresent() &&
- (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_MONITOR_MODULE_LOADS));
+ return (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_MONITOR_MODULE_LOADS);
}
-inline BOOL CORProfilerTrackAssemblyLoads()
+FORCEINLINE BOOL CORProfilerTrackAssemblyLoads()
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ STATIC_CONTRACT_LIMITED_METHOD;
- return (CORProfilerPresent() &&
- (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_MONITOR_ASSEMBLY_LOADS));
+ return (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_MONITOR_ASSEMBLY_LOADS);
}
-inline BOOL CORProfilerTrackAppDomainLoads()
+FORCEINLINE BOOL CORProfilerTrackAppDomainLoads()
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ STATIC_CONTRACT_LIMITED_METHOD;
- return (CORProfilerPresent() &&
- (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_MONITOR_APPDOMAIN_LOADS));
+ return (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_MONITOR_APPDOMAIN_LOADS);
}
-inline BOOL CORProfilerTrackThreads()
+FORCEINLINE BOOL CORProfilerTrackThreads()
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ STATIC_CONTRACT_LIMITED_METHOD;
- return (CORProfilerPresent() &&
- (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_MONITOR_THREADS));
+ return (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_MONITOR_THREADS);
}
-inline BOOL CORProfilerTrackClasses()
+FORCEINLINE BOOL CORProfilerTrackClasses()
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ STATIC_CONTRACT_LIMITED_METHOD;
- return (CORProfilerPresent() &&
- (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_MONITOR_CLASS_LOADS));
+ return (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_MONITOR_CLASS_LOADS);
}
-inline BOOL CORProfilerTrackGC()
+FORCEINLINE BOOL CORProfilerTrackGC()
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ STATIC_CONTRACT_LIMITED_METHOD;
- return (CORProfilerPresent() &&
- (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_MONITOR_GC));
+ return (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_MONITOR_GC);
}
-inline BOOL CORProfilerTrackAllocationsEnabled()
+FORCEINLINE BOOL CORProfilerTrackAllocationsEnabled()
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ STATIC_CONTRACT_LIMITED_METHOD;
return
(
#ifdef PROF_TEST_ONLY_FORCE_OBJECT_ALLOCATED
(&g_profControlBlock)->fTestOnlyForceObjectAllocated ||
#endif
- (CORProfilerPresent() &&
- (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_ENABLE_OBJECT_ALLOCATED))
+ (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_ENABLE_OBJECT_ALLOCATED)
);
}
-inline BOOL CORProfilerTrackAllocations()
+FORCEINLINE BOOL CORProfilerTrackAllocations()
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ STATIC_CONTRACT_LIMITED_METHOD;
- return
- (CORProfilerTrackAllocationsEnabled() &&
- (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_MONITOR_OBJECT_ALLOCATED));
+ return (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_MONITOR_OBJECT_ALLOCATED);
}
-inline BOOL CORProfilerTrackLargeAllocations()
+FORCEINLINE BOOL CORProfilerTrackLargeAllocations()
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ STATIC_CONTRACT_LIMITED_METHOD;
- return
- (CORProfilerPresent() &&
- (&g_profControlBlock)->globalEventMask.IsEventMaskHighSet(COR_PRF_HIGH_MONITOR_LARGEOBJECT_ALLOCATED));
+ return (&g_profControlBlock)->globalEventMask.IsEventMaskHighSet(COR_PRF_HIGH_MONITOR_LARGEOBJECT_ALLOCATED);
}
-inline BOOL CORProfilerTrackPinnedAllocations()
+FORCEINLINE BOOL CORProfilerTrackPinnedAllocations()
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ STATIC_CONTRACT_LIMITED_METHOD;
- return
- (CORProfilerPresent() &&
- (&g_profControlBlock)->globalEventMask.IsEventMaskHighSet(COR_PRF_HIGH_MONITOR_PINNEDOBJECT_ALLOCATED));
+ return (&g_profControlBlock)->globalEventMask.IsEventMaskHighSet(COR_PRF_HIGH_MONITOR_PINNEDOBJECT_ALLOCATED);
}
-inline BOOL CORProfilerEnableRejit()
+FORCEINLINE BOOL CORProfilerEnableRejit()
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ STATIC_CONTRACT_LIMITED_METHOD;
- return (CORMainProfilerPresent() &&
- (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_ENABLE_REJIT));
+ return (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_ENABLE_REJIT);
}
-inline BOOL CORProfilerTrackExceptions()
+FORCEINLINE BOOL CORProfilerTrackExceptions()
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ STATIC_CONTRACT_LIMITED_METHOD;
- return (CORProfilerPresent() &&
- (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_MONITOR_EXCEPTIONS));
+ return (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_MONITOR_EXCEPTIONS);
}
-inline BOOL CORProfilerTrackTransitions()
+FORCEINLINE BOOL CORProfilerTrackTransitions()
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ STATIC_CONTRACT_LIMITED_METHOD;
- return (CORProfilerPresent() &&
- (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_MONITOR_CODE_TRANSITIONS));
+ return (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_MONITOR_CODE_TRANSITIONS);
}
-inline BOOL CORProfilerTrackEnterLeave()
+FORCEINLINE BOOL CORProfilerTrackEnterLeave()
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ STATIC_CONTRACT_LIMITED_METHOD;
#ifdef PROF_TEST_ONLY_FORCE_ELT
if ((&g_profControlBlock)->fTestOnlyForceEnterLeave)
return TRUE;
#endif // PROF_TEST_ONLY_FORCE_ELT
- return (CORProfilerPresent() &&
- (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_MONITOR_ENTERLEAVE));
+ return (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_MONITOR_ENTERLEAVE);
}
-inline BOOL CORProfilerTrackCCW()
+FORCEINLINE BOOL CORProfilerTrackCCW()
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ STATIC_CONTRACT_LIMITED_METHOD;
- return (CORProfilerPresent() &&
- (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_MONITOR_CCW));
+ return (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_MONITOR_CCW);
}
-inline BOOL CORProfilerTrackSuspends()
+FORCEINLINE BOOL CORProfilerTrackSuspends()
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ STATIC_CONTRACT_LIMITED_METHOD;
- return (CORProfilerPresent() &&
- (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_MONITOR_SUSPENDS));
+ return (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_MONITOR_SUSPENDS);
}
-inline BOOL CORProfilerDisableInlining()
+FORCEINLINE BOOL CORProfilerDisableInlining()
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ STATIC_CONTRACT_LIMITED_METHOD;
- return (CORProfilerPresent() &&
- (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_DISABLE_INLINING));
+ return (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_DISABLE_INLINING);
}
-inline BOOL CORProfilerDisableOptimizations()
+FORCEINLINE BOOL CORProfilerDisableOptimizations()
{
CONTRACTL
{
@@ -1989,56 +1951,35 @@ inline BOOL CORProfilerDisableOptimizations()
}
CONTRACTL_END;
- return (CORProfilerPresent() &&
- (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_DISABLE_OPTIMIZATIONS));
+ return (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_DISABLE_OPTIMIZATIONS);
}
-inline BOOL CORProfilerUseProfileImages()
+FORCEINLINE BOOL CORProfilerUseProfileImages()
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ STATIC_CONTRACT_LIMITED_METHOD;
#ifdef PROF_TEST_ONLY_FORCE_ELT
if ((&g_profControlBlock)->fTestOnlyForceEnterLeave)
return TRUE;
#endif // PROF_TEST_ONLY_FORCE_ELT
- return (CORProfilerPresent() &&
- (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_REQUIRE_PROFILE_IMAGE));
+ return (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_REQUIRE_PROFILE_IMAGE);
}
-inline BOOL CORProfilerDisableAllNGenImages()
+FORCEINLINE BOOL CORProfilerDisableAllNGenImages()
{
- LIMITED_METHOD_DAC_CONTRACT;
+ STATIC_CONTRACT_LIMITED_METHOD;
- return (CORProfilerPresent() &&
- (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_DISABLE_ALL_NGEN_IMAGES));
+ return (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_DISABLE_ALL_NGEN_IMAGES);
}
-inline BOOL CORProfilerTrackConditionalWeakTableElements()
+FORCEINLINE BOOL CORProfilerTrackConditionalWeakTableElements()
{
- LIMITED_METHOD_DAC_CONTRACT;
+ STATIC_CONTRACT_LIMITED_METHOD;
return CORProfilerTrackGC() && (&g_profControlBlock)->IsCallback5Supported();
}
-// CORProfilerPresentOrInitializing() returns nonzero iff a CLR Profiler is actively
-// loaded and ready to receive callbacks OR a CLR Profiler has loaded just enough that it
-// is ready to receive (or is currently executing inside) its Initialize() callback.
-// Typically, you'll want to use code:CORProfilerPresent instead of this. But there is
-// some internal profiling API code that wants to test for event flags for a profiler
-// that may still be initializing, and this function is appropriate for that code.
-inline BOOL CORProfilerPresentOrInitializing()
-{
- LIMITED_METHOD_CONTRACT;
- return AnyProfilerPassesCondition([](ProfilerInfo *pProfilerInfo) { return pProfilerInfo->curProfStatus.Get() > kProfStatusDetaching; });
-}
-
// These return whether a CLR Profiler has requested the specified functionality.
//
// Note that, unlike the above functions, a profiler that's not done loading (and is
@@ -2047,243 +1988,124 @@ inline BOOL CORProfilerPresentOrInitializing()
// are used primarily during the initialization path to choose between slow / fast-path
// ELT hooks (and later on as part of asserts).
-inline BOOL CORProfilerELT3SlowPathEnabled()
+FORCEINLINE BOOL CORProfilerELT3SlowPathEnabled()
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ STATIC_CONTRACT_LIMITED_METHOD;
- return (CORProfilerPresentOrInitializing() &&
- (&g_profControlBlock)->globalEventMask.IsEventMaskSet((COR_PRF_ENABLE_FUNCTION_ARGS | COR_PRF_ENABLE_FUNCTION_RETVAL | COR_PRF_ENABLE_FRAME_INFO)));
+ return (&g_profControlBlock)->globalEventMask.IsEventMaskSet((COR_PRF_ENABLE_FUNCTION_ARGS | COR_PRF_ENABLE_FUNCTION_RETVAL | COR_PRF_ENABLE_FRAME_INFO));
}
-inline BOOL CORProfilerELT3SlowPathEnterEnabled()
+FORCEINLINE BOOL CORProfilerELT3SlowPathEnterEnabled()
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ STATIC_CONTRACT_LIMITED_METHOD;
- return (CORProfilerPresentOrInitializing() &&
- (&g_profControlBlock)->globalEventMask.IsEventMaskSet((COR_PRF_ENABLE_FUNCTION_ARGS | COR_PRF_ENABLE_FRAME_INFO)));
+ return (&g_profControlBlock)->globalEventMask.IsEventMaskSet((COR_PRF_ENABLE_FUNCTION_ARGS | COR_PRF_ENABLE_FRAME_INFO));
}
-inline BOOL CORProfilerELT3SlowPathLeaveEnabled()
+FORCEINLINE BOOL CORProfilerELT3SlowPathLeaveEnabled()
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ STATIC_CONTRACT_LIMITED_METHOD;
- return (CORProfilerPresentOrInitializing() &&
- (&g_profControlBlock)->globalEventMask.IsEventMaskSet((COR_PRF_ENABLE_FUNCTION_RETVAL | COR_PRF_ENABLE_FRAME_INFO)));
+ return (&g_profControlBlock)->globalEventMask.IsEventMaskSet((COR_PRF_ENABLE_FUNCTION_RETVAL | COR_PRF_ENABLE_FRAME_INFO));
}
-inline BOOL CORProfilerELT3SlowPathTailcallEnabled()
+FORCEINLINE BOOL CORProfilerELT3SlowPathTailcallEnabled()
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ STATIC_CONTRACT_LIMITED_METHOD;
- return (CORProfilerPresentOrInitializing() &&
- (&g_profControlBlock)->globalEventMask.IsEventMaskSet((COR_PRF_ENABLE_FRAME_INFO)));
+ return (&g_profControlBlock)->globalEventMask.IsEventMaskSet((COR_PRF_ENABLE_FRAME_INFO));
}
-inline BOOL CORProfilerELT2FastPathEnterEnabled()
+FORCEINLINE BOOL CORProfilerELT2FastPathEnterEnabled()
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ STATIC_CONTRACT_LIMITED_METHOD;
- return (CORProfilerPresentOrInitializing() &&
- !((&g_profControlBlock)->globalEventMask.IsEventMaskSet((COR_PRF_ENABLE_STACK_SNAPSHOT | COR_PRF_ENABLE_FUNCTION_ARGS | COR_PRF_ENABLE_FRAME_INFO))));
+ return !((&g_profControlBlock)->globalEventMask.IsEventMaskSet((COR_PRF_ENABLE_STACK_SNAPSHOT | COR_PRF_ENABLE_FUNCTION_ARGS | COR_PRF_ENABLE_FRAME_INFO)));
}
-inline BOOL CORProfilerELT2FastPathLeaveEnabled()
+FORCEINLINE BOOL CORProfilerELT2FastPathLeaveEnabled()
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ STATIC_CONTRACT_LIMITED_METHOD;
- return (CORProfilerPresentOrInitializing() &&
- !((&g_profControlBlock)->globalEventMask.IsEventMaskSet((COR_PRF_ENABLE_STACK_SNAPSHOT | COR_PRF_ENABLE_FUNCTION_RETVAL | COR_PRF_ENABLE_FRAME_INFO))));
+ return !((&g_profControlBlock)->globalEventMask.IsEventMaskSet((COR_PRF_ENABLE_STACK_SNAPSHOT | COR_PRF_ENABLE_FUNCTION_RETVAL | COR_PRF_ENABLE_FRAME_INFO)));
}
-inline BOOL CORProfilerELT2FastPathTailcallEnabled()
+FORCEINLINE BOOL CORProfilerELT2FastPathTailcallEnabled()
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ STATIC_CONTRACT_LIMITED_METHOD;
- return (CORProfilerPresentOrInitializing() &&
- !((&g_profControlBlock)->globalEventMask.IsEventMaskSet((COR_PRF_ENABLE_STACK_SNAPSHOT | COR_PRF_ENABLE_FRAME_INFO))));
+ return !((&g_profControlBlock)->globalEventMask.IsEventMaskSet((COR_PRF_ENABLE_STACK_SNAPSHOT | COR_PRF_ENABLE_FRAME_INFO)));
}
-inline BOOL CORProfilerFunctionArgsEnabled()
+FORCEINLINE BOOL CORProfilerFunctionArgsEnabled()
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ STATIC_CONTRACT_LIMITED_METHOD;
- return (CORProfilerPresentOrInitializing() &&
- (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_ENABLE_FUNCTION_ARGS));
+ return (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_ENABLE_FUNCTION_ARGS);
}
-inline BOOL CORProfilerFunctionReturnValueEnabled()
+FORCEINLINE BOOL CORProfilerFunctionReturnValueEnabled()
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ STATIC_CONTRACT_LIMITED_METHOD;
- return (CORProfilerPresentOrInitializing() &&
- (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_ENABLE_FUNCTION_RETVAL));
+ return (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_ENABLE_FUNCTION_RETVAL);
}
-inline BOOL CORProfilerFrameInfoEnabled()
+FORCEINLINE BOOL CORProfilerFrameInfoEnabled()
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ STATIC_CONTRACT_LIMITED_METHOD;
- return (CORProfilerPresentOrInitializing() &&
- (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_ENABLE_FRAME_INFO));
+ return (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_ENABLE_FRAME_INFO);
}
-inline BOOL CORProfilerStackSnapshotEnabled()
+FORCEINLINE BOOL CORProfilerStackSnapshotEnabled()
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ STATIC_CONTRACT_LIMITED_METHOD;
- return (CORProfilerPresentOrInitializing() &&
- (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_ENABLE_STACK_SNAPSHOT));
+ return (&g_profControlBlock)->globalEventMask.IsEventMaskSet(COR_PRF_ENABLE_STACK_SNAPSHOT);
}
-inline BOOL CORProfilerInMemorySymbolsUpdatesEnabled()
+FORCEINLINE BOOL CORProfilerInMemorySymbolsUpdatesEnabled()
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ STATIC_CONTRACT_LIMITED_METHOD;
- return (CORProfilerPresent() &&
- (&g_profControlBlock)->globalEventMask.IsEventMaskHighSet(COR_PRF_HIGH_IN_MEMORY_SYMBOLS_UPDATED));
+ return (&g_profControlBlock)->globalEventMask.IsEventMaskHighSet(COR_PRF_HIGH_IN_MEMORY_SYMBOLS_UPDATED);
}
-inline BOOL CORProfilerTrackDynamicFunctionUnloads()
+FORCEINLINE BOOL CORProfilerTrackDynamicFunctionUnloads()
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ STATIC_CONTRACT_LIMITED_METHOD;
- return (CORProfilerPresent() &&
- (&g_profControlBlock)->globalEventMask.IsEventMaskHighSet(COR_PRF_HIGH_MONITOR_DYNAMIC_FUNCTION_UNLOADS));
+ return (&g_profControlBlock)->globalEventMask.IsEventMaskHighSet(COR_PRF_HIGH_MONITOR_DYNAMIC_FUNCTION_UNLOADS);
}
-inline BOOL CORProfilerDisableTieredCompilation()
+FORCEINLINE BOOL CORProfilerDisableTieredCompilation()
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ STATIC_CONTRACT_LIMITED_METHOD;
- return (CORProfilerPresent() &&
- (&g_profControlBlock)->globalEventMask.IsEventMaskHighSet(COR_PRF_HIGH_DISABLE_TIERED_COMPILATION));
+ return (&g_profControlBlock)->globalEventMask.IsEventMaskHighSet(COR_PRF_HIGH_DISABLE_TIERED_COMPILATION);
}
-inline BOOL CORProfilerTrackBasicGC()
+FORCEINLINE BOOL CORProfilerTrackBasicGC()
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ STATIC_CONTRACT_LIMITED_METHOD;
- return (CORProfilerPresent() &&
- (&g_profControlBlock)->globalEventMask.IsEventMaskHighSet(COR_PRF_HIGH_BASIC_GC));
+ return (&g_profControlBlock)->globalEventMask.IsEventMaskHighSet(COR_PRF_HIGH_BASIC_GC);
}
-inline BOOL CORProfilerTrackGCMovedObjects()
+FORCEINLINE BOOL CORProfilerTrackGCMovedObjects()
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ STATIC_CONTRACT_LIMITED_METHOD;
- return (CORProfilerPresent() &&
- (&g_profControlBlock)->globalEventMask.IsEventMaskHighSet(COR_PRF_HIGH_MONITOR_GC_MOVED_OBJECTS));
+ return (&g_profControlBlock)->globalEventMask.IsEventMaskHighSet(COR_PRF_HIGH_MONITOR_GC_MOVED_OBJECTS);
}
-inline BOOL CORProfilerTrackEventPipe()
+FORCEINLINE BOOL CORProfilerTrackEventPipe()
{
- CONTRACTL
- {
- NOTHROW;
- GC_NOTRIGGER;
- CANNOT_TAKE_LOCK;
- }
- CONTRACTL_END;
+ STATIC_CONTRACT_LIMITED_METHOD;
- return (CORProfilerPresent() &&
- (&g_profControlBlock)->globalEventMask.IsEventMaskHighSet(COR_PRF_HIGH_MONITOR_EVENT_PIPE));
+ return (&g_profControlBlock)->globalEventMask.IsEventMaskHighSet(COR_PRF_HIGH_MONITOR_EVENT_PIPE);
}
#if defined(PROFILING_SUPPORTED) && !defined(CROSSGEN_COMPILE)
diff --git a/src/coreclr/inc/safemath.h b/src/coreclr/inc/safemath.h
index 3c020de6884781..f1b0300d581954 100644
--- a/src/coreclr/inc/safemath.h
+++ b/src/coreclr/inc/safemath.h
@@ -481,6 +481,9 @@ template class ClrSafeInt
Which ought to inline nicely
*/
// Returns true if safe, false for overflow.
+#if defined(_MSC_VER) && defined(HOST_ARM64) // Workaround for https://github.com/dotnet/runtime/issues/93442
+#pragma optimize("", off)
+#endif
static bool multiply(T lhs, T rhs, T &result)
{
if(Is64Bit())
@@ -675,6 +678,9 @@ template class ClrSafeInt
}
}
}
+#if defined(_MSC_VER) && defined(HOST_ARM64) // Workaround for https://github.com/dotnet/runtime/issues/93442
+#pragma optimize("", on)
+#endif
// Returns true if safe, false on overflow
static inline bool addition(T lhs, T rhs, T &result)
diff --git a/src/coreclr/inc/winwrap.h b/src/coreclr/inc/winwrap.h
index 4d97618984fd2f..96fdb678ddbd7e 100644
--- a/src/coreclr/inc/winwrap.h
+++ b/src/coreclr/inc/winwrap.h
@@ -220,7 +220,6 @@
//Long Files will not work on these till redstone
#define WszGetCurrentDirectory GetCurrentDirectoryWrapper
#define WszGetTempFileName GetTempFileNameWrapper
-#define WszGetTempPath GetTempPathWrapper
//APIS which have a buffer as an out parameter
#define WszGetEnvironmentVariable GetEnvironmentVariableWrapper
diff --git a/src/coreclr/interop/comwrappers.cpp b/src/coreclr/interop/comwrappers.cpp
index 5600b6a69f50dd..aad3d6fa235913 100644
--- a/src/coreclr/interop/comwrappers.cpp
+++ b/src/coreclr/interop/comwrappers.cpp
@@ -791,17 +791,6 @@ void NativeObjectWrapperContext::Destroy(_In_ NativeObjectWrapperContext* wrappe
{
_ASSERTE(wrapper != nullptr);
- // Check if the tracker object manager should be informed prior to being destroyed.
- IReferenceTracker* trackerMaybe = wrapper->GetReferenceTracker();
- if (trackerMaybe != nullptr)
- {
- // We only call this during a GC so ignore the failure as
- // there is no way we can handle it at this point.
- HRESULT hr = TrackerObjectManager::BeforeWrapperDestroyed(trackerMaybe);
- _ASSERTE(SUCCEEDED(hr));
- (void)hr;
- }
-
// Manually trigger the destructor since placement
// new was used to allocate the object.
wrapper->~NativeObjectWrapperContext();
diff --git a/src/coreclr/interop/comwrappers.hpp b/src/coreclr/interop/comwrappers.hpp
index bd383beabc5dce..6217b0ebe7e7b9 100644
--- a/src/coreclr/interop/comwrappers.hpp
+++ b/src/coreclr/interop/comwrappers.hpp
@@ -212,8 +212,8 @@ class TrackerObjectManager
// Called after wrapper has been created.
static HRESULT AfterWrapperCreated(_In_ IReferenceTracker* obj);
- // Called before wrapper is about to be destroyed (the same lifetime as short weak handle).
- static HRESULT BeforeWrapperDestroyed(_In_ IReferenceTracker* obj);
+ // Called before wrapper is about to be finalized (the same lifetime as short weak handle).
+ static HRESULT BeforeWrapperFinalized(_In_ IReferenceTracker* obj);
public:
// Begin the reference tracking process for external objects.
diff --git a/src/coreclr/interop/inc/interoplib.h b/src/coreclr/interop/inc/interoplib.h
index 96f157929e0a5c..37237f5f7cab3c 100644
--- a/src/coreclr/interop/inc/interoplib.h
+++ b/src/coreclr/interop/inc/interoplib.h
@@ -87,8 +87,12 @@ namespace InteropLib
_In_ size_t contextSize,
_Out_ ExternalWrapperResult* result) noexcept;
- // Destroy the supplied wrapper.
- void DestroyWrapperForExternal(_In_ void* context) noexcept;
+ // Inform the wrapper it is being collected.
+ void NotifyWrapperForExternalIsBeingCollected(_In_ void* context) noexcept;
+
+ // Destroy the supplied wrapper.
+ // Optionally notify the wrapper of collection at the same time.
+ void DestroyWrapperForExternal(_In_ void* context, _In_ bool notifyIsBeingCollected = false) noexcept;
// Separate the supplied wrapper from the tracker runtime.
void SeparateWrapperFromTrackerRuntime(_In_ void* context) noexcept;
diff --git a/src/coreclr/interop/interoplib.cpp b/src/coreclr/interop/interoplib.cpp
index 7af7af9e7adcf1..db9e9800fbd46e 100644
--- a/src/coreclr/interop/interoplib.cpp
+++ b/src/coreclr/interop/interoplib.cpp
@@ -166,15 +166,37 @@ namespace InteropLib
return S_OK;
}
- void DestroyWrapperForExternal(_In_ void* contextMaybe) noexcept
+ void NotifyWrapperForExternalIsBeingCollected(_In_ void* contextMaybe) noexcept
+ {
+ NativeObjectWrapperContext* context = NativeObjectWrapperContext::MapFromRuntimeContext(contextMaybe);
+
+ // A caller should not be destroying a context without knowing if the context is valid.
+ _ASSERTE(context != nullptr);
+
+ // Check if the tracker object manager should be informed of collection.
+ IReferenceTracker* trackerMaybe = context->GetReferenceTracker();
+ if (trackerMaybe != nullptr)
+ {
+ // We only call this during a GC so ignore the failure as
+ // there is no way we can handle it at this point.
+ HRESULT hr = TrackerObjectManager::BeforeWrapperFinalized(trackerMaybe);
+ _ASSERTE(SUCCEEDED(hr));
+ (void)hr;
+ }
+ }
+
+ void DestroyWrapperForExternal(_In_ void* contextMaybe, _In_ bool notifyIsBeingCollected) noexcept
{
NativeObjectWrapperContext* context = NativeObjectWrapperContext::MapFromRuntimeContext(contextMaybe);
// A caller should not be destroying a context without knowing if the context is valid.
_ASSERTE(context != nullptr);
- NativeObjectWrapperContext::Destroy(context);
- }
+ if (notifyIsBeingCollected)
+ NotifyWrapperForExternalIsBeingCollected(contextMaybe);
+
+ NativeObjectWrapperContext::Destroy(context);
+ }
void SeparateWrapperFromTrackerRuntime(_In_ void* contextMaybe) noexcept
{
diff --git a/src/coreclr/interop/trackerobjectmanager.cpp b/src/coreclr/interop/trackerobjectmanager.cpp
index 0a199b71690a46..5214e6b8349d18 100644
--- a/src/coreclr/interop/trackerobjectmanager.cpp
+++ b/src/coreclr/interop/trackerobjectmanager.cpp
@@ -305,13 +305,13 @@ HRESULT TrackerObjectManager::AfterWrapperCreated(_In_ IReferenceTracker* obj)
return S_OK;
}
-HRESULT TrackerObjectManager::BeforeWrapperDestroyed(_In_ IReferenceTracker* obj)
+HRESULT TrackerObjectManager::BeforeWrapperFinalized(_In_ IReferenceTracker* obj)
{
_ASSERTE(obj != nullptr);
HRESULT hr;
- // Notify tracker runtime that we are about to destroy a wrapper
+ // Notify tracker runtime that we are about to finalize a wrapper
// (same timing as short weak handle) for this object.
// They need this information to disconnect weak refs and stop firing events,
// so that they can avoid resurrecting the object.
diff --git a/src/coreclr/jit/ICorJitInfo_API_names.h b/src/coreclr/jit/ICorJitInfo_API_names.h
index f29e37f91baae3..fec125b78ae06e 100644
--- a/src/coreclr/jit/ICorJitInfo_API_names.h
+++ b/src/coreclr/jit/ICorJitInfo_API_names.h
@@ -176,5 +176,6 @@ DEF_CLR_API(recordRelocation)
DEF_CLR_API(getRelocTypeHint)
DEF_CLR_API(getExpectedTargetArchitecture)
DEF_CLR_API(getJitFlags)
+DEF_CLR_API(doesFieldBelongToClass)
#undef DEF_CLR_API
diff --git a/src/coreclr/jit/ICorJitInfo_API_wrapper.hpp b/src/coreclr/jit/ICorJitInfo_API_wrapper.hpp
index 66292765480a38..f902b3b99ecd6c 100644
--- a/src/coreclr/jit/ICorJitInfo_API_wrapper.hpp
+++ b/src/coreclr/jit/ICorJitInfo_API_wrapper.hpp
@@ -1690,6 +1690,16 @@ uint32_t WrapICorJitInfo::getJitFlags(
return temp;
}
+bool WrapICorJitInfo::doesFieldBelongToClass(
+ CORINFO_FIELD_HANDLE fldHnd,
+ CORINFO_CLASS_HANDLE cls)
+{
+ API_ENTER(doesFieldBelongToClass);
+ bool temp = wrapHnd->doesFieldBelongToClass(fldHnd, cls);
+ API_LEAVE(doesFieldBelongToClass);
+ return temp;
+}
+
/**********************************************************************************/
// clang-format on
/**********************************************************************************/
diff --git a/src/coreclr/jit/bitsetasshortlong.h b/src/coreclr/jit/bitsetasshortlong.h
index dce54d6a5ca3ab..365cf346a10ac2 100644
--- a/src/coreclr/jit/bitsetasshortlong.h
+++ b/src/coreclr/jit/bitsetasshortlong.h
@@ -345,7 +345,7 @@ class BitSetOps*BitSetType*/ BitSetShortLongRep,
{
if (IsShort(env))
{
- (size_t&)out = (size_t)out & ((size_t)gen | (size_t)in);
+ out = (BitSetShortLongRep)((size_t)out & ((size_t)gen | (size_t)in));
}
else
{
@@ -361,7 +361,7 @@ class BitSetOps*BitSetType*/ BitSetShortLongRep,
{
if (IsShort(env))
{
- (size_t&)in = (size_t)use | ((size_t)out & ~(size_t)def);
+ in = (BitSetShortLongRep)((size_t)use | ((size_t)out & ~(size_t)def));
}
else
{
diff --git a/src/coreclr/jit/clrjit.natvis b/src/coreclr/jit/clrjit.natvis
index 703d49f2457070..1a62108f08267a 100644
--- a/src/coreclr/jit/clrjit.natvis
+++ b/src/coreclr/jit/clrjit.natvis
@@ -65,8 +65,8 @@ Documentation for VS debugger format specifiers: https://docs.microsoft.com/en-u
- [{lvType,en}]
- [{lvType,en}-{lvReason,s}]
+ [V{lvSlotNum,d}: {lvType,en}]
+ [V{lvSlotNum,d}: {lvType,en}-{lvReason,s}]
diff --git a/src/coreclr/jit/codegenarmarch.cpp b/src/coreclr/jit/codegenarmarch.cpp
index 1989d1d2036a43..1ce113357096c9 100644
--- a/src/coreclr/jit/codegenarmarch.cpp
+++ b/src/coreclr/jit/codegenarmarch.cpp
@@ -681,12 +681,6 @@ void CodeGen::genIntrinsic(GenTree* treeNode)
void CodeGen::genPutArgStk(GenTreePutArgStk* treeNode)
{
assert(treeNode->OperIs(GT_PUTARG_STK));
- GenTree* source = treeNode->gtOp1;
-#if !defined(OSX_ARM64_ABI)
- var_types targetType = genActualType(source->TypeGet());
-#else
- var_types targetType = source->TypeGet();
-#endif
emitter* emit = GetEmitter();
// This is the varNum for our store operations,
@@ -730,11 +724,13 @@ void CodeGen::genPutArgStk(GenTreePutArgStk* treeNode)
argOffsetMax = compiler->lvaOutgoingArgSpaceSize;
}
- bool isStruct = (targetType == TYP_STRUCT) || (source->OperGet() == GT_FIELD_LIST);
+ GenTree* source = treeNode->gtGetOp1();
+
+ bool isStruct = source->TypeIs(TYP_STRUCT) || (source->OperGet() == GT_FIELD_LIST);
if (!isStruct) // a normal non-Struct argument
{
- if (varTypeIsSIMD(targetType))
+ if (varTypeIsSIMD(source->TypeGet()))
{
assert(!source->isContained());
@@ -753,7 +749,7 @@ void CodeGen::genPutArgStk(GenTreePutArgStk* treeNode)
else
#endif // OSX_ARM64_ABI
{
- emitAttr storeAttr = emitTypeSize(targetType);
+ emitAttr storeAttr = emitTypeSize(source->TypeGet());
emit->emitIns_S_R(INS_str, storeAttr, srcReg, varNumOut, argOffsetOut);
argOffsetOut += EA_SIZE_IN_BYTES(storeAttr);
}
@@ -761,14 +757,17 @@ void CodeGen::genPutArgStk(GenTreePutArgStk* treeNode)
return;
}
-#if defined(OSX_ARM64_ABI)
+ var_types slotType = genActualType(source);
+#ifdef OSX_ARM64_ABI
+ // Small typed args do not get their own full stack slots, so make
+ // sure we do not overwrite adjacent arguments.
switch (treeNode->GetStackByteSize())
{
case 1:
- targetType = TYP_BYTE;
+ slotType = TYP_BYTE;
break;
case 2:
- targetType = TYP_SHORT;
+ slotType = TYP_SHORT;
break;
default:
assert(treeNode->GetStackByteSize() >= 4);
@@ -776,8 +775,8 @@ void CodeGen::genPutArgStk(GenTreePutArgStk* treeNode)
}
#endif
- instruction storeIns = ins_Store(targetType);
- emitAttr storeAttr = emitTypeSize(targetType);
+ instruction storeIns = ins_Store(slotType);
+ emitAttr storeAttr = emitTypeSize(slotType);
// If it is contained then source must be the integer constant zero
if (source->isContained())
@@ -797,7 +796,7 @@ void CodeGen::genPutArgStk(GenTreePutArgStk* treeNode)
genConsumeReg(source);
emit->emitIns_S_R(storeIns, storeAttr, source->GetRegNum(), varNumOut, argOffsetOut);
#ifdef TARGET_ARM
- if (targetType == TYP_LONG)
+ if (source->TypeIs(TYP_LONG))
{
// This case currently only occurs for double types that are passed as TYP_LONG;
// actual long types would have been decomposed by now.
diff --git a/src/coreclr/jit/codegencommon.cpp b/src/coreclr/jit/codegencommon.cpp
index dcf1768c60a7dd..4ba948ec4793c5 100644
--- a/src/coreclr/jit/codegencommon.cpp
+++ b/src/coreclr/jit/codegencommon.cpp
@@ -486,13 +486,14 @@ regMaskTP CodeGenInterface::genGetRegMask(const LclVarDsc* varDsc)
assert(varDsc->lvIsInReg());
- if (varTypeUsesFloatReg(varDsc->TypeGet()))
+ regNumber reg = varDsc->GetRegNum();
+ if (genIsValidFloatReg(reg))
{
- regMask = genRegMaskFloat(varDsc->GetRegNum(), varDsc->TypeGet());
+ regMask = genRegMaskFloat(reg, varDsc->GetRegisterType());
}
else
{
- regMask = genRegMask(varDsc->GetRegNum());
+ regMask = genRegMask(reg);
}
return regMask;
}
@@ -7148,8 +7149,9 @@ void CodeGen::genFnProlog()
if (isInReg)
{
- regMaskTP regMask = genRegMask(varDsc->GetRegNum());
- if (!varDsc->IsFloatRegType())
+ regNumber regForVar = varDsc->GetRegNum();
+ regMaskTP regMask = genRegMask(regForVar);
+ if (!genIsValidFloatReg(regForVar))
{
initRegs |= regMask;
@@ -12551,6 +12553,17 @@ void CodeGen::genPoisonFrame(regMaskTP regLiveIn)
assert(varDsc->lvOnFrame);
+ int size = (int)compiler->lvaLclSize(varNum);
+
+ if ((size / TARGET_POINTER_SIZE) > 16)
+ {
+ // For very large structs the offsets in the movs we emit below can
+ // grow too large to be handled properly by JIT. Furthermore, while
+ // this is only debug code, for very large structs this can bloat
+ // the code too much due to the singular movs used.
+ continue;
+ }
+
if (!hasPoisonImm)
{
#ifdef TARGET_64BIT
@@ -12568,8 +12581,7 @@ void CodeGen::genPoisonFrame(regMaskTP regLiveIn)
#else
int addr = 0;
#endif
- int size = (int)compiler->lvaLclSize(varNum);
- int end = addr + size;
+ int end = addr + size;
for (int offs = addr; offs < end;)
{
#ifdef TARGET_64BIT
diff --git a/src/coreclr/jit/codegenlinear.cpp b/src/coreclr/jit/codegenlinear.cpp
index f58a8db0997e3c..94da35b01c172e 100644
--- a/src/coreclr/jit/codegenlinear.cpp
+++ b/src/coreclr/jit/codegenlinear.cpp
@@ -51,19 +51,16 @@ void CodeGen::genInitializeRegisterState()
continue;
}
- // Is this a floating-point argument?
- if (varDsc->IsFloatRegType())
+ if (varDsc->lvAddrExposed)
{
continue;
}
- noway_assert(!varTypeUsesFloatReg(varDsc->TypeGet()));
-
// Mark the register as holding the variable
- assert(varDsc->GetRegNum() != REG_STK);
- if (!varDsc->lvAddrExposed)
+ regNumber reg = varDsc->GetRegNum();
+ if (genIsValidIntReg(reg))
{
- regSet.verifyRegUsed(varDsc->GetRegNum());
+ regSet.verifyRegUsed(reg);
}
}
}
diff --git a/src/coreclr/jit/codegenxarch.cpp b/src/coreclr/jit/codegenxarch.cpp
index f268c6a066a86a..759f1037ca2da7 100644
--- a/src/coreclr/jit/codegenxarch.cpp
+++ b/src/coreclr/jit/codegenxarch.cpp
@@ -1891,7 +1891,7 @@ void CodeGen::genCodeForTreeNode(GenTree* treeNode)
// genMultiRegStoreToSIMDLocal: store multi-reg value to a single-reg SIMD local
//
// Arguments:
-// lclNode - GentreeLclVar of GT_STORE_LCL_VAR
+// lclNode - GenTreeLclVar of GT_STORE_LCL_VAR
//
// Return Value:
// None
@@ -1996,6 +1996,7 @@ void CodeGen::genMultiRegStoreToSIMDLocal(GenTreeLclVar* lclNode)
else
{
regNumber tempXmm = lclNode->GetSingleTempReg();
+ assert(tempXmm != targetReg);
inst_Mov(TYP_FLOAT, tempXmm, reg1, /* canSkip */ false);
GetEmitter()->emitIns_SIMD_R_R_R(INS_punpckldq, size, targetReg, targetReg, tempXmm);
}
diff --git a/src/coreclr/jit/compiler.cpp b/src/coreclr/jit/compiler.cpp
index 2c35262a5df0db..5422fa5a8d6818 100644
--- a/src/coreclr/jit/compiler.cpp
+++ b/src/coreclr/jit/compiler.cpp
@@ -2170,7 +2170,7 @@ VarName Compiler::compVarName(regNumber reg, bool isFloatReg)
/* If the variable is not in a register, or not in the register we're looking for, quit. */
/* Also, if it is a compiler generated variable (i.e. slot# > info.compVarScopesCount), don't bother. */
if ((varDsc->lvRegister != 0) && (varDsc->GetRegNum() == reg) &&
- (varDsc->IsFloatRegType() || !isFloatReg) && (varDsc->lvSlotNum < info.compVarScopesCount))
+ (varDsc->lvSlotNum < info.compVarScopesCount))
{
/* check if variable in that register is live */
if (VarSetOps::IsMember(this, compCurLife, varDsc->lvVarIndex))
@@ -9175,6 +9175,11 @@ void cTreeFlags(Compiler* comp, GenTree* tree)
{
chars += printf("[BOX_VALUE]");
}
+
+ if (tree->gtFlags & GTF_BOX_CLONED)
+ {
+ chars += printf("[BOX_CLONED]");
+ }
break;
case GT_CNS_INT:
diff --git a/src/coreclr/jit/compiler.h b/src/coreclr/jit/compiler.h
index f843a6233e907b..0ccefbe4dcd08a 100644
--- a/src/coreclr/jit/compiler.h
+++ b/src/coreclr/jit/compiler.h
@@ -502,6 +502,9 @@ class LclVarDsc
unsigned char lvUnusedStruct : 1; // All references to this promoted struct are through its field locals.
// I.e. there is no longer any reference to the struct directly.
// In this case we can simply remove this struct local.
+
+ unsigned char lvUndoneStructPromotion : 1; // The struct promotion was undone and hence there should be no
+ // reference to the fields of this struct.
#endif
unsigned char lvLRACandidate : 1; // Tracked for linear scan register allocation purposes
@@ -958,10 +961,6 @@ class LclVarDsc
Compiler* pComp,
RefCountState state = RCS_NORMAL,
bool propagate = true);
- bool IsFloatRegType() const
- {
- return varTypeUsesFloatReg(lvType) || lvIsHfaRegArg();
- }
var_types GetHfaType() const
{
@@ -5204,6 +5203,8 @@ class Compiler
// Does value-numbering for a block assignment.
void fgValueNumberBlockAssignment(GenTree* tree);
+ bool fgValueNumberIsStructReinterpretation(GenTreeLclVarCommon* lhsLclVarTree, GenTreeLclVarCommon* rhsLclVarTree);
+
// Does value-numbering for a cast tree.
void fgValueNumberCastTree(GenTree* tree);
@@ -7612,8 +7613,9 @@ class Compiler
};
bool optIsStackLocalInvariant(unsigned loopNum, unsigned lclNum);
- bool optExtractArrIndex(GenTree* tree, ArrIndex* result, unsigned lhsNum);
- bool optReconstructArrIndex(GenTree* tree, ArrIndex* result, unsigned lhsNum);
+ bool optExtractArrIndex(GenTree* tree, ArrIndex* result, unsigned lhsNum, bool* topLevelIsFinal);
+ bool optReconstructArrIndexHelp(GenTree* tree, ArrIndex* result, unsigned lhsNum, bool* topLevelIsFinal);
+ bool optReconstructArrIndex(GenTree* tree, ArrIndex* result);
bool optIdentifyLoopOptInfo(unsigned loopNum, LoopCloneContext* context);
static fgWalkPreFn optCanOptimizeByLoopCloningVisitor;
fgWalkResult optCanOptimizeByLoopCloning(GenTree* tree, LoopCloneVisitorInfo* info);
@@ -8910,15 +8912,7 @@ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
}
private:
- unsigned getSIMDInitTempVarNum()
- {
- if (lvaSIMDInitTempVarNum == BAD_VAR_NUM)
- {
- lvaSIMDInitTempVarNum = lvaGrabTempWithImplicitUse(false DEBUGARG("SIMDInitTempVar"));
- lvaTable[lvaSIMDInitTempVarNum].lvType = getSIMDVectorType();
- }
- return lvaSIMDInitTempVarNum;
- }
+ unsigned getSIMDInitTempVarNum(var_types simdType);
#else // !FEATURE_SIMD
bool isOpaqueSIMDLclVar(LclVarDsc* varDsc)
diff --git a/src/coreclr/jit/compiler.hpp b/src/coreclr/jit/compiler.hpp
index ed0b0940fee66b..d605339b77ca23 100644
--- a/src/coreclr/jit/compiler.hpp
+++ b/src/coreclr/jit/compiler.hpp
@@ -3488,7 +3488,7 @@ inline bool Compiler::LoopDsc::lpArrLenLimit(Compiler* comp, ArrIndex* index) co
// We have a[i].length, extract a[i] pattern.
else if (limit->AsArrLen()->ArrRef()->gtOper == GT_COMMA)
{
- return comp->optReconstructArrIndex(limit->AsArrLen()->ArrRef(), index, BAD_VAR_NUM);
+ return comp->optReconstructArrIndex(limit->AsArrLen()->ArrRef(), index);
}
return false;
}
diff --git a/src/coreclr/jit/emitxarch.cpp b/src/coreclr/jit/emitxarch.cpp
index 16ad448cd3d768..97cbc11c3cb93c 100644
--- a/src/coreclr/jit/emitxarch.cpp
+++ b/src/coreclr/jit/emitxarch.cpp
@@ -10370,7 +10370,7 @@ BYTE* emitter::emitOutputAM(BYTE* dst, instrDesc* id, code_t code, CnsVal* addc)
noway_assert((int)dsp == dsp);
// This requires, specifying a SIB byte after ModRM byte.
- if (EncodedBySSE38orSSE3A(ins))
+ if (EncodedBySSE38orSSE3A(ins) || (ins == INS_crc32))
{
dst += emitOutputByte(dst, code | 0x04);
}
diff --git a/src/coreclr/jit/fgehopt.cpp b/src/coreclr/jit/fgehopt.cpp
index 06abf455ac2df1..18cb78ac12e612 100644
--- a/src/coreclr/jit/fgehopt.cpp
+++ b/src/coreclr/jit/fgehopt.cpp
@@ -99,6 +99,14 @@ PhaseStatus Compiler::fgRemoveEmptyFinally()
continue;
}
+ // If the finally's block jumps back to itself, then it is not empty.
+ if ((firstBlock->bbJumpKind == BBJ_ALWAYS) && firstBlock->bbJumpDest == firstBlock)
+ {
+ JITDUMP("EH#%u finally has basic block that jumps to itself; skipping.\n", XTnum);
+ XTnum++;
+ continue;
+ }
+
// Limit for now to finallys that contain only a GT_RETFILT.
bool isEmpty = true;
diff --git a/src/coreclr/jit/gentree.cpp b/src/coreclr/jit/gentree.cpp
index 22e46b6a819eb2..58352e5a8eefcf 100644
--- a/src/coreclr/jit/gentree.cpp
+++ b/src/coreclr/jit/gentree.cpp
@@ -7422,7 +7422,11 @@ GenTree* Compiler::gtNewBitCastNode(var_types type, GenTree* arg)
// Return Value:
// Returns GT_ALLOCOBJ node that will be later morphed into an
// allocation helper call or local variable allocation on the stack.
-
+//
+// Node creation can fail for inlinees when the type described by pResolvedToken
+// can't be represented in jitted code. If this happens, this method will return
+// nullptr.
+//
GenTreeAllocObj* Compiler::gtNewAllocObjNode(CORINFO_RESOLVED_TOKEN* pResolvedToken, bool useParent)
{
const bool mustRestoreHandle = true;
@@ -7475,6 +7479,7 @@ GenTreeAllocObj* Compiler::gtNewAllocObjNode(CORINFO_RESOLVED_TOKEN* pResolvedTo
#ifdef FEATURE_READYTORUN_COMPILER
if (usingReadyToRunHelper)
{
+ assert(lookup.addr != nullptr);
allocObj->gtEntryPoint = lookup;
}
#endif
@@ -7879,6 +7884,9 @@ GenTree* Compiler::gtCloneExpr(
copy = new (this, GT_ALLOCOBJ)
GenTreeAllocObj(tree->TypeGet(), asAllocObj->gtNewHelper, asAllocObj->gtHelperHasSideEffects,
asAllocObj->gtAllocObjClsHnd, asAllocObj->gtOp1);
+#ifdef FEATURE_READYTORUN_COMPILER
+ copy->AsAllocObj()->gtEntryPoint = asAllocObj->gtEntryPoint;
+#endif
}
break;
@@ -7927,6 +7935,8 @@ GenTree* Compiler::gtCloneExpr(
copy = new (this, GT_BOX)
GenTreeBox(tree->TypeGet(), tree->AsOp()->gtOp1, tree->AsBox()->gtAsgStmtWhenInlinedBoxValue,
tree->AsBox()->gtCopyStmtWhenInlinedBoxValue);
+ tree->AsBox()->SetCloned();
+ copy->AsBox()->SetCloned();
break;
case GT_INTRINSIC:
@@ -8157,6 +8167,7 @@ GenTree* Compiler::gtCloneExpr(
gtCloneExpr(tree->AsBoundsChk()->gtArrLen, addFlags, deepVarNum, deepVarVal),
tree->AsBoundsChk()->gtThrowKind);
copy->AsBoundsChk()->gtIndRngFailBB = tree->AsBoundsChk()->gtIndRngFailBB;
+ copy->AsBoundsChk()->gtInxType = tree->AsBoundsChk()->gtInxType;
break;
case GT_STORE_DYN_BLK:
@@ -13825,6 +13836,13 @@ GenTree* Compiler::gtTryRemoveBoxUpstreamEffects(GenTree* op, BoxRemovalOptions
return nullptr;
}
+ // If this box is no longer single-use, bail.
+ if (box->WasCloned())
+ {
+ JITDUMP(" bailing; unsafe to remove box that has been cloned\n");
+ return nullptr;
+ }
+
// If we're eventually going to return the type handle, remember it now.
GenTree* boxTypeHandle = nullptr;
if ((options == BR_REMOVE_AND_NARROW_WANT_TYPE_HANDLE) || (options == BR_DONT_REMOVE_WANT_TYPE_HANDLE))
@@ -18894,10 +18912,45 @@ bool GenTree::isCommutativeHWIntrinsic() const
assert(gtOper == GT_HWINTRINSIC);
#ifdef TARGET_XARCH
- return HWIntrinsicInfo::IsCommutative(AsHWIntrinsic()->gtHWIntrinsicId);
-#else
- return false;
+ const GenTreeHWIntrinsic* node = AsHWIntrinsic();
+ NamedIntrinsic id = node->gtHWIntrinsicId;
+
+ if (HWIntrinsicInfo::IsCommutative(id))
+ {
+ return true;
+ }
+
+ if (HWIntrinsicInfo::IsMaybeCommutative(id))
+ {
+ switch (id)
+ {
+ case NI_SSE_Max:
+ case NI_SSE_Min:
+ {
+ return false;
+ }
+
+ case NI_SSE2_Max:
+ case NI_SSE2_Min:
+ {
+ return !varTypeIsFloating(node->GetSimdBaseType());
+ }
+
+ case NI_AVX_Max:
+ case NI_AVX_Min:
+ {
+ return false;
+ }
+
+ default:
+ {
+ unreached();
+ }
+ }
+ }
#endif // TARGET_XARCH
+
+ return false;
}
bool GenTree::isContainableHWIntrinsic() const
diff --git a/src/coreclr/jit/gentree.h b/src/coreclr/jit/gentree.h
index 2c8ad35b8cdb0f..1405b91d151889 100644
--- a/src/coreclr/jit/gentree.h
+++ b/src/coreclr/jit/gentree.h
@@ -543,6 +543,7 @@ enum GenTreeFlags : unsigned int
GTF_QMARK_CAST_INSTOF = 0x80000000, // GT_QMARK -- Is this a top (not nested) level qmark created for
// castclass or instanceof?
+ GTF_BOX_CLONED = 0x40000000, // GT_BOX -- this box and its operand has been cloned, cannot assume it to be single-use anymore
GTF_BOX_VALUE = 0x80000000, // GT_BOX -- "box" is on a value type
GTF_ICON_HDL_MASK = 0xF0000000, // Bits used by handle types below
@@ -3638,6 +3639,16 @@ struct GenTreeBox : public GenTreeUnOp
{
}
#endif
+
+ bool WasCloned()
+ {
+ return (gtFlags & GTF_BOX_CLONED) != 0;
+ }
+
+ void SetCloned()
+ {
+ gtFlags |= GTF_BOX_CLONED;
+ }
};
/* gtField -- data member ref (GT_FIELD) */
@@ -5341,14 +5352,21 @@ struct GenTreeBoundsChk : public GenTree
BasicBlock* gtIndRngFailBB; // Basic block to jump to for array-index-out-of-range
SpecialCodeKind gtThrowKind; // Kind of throw block to branch to on failure
+ // Store some information about the array element type that was in the GT_INDEX node before morphing.
+ // Note that this information is also stored in the m_arrayInfoMap of the morphed IND node (that
+ // is marked with GTF_IND_ARR_INDEX), but that can be hard to find.
+ var_types gtInxType; // Save the GT_INDEX type
+
GenTreeBoundsChk(genTreeOps oper, var_types type, GenTree* index, GenTree* arrLen, SpecialCodeKind kind)
- : GenTree(oper, type), gtIndex(index), gtArrLen(arrLen), gtIndRngFailBB(nullptr), gtThrowKind(kind)
+ : GenTree(oper, type), gtIndex(index), gtArrLen(arrLen), gtIndRngFailBB(nullptr), gtThrowKind(kind),
+ gtInxType(TYP_UNKNOWN)
{
// Effects flags propagate upwards.
gtFlags |= (index->gtFlags & GTF_ALL_EFFECT);
gtFlags |= (arrLen->gtFlags & GTF_ALL_EFFECT);
gtFlags |= GTF_EXCEPT;
}
+
#if DEBUGGABLE_GENTREE
GenTreeBoundsChk() : GenTree()
{
diff --git a/src/coreclr/jit/hwintrinsic.h b/src/coreclr/jit/hwintrinsic.h
index 0b35ca719b6e2f..7b1c2a9fbfa3bf 100644
--- a/src/coreclr/jit/hwintrinsic.h
+++ b/src/coreclr/jit/hwintrinsic.h
@@ -141,6 +141,11 @@ enum HWIntrinsicFlag : unsigned int
// all the intrinsic that have explicit memory load/store semantics should have this flag
HW_Flag_NoContainment = 0x8000,
+ // MaybeCommutative
+ // - if a binary-op intrinsic is maybe commutative (e.g., Max or Min for float/double), its op1 can possibly be
+ // contained
+ HW_Flag_MaybeCommutative = 0x80000,
+
#elif defined(TARGET_ARM64)
// The intrinsic has an immediate operand
// - the value can be (and should be) encoded in a corresponding instruction when the operand value is constant
@@ -597,6 +602,18 @@ struct HWIntrinsicInfo
return (flags & HW_Flag_Commutative) != 0;
}
+ static bool IsMaybeCommutative(NamedIntrinsic id)
+ {
+ HWIntrinsicFlag flags = lookupFlags(id);
+#if defined(TARGET_XARCH)
+ return (flags & HW_Flag_MaybeCommutative) != 0;
+#elif defined(TARGET_ARM64)
+ return false;
+#else
+#error Unsupported platform
+#endif
+ }
+
static bool RequiresCodegen(NamedIntrinsic id)
{
HWIntrinsicFlag flags = lookupFlags(id);
diff --git a/src/coreclr/jit/hwintrinsiclistxarch.h b/src/coreclr/jit/hwintrinsiclistxarch.h
index eb9bac12e3051c..66cc7c4d211231 100644
--- a/src/coreclr/jit/hwintrinsiclistxarch.h
+++ b/src/coreclr/jit/hwintrinsiclistxarch.h
@@ -158,9 +158,9 @@ HARDWARE_INTRINSIC(SSE, LoadHigh,
HARDWARE_INTRINSIC(SSE, LoadLow, 16, 2, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_movlps, INS_invalid}, HW_Category_MemoryLoad, HW_Flag_NoRMWSemantics)
HARDWARE_INTRINSIC(SSE, LoadScalarVector128, 16, 1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_movss, INS_invalid}, HW_Category_MemoryLoad, HW_Flag_NoRMWSemantics)
HARDWARE_INTRINSIC(SSE, LoadVector128, 16, 1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_movups, INS_invalid}, HW_Category_MemoryLoad, HW_Flag_NoRMWSemantics)
-HARDWARE_INTRINSIC(SSE, Max, 16, 2, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_maxps, INS_invalid}, HW_Category_SimpleSIMD, HW_Flag_Commutative)
+HARDWARE_INTRINSIC(SSE, Max, 16, 2, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_maxps, INS_invalid}, HW_Category_SimpleSIMD, HW_Flag_MaybeCommutative)
HARDWARE_INTRINSIC(SSE, MaxScalar, 16, 2, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_maxss, INS_invalid}, HW_Category_SIMDScalar, HW_Flag_CopyUpperBits)
-HARDWARE_INTRINSIC(SSE, Min, 16, 2, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_minps, INS_invalid}, HW_Category_SimpleSIMD, HW_Flag_Commutative)
+HARDWARE_INTRINSIC(SSE, Min, 16, 2, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_minps, INS_invalid}, HW_Category_SimpleSIMD, HW_Flag_MaybeCommutative)
HARDWARE_INTRINSIC(SSE, MinScalar, 16, 2, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_minss, INS_invalid}, HW_Category_SIMDScalar, HW_Flag_CopyUpperBits)
HARDWARE_INTRINSIC(SSE, MoveHighToLow, 16, 2, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_movhlps, INS_invalid}, HW_Category_SimpleSIMD, HW_Flag_NoContainment)
HARDWARE_INTRINSIC(SSE, MoveLowToHigh, 16, 2, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_movlhps, INS_invalid}, HW_Category_SimpleSIMD, HW_Flag_NoContainment)
@@ -271,10 +271,10 @@ HARDWARE_INTRINSIC(SSE2, LoadLow,
HARDWARE_INTRINSIC(SSE2, LoadScalarVector128, 16, 1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_movd, INS_movd, INS_movq, INS_movq, INS_invalid, INS_movsdsse2}, HW_Category_MemoryLoad, HW_Flag_NoRMWSemantics)
HARDWARE_INTRINSIC(SSE2, LoadVector128, 16, 1, {INS_movdqu, INS_movdqu, INS_movdqu, INS_movdqu, INS_movdqu, INS_movdqu, INS_movdqu, INS_movdqu, INS_invalid, INS_movupd}, HW_Category_MemoryLoad, HW_Flag_NoRMWSemantics)
HARDWARE_INTRINSIC(SSE2, MaskMove, 16, 3, {INS_maskmovdqu, INS_maskmovdqu, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_MemoryStore, HW_Flag_NoContainment|HW_Flag_NoRMWSemantics|HW_Flag_BaseTypeFromSecondArg)
-HARDWARE_INTRINSIC(SSE2, Max, 16, 2, {INS_invalid, INS_pmaxub, INS_pmaxsw, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_maxpd}, HW_Category_SimpleSIMD, HW_Flag_Commutative)
+HARDWARE_INTRINSIC(SSE2, Max, 16, 2, {INS_invalid, INS_pmaxub, INS_pmaxsw, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_maxpd}, HW_Category_SimpleSIMD, HW_Flag_MaybeCommutative)
HARDWARE_INTRINSIC(SSE2, MemoryFence, 0, 0, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid}, HW_Category_Special, HW_Flag_NoContainment|HW_Flag_NoRMWSemantics)
HARDWARE_INTRINSIC(SSE2, MaxScalar, 16, 2, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_maxsd}, HW_Category_SIMDScalar, HW_Flag_CopyUpperBits)
-HARDWARE_INTRINSIC(SSE2, Min, 16, 2, {INS_invalid, INS_pminub, INS_pminsw, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_minpd}, HW_Category_SimpleSIMD, HW_Flag_Commutative)
+HARDWARE_INTRINSIC(SSE2, Min, 16, 2, {INS_invalid, INS_pminub, INS_pminsw, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_minpd}, HW_Category_SimpleSIMD, HW_Flag_MaybeCommutative)
HARDWARE_INTRINSIC(SSE2, MinScalar, 16, 2, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_minsd}, HW_Category_SIMDScalar, HW_Flag_CopyUpperBits)
HARDWARE_INTRINSIC(SSE2, MoveMask, 16, 1, {INS_pmovmskb, INS_pmovmskb, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_movmskpd}, HW_Category_SimpleSIMD, HW_Flag_NoContainment|HW_Flag_NoRMWSemantics|HW_Flag_BaseTypeFromFirstArg)
HARDWARE_INTRINSIC(SSE2, MoveScalar, 16, -1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_movq, INS_movq, INS_invalid, INS_movsdsse2}, HW_Category_SIMDScalar, HW_Flag_NoContainment)
@@ -466,8 +466,8 @@ HARDWARE_INTRINSIC(AVX, InsertVector128,
HARDWARE_INTRINSIC(AVX, LoadAlignedVector256, 32, 1, {INS_movdqa, INS_movdqa, INS_movdqa, INS_movdqa, INS_movdqa, INS_movdqa, INS_movdqa, INS_movdqa, INS_movaps, INS_movapd}, HW_Category_MemoryLoad, HW_Flag_NoRMWSemantics)
HARDWARE_INTRINSIC(AVX, LoadDquVector256, 32, 1, {INS_lddqu, INS_lddqu, INS_lddqu, INS_lddqu, INS_lddqu, INS_lddqu, INS_lddqu, INS_lddqu, INS_invalid, INS_invalid}, HW_Category_MemoryLoad, HW_Flag_NoRMWSemantics)
HARDWARE_INTRINSIC(AVX, LoadVector256, 32, 1, {INS_movdqu, INS_movdqu, INS_movdqu, INS_movdqu, INS_movdqu, INS_movdqu, INS_movdqu, INS_movdqu, INS_movups, INS_movupd}, HW_Category_MemoryLoad, HW_Flag_NoRMWSemantics)
-HARDWARE_INTRINSIC(AVX, Max, 32, 2, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_maxps, INS_maxpd}, HW_Category_SimpleSIMD, HW_Flag_Commutative)
-HARDWARE_INTRINSIC(AVX, Min, 32, 2, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_minps, INS_minpd}, HW_Category_SimpleSIMD, HW_Flag_Commutative)
+HARDWARE_INTRINSIC(AVX, Max, 32, 2, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_maxps, INS_maxpd}, HW_Category_SimpleSIMD, HW_Flag_MaybeCommutative)
+HARDWARE_INTRINSIC(AVX, Min, 32, 2, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_minps, INS_minpd}, HW_Category_SimpleSIMD, HW_Flag_MaybeCommutative)
HARDWARE_INTRINSIC(AVX, MaskLoad, -1, 2, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_vmaskmovps, INS_vmaskmovpd}, HW_Category_MemoryLoad, HW_Flag_NoFlag)
HARDWARE_INTRINSIC(AVX, MaskStore, -1, 3, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_vmaskmovps, INS_vmaskmovpd}, HW_Category_MemoryStore, HW_Flag_NoContainment|HW_Flag_BaseTypeFromSecondArg)
HARDWARE_INTRINSIC(AVX, MoveMask, 32, 1, {INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_movmskps, INS_movmskpd}, HW_Category_SimpleSIMD, HW_Flag_NoContainment|HW_Flag_BaseTypeFromFirstArg)
diff --git a/src/coreclr/jit/importer.cpp b/src/coreclr/jit/importer.cpp
index da396f145bfe05..184fe78ba9c9c9 100644
--- a/src/coreclr/jit/importer.cpp
+++ b/src/coreclr/jit/importer.cpp
@@ -6787,59 +6787,113 @@ void Compiler::impImportAndPushBox(CORINFO_RESOLVED_TOKEN* pResolvedToken)
// the opcode stack becomes empty
impBoxTempInUse = true;
+ // Remember the current last statement in case we need to move
+ // a range of statements to ensure the box temp is initialized
+ // before it's used.
+ //
+ Statement* const cursor = impLastStmt;
+
const bool useParent = false;
op1 = gtNewAllocObjNode(pResolvedToken, useParent);
if (op1 == nullptr)
{
+ // If we fail to create the newobj node, we must be inlining
+ // and have run across a type we can't describe.
+ //
+ assert(compDonotInline());
return;
}
- /* Remember that this basic block contains 'new' of an object, and so does this method */
+ // Remember that this basic block contains 'new' of an object,
+ // and so does this method
+ //
compCurBB->bbFlags |= BBF_HAS_NEWOBJ;
optMethodFlags |= OMF_HAS_NEWOBJ;
- GenTree* asg = gtNewTempAssign(impBoxTemp, op1);
-
+ // Assign the boxed object to the box temp.
+ //
+ GenTree* asg = gtNewTempAssign(impBoxTemp, op1);
Statement* asgStmt = impAppendTree(asg, (unsigned)CHECK_SPILL_NONE, impCurStmtOffs);
- op1 = gtNewLclvNode(impBoxTemp, TYP_REF);
- op2 = gtNewIconNode(TARGET_POINTER_SIZE, TYP_I_IMPL);
- op1 = gtNewOperNode(GT_ADD, TYP_BYREF, op1, op2);
-
- if (varTypeIsStruct(exprToBox))
+ // If the exprToBox is a call that returns its value via a ret buf arg,
+ // move the assignment statement(s) before the call (which must be a top level tree).
+ //
+ // We do this because impAssignStructPtr (invoked below) will
+ // back-substitute into a call when it sees a GT_RET_EXPR and the call
+ // has a hidden buffer pointer, So we need to reorder things to avoid
+ // creating out-of-sequence IR.
+ //
+ if (varTypeIsStruct(exprToBox) && exprToBox->OperIs(GT_RET_EXPR))
{
- // Workaround for GitHub issue 53549.
- //
- // If the struct being boxed is returned via hidden buffer and comes from an inline/gdv candidate,
- // the IR we produce after importation is out of order:
- //
- // call (&(box-temp + 8), ....)
- // box-temp = newobj
- // ret-val from call (void)
- // ... box-temp (on stack)
- //
- // For inline candidates this bad ordering gets fixed up during inlining, but for GDV candidates
- // the GDV expansion is such that the newobj follows the call as in the above.
- //
- // This is nontrivial to fix in GDV, so in these (rare) cases we simply disable GDV.
- //
- if (exprToBox->OperIs(GT_RET_EXPR))
+ GenTreeCall* const call = exprToBox->AsRetExpr()->gtInlineCandidate->AsCall();
+
+ if (call->HasRetBufArg())
{
- GenTreeCall* const call = exprToBox->AsRetExpr()->gtInlineCandidate->AsCall();
+ JITDUMP("Must insert newobj stmts for box before call [%06u]\n", dspTreeID(call));
+
+ // Walk back through the statements in this block, looking for the one
+ // that has this call as the root node.
+ //
+ // Because gtNewTempAssign (above) may have added statements that
+ // feed into the actual assignment we need to move this set of added
+ // statements as a group.
+ //
+ // Note boxed allocations are side-effect free (no com or finalizer) so
+ // our only worries here are (correctness) not overlapping the box temp
+ // lifetime and (perf) stretching the temp lifetime across the inlinee
+ // body.
+ //
+ // Since this is an inline candidate, we must be optimizing, and so we have
+ // a unique box temp per call. So no worries about overlap.
+ //
+ assert(!opts.OptimizationDisabled());
+
+ // Lifetime stretching could addressed with some extra cleverness--sinking
+ // the allocation back down to just before the copy, once we figure out
+ // where the copy is. We defer for now.
+ //
+ Statement* insertBeforeStmt = cursor;
+ noway_assert(insertBeforeStmt != nullptr);
- if (call->IsGuardedDevirtualizationCandidate() && call->HasRetBufArg())
+ while (true)
{
- JITDUMP("Disabling GDV for [%06u] because of in-box struct return\n");
- call->ClearGuardedDevirtualizationCandidate();
- if (call->IsVirtualStub())
+ if (insertBeforeStmt->GetRootNode() == call)
{
- JITDUMP("Restoring stub addr %p from guarded devirt candidate info\n",
- dspPtr(call->gtGuardedDevirtualizationCandidateInfo->stubAddr));
- call->gtStubCallStubAddr = call->gtGuardedDevirtualizationCandidateInfo->stubAddr;
+ break;
}
+
+ // If we've searched all the statements in the block and failed to
+ // find the call, then something's wrong.
+ //
+ noway_assert(insertBeforeStmt != impStmtList);
+
+ insertBeforeStmt = insertBeforeStmt->GetPrevStmt();
}
+
+ // Found the call. Move the statements comprising the assignment.
+ //
+ JITDUMP("Moving " FMT_STMT "..." FMT_STMT " before " FMT_STMT "\n", cursor->GetNextStmt()->GetID(),
+ asgStmt->GetID(), insertBeforeStmt->GetID());
+ assert(asgStmt == impLastStmt);
+ do
+ {
+ Statement* movingStmt = impExtractLastStmt();
+ impInsertStmtBefore(movingStmt, insertBeforeStmt);
+ insertBeforeStmt = movingStmt;
+ } while (impLastStmt != cursor);
}
+ }
+
+ // Create a pointer to the box payload in op1.
+ //
+ op1 = gtNewLclvNode(impBoxTemp, TYP_REF);
+ op2 = gtNewIconNode(TARGET_POINTER_SIZE, TYP_I_IMPL);
+ op1 = gtNewOperNode(GT_ADD, TYP_BYREF, op1, op2);
+ // Copy from the exprToBox to the box payload.
+ //
+ if (varTypeIsStruct(exprToBox))
+ {
assert(info.compCompHnd->getClassSize(pResolvedToken->hClass) == info.compCompHnd->getClassSize(operCls));
op1 = impAssignStructPtr(op1, exprToBox, operCls, (unsigned)CHECK_SPILL_ALL);
}
@@ -6960,7 +7014,9 @@ void Compiler::impImportNewObjArray(CORINFO_RESOLVED_TOKEN* pResolvedToken, CORI
//
CLANG_FORMAT_COMMENT_ANCHOR;
+#ifndef OSX_ARM64_ABI
if (!opts.IsReadyToRun() || IsTargetAbi(CORINFO_CORERT_ABI))
+#endif // !OSX_ARM64_ABI
{
// Reuse the temp used to pass the array dimensions to avoid bloating
@@ -7017,6 +7073,7 @@ void Compiler::impImportNewObjArray(CORINFO_RESOLVED_TOKEN* pResolvedToken, CORI
node = gtNewHelperCallNode(CORINFO_HELP_NEW_MDARR_NONVARARG, TYP_REF, args);
}
+#ifndef OSX_ARM64_ABI
else
{
//
@@ -7046,6 +7103,7 @@ void Compiler::impImportNewObjArray(CORINFO_RESOLVED_TOKEN* pResolvedToken, CORI
}
#endif
}
+#endif // !OSX_ARM64_ABI
for (GenTreeCall::Use& use : node->AsCall()->Args())
{
@@ -17275,45 +17333,6 @@ bool Compiler::impReturnInstruction(int prefixFlags, OPCODE& opcode)
#endif
}
- // If we are inlining a method that returns a struct byref, check whether we are "reinterpreting" the
- // struct.
- GenTree* effectiveRetVal = op2->gtEffectiveVal();
- if ((returnType == TYP_BYREF) && (info.compRetType == TYP_BYREF) &&
- (effectiveRetVal->OperGet() == GT_ADDR))
- {
- GenTree* addrChild = effectiveRetVal->gtGetOp1();
- if (addrChild->OperGet() == GT_LCL_VAR)
- {
- LclVarDsc* varDsc = lvaGetDesc(addrChild->AsLclVarCommon());
-
- if (varTypeIsStruct(addrChild->TypeGet()) && !isOpaqueSIMDLclVar(varDsc))
- {
- CORINFO_CLASS_HANDLE referentClassHandle;
- CorInfoType referentType =
- info.compCompHnd->getChildType(info.compMethodInfo->args.retTypeClass,
- &referentClassHandle);
- if (varTypeIsStruct(JITtype2varType(referentType)) &&
- (varDsc->GetStructHnd() != referentClassHandle))
- {
- // We are returning a byref to struct1; the method signature specifies return type as
- // byref
- // to struct2. struct1 and struct2 are different so we are "reinterpreting" the struct.
- // This may happen in, for example, System.Runtime.CompilerServices.Unsafe.As.
- // We need to mark the source struct variable as having overlapping fields because its
- // fields may be accessed using field handles of a different type, which may confuse
- // optimizations, in particular, value numbering.
-
- JITDUMP("\nSetting lvOverlappingFields to true on V%02u because of struct "
- "reinterpretation\n",
- addrChild->AsLclVarCommon()->GetLclNum());
-
- varDsc->lvOverlappingFields = true;
- }
- }
- }
- }
-
#ifdef DEBUG
if (verbose)
{
diff --git a/src/coreclr/jit/inlinepolicy.h b/src/coreclr/jit/inlinepolicy.h
index 466e17fe0e1127..e604fd57a36ed5 100644
--- a/src/coreclr/jit/inlinepolicy.h
+++ b/src/coreclr/jit/inlinepolicy.h
@@ -185,7 +185,7 @@ class DefaultPolicy : public LegalPolicy
class ExtendedDefaultPolicy : public DefaultPolicy
{
public:
- ExtendedDefaultPolicy::ExtendedDefaultPolicy(Compiler* compiler, bool isPrejitRoot)
+ ExtendedDefaultPolicy(Compiler* compiler, bool isPrejitRoot)
: DefaultPolicy(compiler, isPrejitRoot)
, m_ProfileFrequency(0.0)
, m_BinaryExprWithCns(0)
diff --git a/src/coreclr/jit/jiteh.cpp b/src/coreclr/jit/jiteh.cpp
index da431dd82e2de9..12e91d077690ba 100644
--- a/src/coreclr/jit/jiteh.cpp
+++ b/src/coreclr/jit/jiteh.cpp
@@ -4410,7 +4410,7 @@ void Compiler::fgExtendEHRegionBefore(BasicBlock* block)
#endif // DEBUG
// The first block of a handler has an artificial extra refcount. Transfer that to the new block.
- assert(block->bbRefs > 0);
+ noway_assert(block->countOfInEdges() > 0);
block->bbRefs--;
HBtab->ebdHndBeg = bPrev;
@@ -4459,7 +4459,7 @@ void Compiler::fgExtendEHRegionBefore(BasicBlock* block)
#endif // DEBUG
// The first block of a filter has an artificial extra refcount. Transfer that to the new block.
- assert(block->bbRefs > 0);
+ noway_assert(block->countOfInEdges() > 0);
block->bbRefs--;
HBtab->ebdFilter = bPrev;
diff --git a/src/coreclr/jit/lclmorph.cpp b/src/coreclr/jit/lclmorph.cpp
index caa8a1bdc872d6..0ffd46f47b7845 100644
--- a/src/coreclr/jit/lclmorph.cpp
+++ b/src/coreclr/jit/lclmorph.cpp
@@ -210,7 +210,7 @@ class LocalAddressVisitor final : public GenTreeVisitor
// Arguments:
// val - the input value
// field - the FIELD node that uses the input address value
- // fieldSeqStore - the compiler's field sequence store
+ // compiler - the compiler instance
//
// Return Value:
// `true` if the value was consumed. `false` if the input value
@@ -224,8 +224,9 @@ class LocalAddressVisitor final : public GenTreeVisitor
// if the offset overflows then location is not representable, must escape
// - UNKNOWN => UNKNOWN
//
- bool Field(Value& val, GenTreeField* field, FieldSeqStore* fieldSeqStore)
+ bool Field(Value& val, GenTreeField* field, Compiler* compiler)
{
+
assert(!IsLocation() && !IsAddress());
if (val.IsLocation())
@@ -246,14 +247,80 @@ class LocalAddressVisitor final : public GenTreeVisitor
m_lclNum = val.m_lclNum;
m_offset = newOffset.Value();
+ bool haveCorrectFieldForVN;
if (field->gtFldMayOverlap)
{
- m_fieldSeq = FieldSeqStore::NotAField();
+ haveCorrectFieldForVN = false;
}
else
{
+ LclVarDsc* varDsc = compiler->lvaGetDesc(m_lclNum);
+ if (!varTypeIsStruct(varDsc))
+ {
+ haveCorrectFieldForVN = false;
+ }
+ else if (FieldSeqStore::IsPseudoField(field->gtFldHnd))
+ {
+ assert(compiler->compObjectStackAllocation());
+ // We use PseudoFields when accessing stack allocated classes.
+ haveCorrectFieldForVN = false;
+ }
+ else if (val.m_fieldSeq == nullptr)
+ {
+
+ CORINFO_CLASS_HANDLE clsHnd = varDsc->GetStructHnd();
+ // If the answer is no we are probably accessing a canon type with a non-canon fldHnd,
+ // currently it could happen in crossgen2 scenario where VM distinguishes class._field
+ // from class._field.
+ haveCorrectFieldForVN =
+ compiler->info.compCompHnd->doesFieldBelongToClass(field->gtFldHnd, clsHnd);
+ }
+ else
+ {
+ FieldSeqNode* lastSeqNode = val.m_fieldSeq->GetTail();
+ assert(lastSeqNode != nullptr);
+ if (lastSeqNode->IsPseudoField() || lastSeqNode == FieldSeqStore::NotAField())
+ {
+ haveCorrectFieldForVN = false;
+ }
+ else
+ {
+ CORINFO_FIELD_HANDLE lastFieldBeforeTheCurrent = lastSeqNode->GetFieldHandle();
+
+ CORINFO_CLASS_HANDLE clsHnd;
+ CorInfoType fieldCorType =
+ compiler->info.compCompHnd->getFieldType(lastFieldBeforeTheCurrent, &clsHnd);
+ if (fieldCorType != CORINFO_TYPE_VALUECLASS)
+ {
+ // For example, System.IntPtr:ToInt64, when inlined, creates trees like
+ // * FIELD long _value
+ // \--* ADDR byref
+ // \--* FIELD long Information
+ // \--* ADDR byref
+ // \--* LCL_VAR struct V08 tmp7
+ haveCorrectFieldForVN = false;
+ }
+ else
+ {
+
+ haveCorrectFieldForVN =
+ compiler->info.compCompHnd->doesFieldBelongToClass(field->gtFldHnd, clsHnd);
+ noway_assert(haveCorrectFieldForVN);
+ }
+ }
+ }
+ }
+
+ if (haveCorrectFieldForVN)
+ {
+ FieldSeqStore* fieldSeqStore = compiler->GetFieldSeqStore();
m_fieldSeq = fieldSeqStore->Append(val.m_fieldSeq, fieldSeqStore->CreateSingleton(field->gtFldHnd));
}
+ else
+ {
+ m_fieldSeq = FieldSeqStore::NotAField();
+ JITDUMP("Setting NotAField for [%06u],\n", compiler->dspTreeID(field));
+ }
}
INDEBUG(val.Consume();)
@@ -463,7 +530,7 @@ class LocalAddressVisitor final : public GenTreeVisitor
assert(TopValue(1).Node() == node);
assert(TopValue(0).Node() == node->AsField()->gtFldObj);
- if (!TopValue(1).Field(TopValue(0), node->AsField(), m_compiler->GetFieldSeqStore()))
+ if (!TopValue(1).Field(TopValue(0), node->AsField(), m_compiler))
{
// Either the address comes from a location value (e.g. FIELD(IND(...)))
// or the field offset has overflowed.
diff --git a/src/coreclr/jit/lclvars.cpp b/src/coreclr/jit/lclvars.cpp
index 27771bbb7c18ce..6b7032336bd2d2 100644
--- a/src/coreclr/jit/lclvars.cpp
+++ b/src/coreclr/jit/lclvars.cpp
@@ -2103,8 +2103,13 @@ bool Compiler::StructPromotionHelper::ShouldPromoteStructVar(unsigned lclNum)
// multiple registers?
if (compiler->lvaIsMultiregStruct(varDsc, compiler->info.compIsVarArgs))
{
- if ((structPromotionInfo.fieldCnt != 2) &&
- !((structPromotionInfo.fieldCnt == 1) && varTypeIsSIMD(structPromotionInfo.fields[0].fldType)))
+ if (structPromotionInfo.containsHoles && structPromotionInfo.customLayout)
+ {
+ JITDUMP("Not promoting multi-reg struct local V%02u with holes.\n", lclNum);
+ shouldPromote = false;
+ }
+ else if ((structPromotionInfo.fieldCnt != 2) &&
+ !((structPromotionInfo.fieldCnt == 1) && varTypeIsSIMD(structPromotionInfo.fields[0].fldType)))
{
JITDUMP("Not promoting multireg struct local V%02u, because lvIsParam is true, #fields != 2 and it's "
"not a single SIMD.\n",
@@ -4075,6 +4080,16 @@ void Compiler::lvaMarkLclRefs(GenTree* tree, BasicBlock* block, Statement* stmt,
varDsc->incRefCnts(weight, this);
+#ifdef DEBUG
+ if (varDsc->lvIsStructField)
+ {
+ // If ref count was increased for struct field, ensure that the
+ // parent struct is still promoted.
+ LclVarDsc* parentStruct = &lvaTable[varDsc->lvParentLcl];
+ assert(!parentStruct->lvUndoneStructPromotion);
+ }
+#endif
+
if (!isRecompute)
{
if (lvaVarAddrExposed(lclNum))
@@ -4142,8 +4157,10 @@ void Compiler::lvaMarkLclRefs(GenTree* tree, BasicBlock* block, Statement* stmt,
{
bool bbInALoop = (block->bbFlags & BBF_BACKWARD_JUMP) != 0;
bool bbIsReturn = block->bbJumpKind == BBJ_RETURN;
- // TODO: Zero-inits in LSRA are created with below condition. Try to use similar condition here as well.
- // if (compiler->info.compInitMem || varTypeIsGC(varDsc->TypeGet()))
+ // TODO: Zero-inits in LSRA are created with below condition. But if filter out based on that condition
+ // we filter lot of interesting variables that would benefit otherwise with EH var enregistration.
+ // bool needsExplicitZeroInit = !varDsc->lvIsParam && (info.compInitMem ||
+ // varTypeIsGC(varDsc->TypeGet()));
bool needsExplicitZeroInit = fgVarNeedsExplicitZeroInit(lclNum, bbInALoop, bbIsReturn);
if (varDsc->lvSingleDefRegCandidate || needsExplicitZeroInit)
diff --git a/src/coreclr/jit/liveness.cpp b/src/coreclr/jit/liveness.cpp
index 745cbb9d1a9af3..6d77489248d675 100644
--- a/src/coreclr/jit/liveness.cpp
+++ b/src/coreclr/jit/liveness.cpp
@@ -1971,25 +1971,45 @@ void Compiler::fgComputeLifeLIR(VARSET_TP& life, BasicBlock* block, VARSET_VALAR
if (blockRange.TryGetUse(node, &addrUse) &&
(addrUse.User()->OperIs(GT_STOREIND, GT_STORE_BLK, GT_STORE_OBJ)))
{
- // Remove the store. DCE will iteratively clean up any ununsed operands.
GenTreeIndir* const store = addrUse.User()->AsIndir();
- JITDUMP("Removing dead indirect store:\n");
- DISPNODE(store);
+ // If this is a zero init of an explicit zero init gc local
+ // that has at least one other reference, we will keep the zero init.
+ //
+ const LclVarDsc& varDsc = lvaTable[node->AsLclVarCommon()->GetLclNum()];
+ const bool isExplicitInitLocal = varDsc.lvHasExplicitInit;
+ const bool isReferencedLocal = varDsc.lvRefCnt() > 1;
+ const bool isZeroInit = store->OperIsInitBlkOp();
+ const bool isGCInit = varDsc.HasGCPtr();
- assert(store->Addr() == node);
- blockRange.Delete(this, block, node);
-
- GenTree* data =
- store->OperIs(GT_STOREIND) ? store->AsStoreInd()->Data() : store->AsBlk()->Data();
- data->SetUnusedValue();
-
- if (data->isIndir())
+ if (isExplicitInitLocal && isReferencedLocal && isZeroInit && isGCInit)
{
- Lowering::TransformUnusedIndirection(data->AsIndir(), this, block);
+ // Yes, we'd better keep it around.
+ //
+ JITDUMP("Keeping dead indirect store -- explicit zero init of gc type\n");
+ DISPNODE(store);
}
+ else
+ {
+ // Remove the store. DCE will iteratively clean up any ununsed operands.
+ //
+ JITDUMP("Removing dead indirect store:\n");
+ DISPNODE(store);
+
+ assert(store->Addr() == node);
+ blockRange.Delete(this, block, node);
- fgRemoveDeadStoreLIR(store, block);
+ GenTree* data =
+ store->OperIs(GT_STOREIND) ? store->AsStoreInd()->Data() : store->AsBlk()->Data();
+ data->SetUnusedValue();
+
+ if (data->isIndir())
+ {
+ Lowering::TransformUnusedIndirection(data->AsIndir(), this, block);
+ }
+
+ fgRemoveDeadStoreLIR(store, block);
+ }
}
}
}
diff --git a/src/coreclr/jit/loopcloning.cpp b/src/coreclr/jit/loopcloning.cpp
index 69e916c3249525..da990d9c94a820 100644
--- a/src/coreclr/jit/loopcloning.cpp
+++ b/src/coreclr/jit/loopcloning.cpp
@@ -968,7 +968,14 @@ bool Compiler::optDeriveLoopCloningConditions(unsigned loopNum, LoopCloneContext
else if (loop->lpFlags & LPFLG_VAR_INIT)
{
// initVar >= 0
- LC_Condition geZero(GT_GE, LC_Expr(LC_Ident(loop->lpVarInit, LC_Ident::Var)),
+ const unsigned initLcl = loop->lpVarInit;
+ if (!genActualTypeIsInt(lvaGetDesc(initLcl)))
+ {
+ JITDUMP("> Init var V%02u not compatible with TYP_INT\n", initLcl);
+ return false;
+ }
+
+ LC_Condition geZero(GT_GE, LC_Expr(LC_Ident(initLcl, LC_Ident::Var)),
LC_Expr(LC_Ident(0, LC_Ident::Const)));
context->EnsureConditions(loopNum)->Push(geZero);
}
@@ -992,9 +999,14 @@ bool Compiler::optDeriveLoopCloningConditions(unsigned loopNum, LoopCloneContext
}
else if (loop->lpFlags & LPFLG_VAR_LIMIT)
{
- unsigned limitLcl = loop->lpVarLimit();
- ident = LC_Ident(limitLcl, LC_Ident::Var);
+ const unsigned limitLcl = loop->lpVarLimit();
+ if (!genActualTypeIsInt(lvaGetDesc(limitLcl)))
+ {
+ JITDUMP("> Limit var V%02u not compatible with TYP_INT\n", limitLcl);
+ return false;
+ }
+ ident = LC_Ident(limitLcl, LC_Ident::Var);
LC_Condition geZero(GT_GE, LC_Expr(ident), LC_Expr(LC_Ident(0, LC_Ident::Const)));
context->EnsureConditions(loopNum)->Push(geZero);
@@ -2064,9 +2076,10 @@ bool Compiler::optIsStackLocalInvariant(unsigned loopNum, unsigned lclNum)
// optExtractArrIndex: Try to extract the array index from "tree".
//
// Arguments:
-// tree the tree to be checked if it is the array [] operation.
-// result the extracted GT_INDEX information is updated in result.
-// lhsNum for the root level (function is recursive) callers should pass BAD_VAR_NUM.
+// tree the tree to be checked if it is the array [] operation.
+// result the extracted GT_INDEX information is updated in result.
+// lhsNum for the root level (function is recursive) callers should pass BAD_VAR_NUM.
+// topLevelIsFinal OUT: set to `true` if see a non-TYP_REF element type array.
//
// Return Value:
// Returns true if array index can be extracted, else, return false. See assumption about
@@ -2127,7 +2140,7 @@ bool Compiler::optIsStackLocalInvariant(unsigned loopNum, unsigned lclNum)
// used as an index expression, or array base var is used as the array base. This saves us from parsing
// all the forms that morph can create, especially for arrays of structs.
//
-bool Compiler::optExtractArrIndex(GenTree* tree, ArrIndex* result, unsigned lhsNum)
+bool Compiler::optExtractArrIndex(GenTree* tree, ArrIndex* result, unsigned lhsNum, bool* topLevelIsFinal)
{
if (tree->gtOper != GT_COMMA)
{
@@ -2171,37 +2184,31 @@ bool Compiler::optExtractArrIndex(GenTree* tree, ArrIndex* result, unsigned lhsN
result->useBlock = compCurBB;
result->rank++;
+ // If the array element type (saved from the GT_INDEX node during morphing) is anything but
+ // TYP_REF, then it must the the final level of jagged array.
+ assert(arrBndsChk->gtInxType != TYP_VOID);
+ *topLevelIsFinal = (arrBndsChk->gtInxType != TYP_REF);
+
return true;
}
//---------------------------------------------------------------------------------------------------------------
-// optReconstructArrIndex: Reconstruct array index.
+// optReconstructArrIndexHelp: Helper function for optReconstructArrIndex. See that function for more details.
//
// Arguments:
-// tree the tree to be checked if it is an array [][][] operation.
-// result OUT: the extracted GT_INDEX information.
-// lhsNum for the root level (function is recursive) callers should pass BAD_VAR_NUM.
+// tree the tree to be checked if it is an array [][][] operation.
+// result OUT: the extracted GT_INDEX information.
+// lhsNum var number of array object we're looking for.
+// topLevelIsFinal OUT: set to `true` if we reached a non-TYP_REF element type array.
//
// Return Value:
// Returns true if array index can be extracted, else, return false. "rank" field in
-// "result" contains the array access depth. The "indLcls" fields contain the indices.
-//
-// Operation:
-// Recursively look for a list of array indices. For example, if the tree is
-// V03 = (V05 = V00[V01]), V05[V02]
-// that corresponds to access of V00[V01][V02]. The return value would then be:
-// ArrIndex result { arrLcl: V00, indLcls: [V01, V02], rank: 2 }
+// "result" contains the array access depth. The "indLcls" field contains the indices.
//
-// Note that the array expression is implied by the array bounds check under the COMMA, and the array bounds
-// checks is what is parsed from the morphed tree; the array addressing expression is not parsed.
-//
-// Assumption:
-// The method extracts only if the array base and indices are GT_LCL_VAR.
-//
-bool Compiler::optReconstructArrIndex(GenTree* tree, ArrIndex* result, unsigned lhsNum)
+bool Compiler::optReconstructArrIndexHelp(GenTree* tree, ArrIndex* result, unsigned lhsNum, bool* topLevelIsFinal)
{
// If we can extract "tree" (which is a top level comma) return.
- if (optExtractArrIndex(tree, result, lhsNum))
+ if (optExtractArrIndex(tree, result, lhsNum, topLevelIsFinal))
{
return true;
}
@@ -2218,18 +2225,152 @@ bool Compiler::optReconstructArrIndex(GenTree* tree, ArrIndex* result, unsigned
GenTree* rhs = before->gtGetOp2();
// "rhs" should contain an GT_INDEX
- if (!lhs->IsLocal() || !optReconstructArrIndex(rhs, result, lhsNum))
+ if (!lhs->IsLocal() || !optReconstructArrIndexHelp(rhs, result, lhsNum, topLevelIsFinal))
+ {
+ return false;
+ }
+
+ // If rhs represents an array of elements other than arrays (e.g., an array of structs),
+ // then we can't go any farther.
+ if (*topLevelIsFinal)
{
return false;
}
+
unsigned lhsNum = lhs->AsLclVarCommon()->GetLclNum();
GenTree* after = tree->gtGetOp2();
// Pass the "lhsNum", so we can verify if indeed it is used as the array base.
- return optExtractArrIndex(after, result, lhsNum);
+ return optExtractArrIndex(after, result, lhsNum, topLevelIsFinal);
}
return false;
}
+//---------------------------------------------------------------------------------------------------------------
+// optReconstructArrIndex: Reconstruct array index from a post-morph tree.
+//
+// Arguments:
+// tree the tree to be checked if it is an array [][][] operation.
+// result OUT: the extracted GT_INDEX information.
+//
+// Return Value:
+// Returns true if array index can be extracted, else, return false. "rank" field in
+// "result" contains the array access depth. The "indLcls" field contains the indices.
+//
+// Operation:
+// Recursively look for a list of array indices. For example, if the tree is
+// V03 = (V05 = V00[V01]), V05[V02]
+// that corresponds to access of V00[V01][V02]. The return value would then be:
+// ArrIndex result { arrLcl: V00, indLcls: [V01, V02], rank: 2 }
+//
+// Note that the array expression is implied by the array bounds check under the COMMA, and the array bounds
+// checks is what is parsed from the morphed tree; the array addressing expression is not parsed.
+// However, the array bounds checks are not quite sufficient because of the way "morph" alters the trees.
+// Specifically, we normally see a COMMA node with a LHS of the morphed array INDEX expression and RHS
+// of the bounds check. E.g., for int[][], a[i][j] we have a pre-morph tree:
+//
+// \--* INDEX int
+// +--* INDEX ref
+// | +--* LCL_VAR ref V00 loc0
+// | \--* LCL_VAR int V02 loc2
+// \--* LCL_VAR int V03 loc3
+//
+// and post-morph tree:
+//
+// \--* COMMA int
+// +--* ASG ref
+// | +--* LCL_VAR ref V19 tmp12
+// | \--* COMMA ref
+// | +--* BOUNDS_CHECK_Rng void
+// | | +--* LCL_VAR int V02 loc2
+// | | \--* ARR_LENGTH int
+// | | \--* LCL_VAR ref V00 loc0
+// | \--* IND ref
+// | \--* ADD byref
+// | +--* LCL_VAR ref V00 loc0
+// | \--* ADD long
+// | +--* LSH long
+// | | +--* CAST long <- uint
+// | | | \--* LCL_VAR int V02 loc2
+// | | \--* CNS_INT long 3
+// | \--* CNS_INT long 16 Fseq[#FirstElem]
+// \--* COMMA int
+// +--* BOUNDS_CHECK_Rng void
+// | +--* LCL_VAR int V03 loc3
+// | \--* ARR_LENGTH int
+// | \--* LCL_VAR ref V19 tmp12
+// \--* IND int
+// \--* ADD byref
+// +--* LCL_VAR ref V19 tmp12
+// \--* ADD long
+// +--* LSH long
+// | +--* CAST long <- uint
+// | | \--* LCL_VAR int V03 loc3
+// | \--* CNS_INT long 2
+// \--* CNS_INT long 16 Fseq[#FirstElem]
+//
+// However, for an array of structs that contains an array field, e.g. ValueTuple[], expression
+// a[i].Item1[j],
+//
+// \--* INDEX int
+// +--* FIELD ref Item1
+// | \--* ADDR byref
+// | \--* INDEX struct
+// | +--* LCL_VAR ref V01 loc1
+// | \--* LCL_VAR int V04 loc4
+// \--* LCL_VAR int V06 loc6
+//
+// Morph "hoists" the bounds check above the struct field access:
+//
+// \--* COMMA int
+// +--* ASG ref
+// | +--* LCL_VAR ref V23 tmp16
+// | \--* COMMA ref
+// | +--* BOUNDS_CHECK_Rng void
+// | | +--* LCL_VAR int V04 loc4
+// | | \--* ARR_LENGTH int
+// | | \--* LCL_VAR ref V01 loc1
+// | \--* IND ref
+// | \--* ADDR byref Zero Fseq[Item1]
+// | \--* IND struct
+// | \--* ADD byref
+// | +--* LCL_VAR ref V01 loc1
+// | \--* ADD long
+// | +--* LSH long
+// | | +--* CAST long <- uint
+// | | | \--* LCL_VAR int V04 loc4
+// | | \--* CNS_INT long 4
+// | \--* CNS_INT long 16 Fseq[#FirstElem]
+// \--* COMMA int
+// +--* BOUNDS_CHECK_Rng void
+// | +--* LCL_VAR int V06 loc6
+// | \--* ARR_LENGTH int
+// | \--* LCL_VAR ref V23 tmp16
+// \--* IND int
+// \--* ADD byref
+// +--* LCL_VAR ref V23 tmp16
+// \--* ADD long
+// +--* LSH long
+// | +--* CAST long <- uint
+// | | \--* LCL_VAR int V06 loc6
+// | \--* CNS_INT long 2
+// \--* CNS_INT long 16 Fseq[#FirstElem]
+//
+// This should not be parsed as a jagged array (e.g., a[i][j]). To ensure that it is not, the type of the
+// GT_INDEX node is stashed in the GT_BOUNDS_CHECK node during morph. If we see a bounds check node where
+// the GT_INDEX was not TYP_REF, then it must be the outermost jagged array level. E.g., if it is
+// TYP_STRUCT, then we have an array of structs, and any further bounds checks must be of one of its fields.
+//
+// It would be much better if we didn't need to parse these trees at all, and did all this work pre-morph.
+//
+// Assumption:
+// The method extracts only if the array base and indices are GT_LCL_VAR.
+//
+bool Compiler::optReconstructArrIndex(GenTree* tree, ArrIndex* result)
+{
+ bool topLevelIsFinal = false;
+ return optReconstructArrIndexHelp(tree, result, BAD_VAR_NUM, &topLevelIsFinal);
+}
+
//----------------------------------------------------------------------------------------------
// optCanOptimizeByLoopCloning: Check if the tree can be optimized by loop cloning and if so,
// identify as potential candidate and update the loop context.
@@ -2253,7 +2394,7 @@ Compiler::fgWalkResult Compiler::optCanOptimizeByLoopCloning(GenTree* tree, Loop
ArrIndex arrIndex(getAllocator(CMK_LoopClone));
// Check if array index can be optimized.
- if (optReconstructArrIndex(tree, &arrIndex, BAD_VAR_NUM))
+ if (optReconstructArrIndex(tree, &arrIndex))
{
assert(tree->gtOper == GT_COMMA);
diff --git a/src/coreclr/jit/lower.cpp b/src/coreclr/jit/lower.cpp
index 08cbc8b0ad0d37..f0c735771e620b 100644
--- a/src/coreclr/jit/lower.cpp
+++ b/src/coreclr/jit/lower.cpp
@@ -2984,9 +2984,8 @@ void Lowering::LowerRet(GenTreeUnOp* ret)
// There are two kinds of retyping:
// - A simple bitcast can be inserted when:
// - We're returning a floating type as an integral type or vice-versa, or
- // - We're returning a struct as a primitive type and using the old form of retyping.
- // - If we're returning a struct as a primitive type and *not* using old retying, we change the type of
- // 'retval' in 'LowerRetStructLclVar()'
+ // - If we're returning a struct as a primitive type, we change the type of
+ // 'retval' in 'LowerRetStructLclVar()'
bool needBitcast =
(ret->TypeGet() != TYP_VOID) && (varTypeUsesFloatReg(ret) != varTypeUsesFloatReg(ret->gtGetOp1()));
bool doPrimitiveBitcast = false;
@@ -3296,15 +3295,15 @@ void Lowering::LowerRetStruct(GenTreeUnOp* ret)
assert(ret->OperIs(GT_RETURN));
assert(varTypeIsStruct(ret));
- GenTree* retVal = ret->gtGetOp1();
+ GenTree* retVal = ret->gtGetOp1();
+ var_types nativeReturnType = comp->info.compRetNativeType;
// Note: small types are returned as INT.
- var_types nativeReturnType = genActualType(comp->info.compRetNativeType);
- ret->ChangeType(nativeReturnType);
+ ret->ChangeType(genActualType(nativeReturnType));
switch (retVal->OperGet())
{
case GT_CALL:
- assert(retVal->TypeIs(nativeReturnType)); // Type should be changed during call processing.
+ assert(retVal->TypeIs(genActualType(nativeReturnType))); // Type should be changed during call processing.
break;
case GT_CNS_INT:
@@ -3408,6 +3407,7 @@ void Lowering::LowerRetSingleRegStructLclVar(GenTreeUnOp* ret)
unsigned lclNum = lclVar->GetLclNum();
LclVarDsc* varDsc = comp->lvaGetDesc(lclNum);
+ bool replacedInLowering = false;
if (varDsc->CanBeReplacedWithItsField(comp))
{
// We can replace the struct with its only field and keep the field on a register.
@@ -3420,8 +3420,9 @@ void Lowering::LowerRetSingleRegStructLclVar(GenTreeUnOp* ret)
"[%06u]\n",
lclNum, fieldLclNum, comp->dspTreeID(ret));
lclVar->ChangeType(fieldDsc->lvType);
- lclNum = fieldLclNum;
- varDsc = comp->lvaGetDesc(lclNum);
+ lclNum = fieldLclNum;
+ varDsc = comp->lvaGetDesc(lclNum);
+ replacedInLowering = true;
}
else if (varDsc->lvPromoted)
{
@@ -3434,18 +3435,49 @@ void Lowering::LowerRetSingleRegStructLclVar(GenTreeUnOp* ret)
{
lclVar->ChangeOper(GT_LCL_FLD);
lclVar->AsLclFld()->SetLclOffs(0);
- lclVar->ChangeType(ret->TypeGet());
+
+ // We are returning as a primitive type and the lcl is of struct type.
+ assert(comp->info.compRetNativeType != TYP_STRUCT);
+ assert((genTypeSize(comp->info.compRetNativeType) == genTypeSize(ret)) ||
+ (varTypeIsIntegral(ret) && varTypeIsIntegral(comp->info.compRetNativeType) &&
+ (genTypeSize(comp->info.compRetNativeType) <= genTypeSize(ret))));
+ // If the actual return type requires normalization, then make sure we
+ // do so by using the correct small type for the GT_LCL_FLD. It would
+ // be conservative to check just compRetNativeType for this since small
+ // structs are normalized to primitive types when they are returned in
+ // registers, so we would normalize for them as well.
+ if (varTypeIsSmall(comp->info.compRetType))
+ {
+ assert(genTypeSize(comp->info.compRetNativeType) == genTypeSize(comp->info.compRetType));
+ lclVar->ChangeType(comp->info.compRetType);
+ }
+ else
+ {
+ // Otherwise we don't mind that we leave the upper bits undefined.
+ lclVar->ChangeType(ret->TypeGet());
+ }
}
else
{
const var_types lclVarType = varDsc->GetRegisterType(lclVar);
assert(lclVarType != TYP_UNDEF);
+
+ if (varDsc->lvNormalizeOnLoad() && replacedInLowering)
+ {
+ // For a normalize-on-load var that we replaced late we need to insert a cast
+ // as morph would typically be responsible for this.
+ GenTreeCast* cast = comp->gtNewCastNode(TYP_INT, lclVar, false, lclVarType);
+ ret->gtOp1 = cast;
+ BlockRange().InsertBefore(ret, cast);
+ ContainCheckCast(cast);
+ }
+
const var_types actualType = genActualType(lclVarType);
lclVar->ChangeType(actualType);
if (varTypeUsesFloatReg(ret) != varTypeUsesFloatReg(lclVarType))
{
- GenTree* bitcast = comp->gtNewBitCastNode(ret->TypeGet(), lclVar);
+ GenTree* bitcast = comp->gtNewBitCastNode(ret->TypeGet(), ret->gtOp1);
ret->gtOp1 = bitcast;
BlockRange().InsertBefore(ret, bitcast);
ContainCheckBitCast(bitcast);
diff --git a/src/coreclr/jit/lsra.cpp b/src/coreclr/jit/lsra.cpp
index 9491b2c0773578..723e363f0fa810 100644
--- a/src/coreclr/jit/lsra.cpp
+++ b/src/coreclr/jit/lsra.cpp
@@ -4945,6 +4945,13 @@ void LinearScan::allocateRegisters()
// it to a different register file.
allocate = false;
}
+ else if ((currentInterval->isWriteThru) && (refType == RefTypeZeroInit))
+ {
+ // For RefTypeZeroInit which is a write thru, there is no need to allocate register
+ // right away. It can be assigned when actually definition occurs.
+ // In future, see if avoiding allocation for RefTypeZeroInit gives any benefit in general.
+ allocate = false;
+ }
if (!allocate)
{
INDEBUG(dumpLsraAllocationEvent(LSRA_EVENT_NO_ENTRY_REG_ALLOCATED, currentInterval));
@@ -5200,7 +5207,6 @@ void LinearScan::allocateRegisters()
if (physRegRecord->assignedInterval == currentInterval)
{
unassignPhysRegNoSpill(physRegRecord);
- physRegRecord->assignedInterval = nullptr;
clearConstantReg(assignedRegister, currentInterval->registerType);
}
currentRefPosition->moveReg = true;
diff --git a/src/coreclr/jit/lsraarm64.cpp b/src/coreclr/jit/lsraarm64.cpp
index a7a14fdfe54f96..88644ead77225f 100644
--- a/src/coreclr/jit/lsraarm64.cpp
+++ b/src/coreclr/jit/lsraarm64.cpp
@@ -1132,7 +1132,8 @@ int LinearScan::BuildHWIntrinsic(GenTreeHWIntrinsic* intrinsicTree)
{
// If the index is not a constant or op1 is in register,
// we will use the SIMD temp location to store the vector.
- compiler->getSIMDInitTempVarNum();
+ var_types requiredSimdTempType = (intrin.id == NI_Vector64_GetElement) ? TYP_SIMD8 : TYP_SIMD16;
+ compiler->getSIMDInitTempVarNum(requiredSimdTempType);
}
}
diff --git a/src/coreclr/jit/lsrabuild.cpp b/src/coreclr/jit/lsrabuild.cpp
index cf11833a1f356a..3214c67ac17737 100644
--- a/src/coreclr/jit/lsrabuild.cpp
+++ b/src/coreclr/jit/lsrabuild.cpp
@@ -3413,6 +3413,8 @@ int LinearScan::BuildStoreLoc(GenTreeLclVarCommon* storeLoc)
{
// Need an additional register to create a SIMD8 from EAX/EDX without SSE4.1.
buildInternalFloatRegisterDefForNode(storeLoc, allSIMDRegs());
+ // This internal register must be different from the target register.
+ setInternalRegsDelayFree = true;
}
}
#endif // FEATURE_SIMD && TARGET_X86 && TARGET_WINDOWS
diff --git a/src/coreclr/jit/lsraxarch.cpp b/src/coreclr/jit/lsraxarch.cpp
index f4401828f8ad21..5ccb43dbdd7a41 100644
--- a/src/coreclr/jit/lsraxarch.cpp
+++ b/src/coreclr/jit/lsraxarch.cpp
@@ -2201,7 +2201,8 @@ int LinearScan::BuildHWIntrinsic(GenTreeHWIntrinsic* intrinsicTree)
{
// If the index is not a constant or op1 is in register,
// we will use the SIMD temp location to store the vector.
- compiler->getSIMDInitTempVarNum();
+ var_types requiredSimdTempType = (intrinsicId == NI_Vector128_GetElement) ? TYP_SIMD16 : TYP_SIMD32;
+ compiler->getSIMDInitTempVarNum(requiredSimdTempType);
}
break;
}
diff --git a/src/coreclr/jit/morph.cpp b/src/coreclr/jit/morph.cpp
index 2ff290263c2798..b7ee483fcb09e9 100644
--- a/src/coreclr/jit/morph.cpp
+++ b/src/coreclr/jit/morph.cpp
@@ -5659,6 +5659,7 @@ GenTree* Compiler::fgMorphArrayIndex(GenTree* tree)
GenTreeBoundsChk* arrBndsChk = new (this, GT_ARR_BOUNDS_CHECK)
GenTreeBoundsChk(GT_ARR_BOUNDS_CHECK, TYP_VOID, index, arrLen, SCK_RNGCHK_FAIL);
+ arrBndsChk->gtInxType = elemTyp;
bndsChk = arrBndsChk;
@@ -7896,6 +7897,15 @@ GenTree* Compiler::fgMorphPotentialTailCall(GenTreeCall* call)
// Avoid potential extra work for the return (for example, vzeroupper)
call->gtType = TYP_VOID;
+ // The runtime requires that we perform a null check on the `this` argument before
+ // tail calling to a virtual dispatch stub. This requirement is a consequence of limitations
+ // in the runtime's ability to map an AV to a NullReferenceException if
+ // the AV occurs in a dispatch stub that has unmanaged caller.
+ if (call->IsVirtualStub())
+ {
+ call->gtFlags |= GTF_CALL_NULLCHECK;
+ }
+
// Do some target-specific transformations (before we process the args,
// etc.) for the JIT helper case.
if (tailCallViaJitHelper)
@@ -8622,15 +8632,6 @@ void Compiler::fgMorphTailCallViaJitHelper(GenTreeCall* call)
JITDUMP("fgMorphTailCallViaJitHelper (before):\n");
DISPTREE(call);
- // The runtime requires that we perform a null check on the `this` argument before
- // tail calling to a virtual dispatch stub. This requirement is a consequence of limitations
- // in the runtime's ability to map an AV to a NullReferenceException if
- // the AV occurs in a dispatch stub that has unmanaged caller.
- if (call->IsVirtualStub())
- {
- call->gtFlags |= GTF_CALL_NULLCHECK;
- }
-
// For the helper-assisted tail calls, we need to push all the arguments
// into a single list, and then add a few extra at the beginning or end.
//
@@ -13177,6 +13178,7 @@ GenTree* Compiler::fgMorphSmpOp(GenTree* tree, MorphAddrContext* mac)
GenTree* newOp2 = gtNewIconNode(-constVal, op1op2->TypeGet()); // -C
mulOrDiv->gtOp1 = newOp1;
mulOrDiv->gtOp2 = newOp2;
+ mulOrDiv->SetVNsFromNode(tree);
DEBUG_DESTROY_NODE(tree);
DEBUG_DESTROY_NODE(op1op2);
@@ -13996,6 +13998,12 @@ GenTree* Compiler::fgMorphRetInd(GenTreeUnOp* ret)
if (addr->OperIs(GT_ADDR) && addr->gtGetOp1()->OperIs(GT_LCL_VAR))
{
+ // If struct promotion was undone, adjust the annotations
+ if (fgGlobalMorph && fgMorphImplicitByRefArgs(addr))
+ {
+ return ind;
+ }
+
// If `return` retypes LCL_VAR as a smaller struct it should not set `doNotEnregister` on that
// LclVar.
// Example: in `Vector128:AsVector2` we have RETURN SIMD8(OBJ SIMD8(ADDR byref(LCL_VAR SIMD16))).
@@ -14036,6 +14044,14 @@ GenTree* Compiler::fgMorphRetInd(GenTreeUnOp* ret)
// long<->double` there.
bool canFold = (indSize == lclVarSize) && (lclVarSize <= REGSIZE_BYTES);
#endif
+
+ // Avoid folding primitives to a struct-typed local for cases where we would maybe need to insert normalization on top.
+ // The backend does not correctly handle this for some promoted locals.
+ if (varTypeIsSmall(info.compRetType) && lclVar->TypeIs(TYP_STRUCT))
+ {
+ canFold = false;
+ }
+
// TODO: support `genReturnBB != nullptr`, it requires #11413 to avoid `Incompatible types for
// gtNewTempAssign`.
if (canFold && (genReturnBB == nullptr))
@@ -17661,6 +17677,8 @@ void Compiler::fgRetypeImplicitByRefArgs()
void Compiler::fgMarkDemotedImplicitByRefArgs()
{
+ JITDUMP("\n*************** In fgMarkDemotedImplicitByRefArgs()\n");
+
#if (defined(TARGET_AMD64) && !defined(UNIX_AMD64_ABI)) || defined(TARGET_ARM64)
for (unsigned lclNum = 0; lclNum < info.compArgsCount; lclNum++)
@@ -17669,6 +17687,8 @@ void Compiler::fgMarkDemotedImplicitByRefArgs()
if (lvaIsImplicitByRefLocal(lclNum))
{
+ JITDUMP("Clearing annotation for V%02d\n", lclNum);
+
if (varDsc->lvPromoted)
{
// The parameter is simply a pointer now, so clear lvPromoted. It was left set
@@ -17695,7 +17715,8 @@ void Compiler::fgMarkDemotedImplicitByRefArgs()
LclVarDsc* structVarDsc = &lvaTable[structLclNum];
structVarDsc->lvAddrExposed = false;
#ifdef DEBUG
- structVarDsc->lvUnusedStruct = true;
+ structVarDsc->lvUnusedStruct = true;
+ structVarDsc->lvUndoneStructPromotion = true;
#endif // DEBUG
unsigned fieldLclStart = structVarDsc->lvFieldLclStart;
@@ -17704,6 +17725,8 @@ void Compiler::fgMarkDemotedImplicitByRefArgs()
for (unsigned fieldLclNum = fieldLclStart; fieldLclNum < fieldLclStop; ++fieldLclNum)
{
+ JITDUMP("Fixing pointer for field V%02d from V%02d to V%02d\n", fieldLclNum, lclNum, structLclNum);
+
// Fix the pointer to the parent local.
LclVarDsc* fieldVarDsc = &lvaTable[fieldLclNum];
assert(fieldVarDsc->lvParentLcl == lclNum);
diff --git a/src/coreclr/jit/objectalloc.cpp b/src/coreclr/jit/objectalloc.cpp
index 720ec2585c4d61..0d21c1ab6104db 100644
--- a/src/coreclr/jit/objectalloc.cpp
+++ b/src/coreclr/jit/objectalloc.cpp
@@ -481,6 +481,11 @@ GenTree* ObjectAllocator::MorphAllocObjNodeIntoHelperCall(GenTreeAllocObj* alloc
assert(comp->opts.IsReadyToRun());
helperCall->AsCall()->setEntryPoint(entryPoint);
}
+ else
+ {
+ assert(helper != CORINFO_HELP_READYTORUN_NEW); // If this is true, then we should have collected a non-null
+ // entrypoint above
+ }
#endif
return helperCall;
diff --git a/src/coreclr/jit/optimizer.cpp b/src/coreclr/jit/optimizer.cpp
index fd17d74e4d0899..74f9cbfe1f3da2 100644
--- a/src/coreclr/jit/optimizer.cpp
+++ b/src/coreclr/jit/optimizer.cpp
@@ -1928,13 +1928,26 @@ class LoopSearch
// This blocks is lexically between TOP and BOTTOM, but it does not
// participate in the flow cycle. Check for a run of consecutive
// such blocks.
+ //
+ // If blocks have been reordered and bbNum no longer reflects bbNext ordering
+ // (say by a call to MakeCompactAndFindExits for an earlier loop or unsuccessful
+ // attempt to find a loop), the bottom block of this loop may now appear earlier
+ // in the bbNext chain than other loop blocks. So when the previous hasn't reached bottom
+ // and block is a non-loop block, and we walk the bbNext chain, we may reach the end.
+ // If so, give up on recognition of this loop.
+ //
BasicBlock* lastNonLoopBlock = block;
BasicBlock* nextLoopBlock = block->bbNext;
- while (!loopBlocks.IsMember(nextLoopBlock->bbNum))
+ while ((nextLoopBlock != nullptr) && !loopBlocks.IsMember(nextLoopBlock->bbNum))
{
lastNonLoopBlock = nextLoopBlock;
nextLoopBlock = nextLoopBlock->bbNext;
- // This loop must terminate because we know BOTTOM is in loopBlocks.
+ }
+
+ if (nextLoopBlock == nullptr)
+ {
+ JITDUMP("Did not find expected loop block when walking from " FMT_BB "\n", lastNonLoopBlock->bbNum);
+ return false;
}
// Choose an insertion point for non-loop blocks if we haven't yet done so.
@@ -9033,7 +9046,7 @@ void Compiler::optRemoveRedundantZeroInits()
// the prolog and this explicit intialization. Therefore, it doesn't
// require zero initialization in the prolog.
lclDsc->lvHasExplicitInit = 1;
- JITDUMP("Marking L%02u as having an explicit init\n", lclNum);
+ JITDUMP("Marking V%02u as having an explicit init\n", lclNum);
}
}
break;
diff --git a/src/coreclr/jit/redundantbranchopts.cpp b/src/coreclr/jit/redundantbranchopts.cpp
index 55568c3c74313e..6c96e96d5f761e 100644
--- a/src/coreclr/jit/redundantbranchopts.cpp
+++ b/src/coreclr/jit/redundantbranchopts.cpp
@@ -106,9 +106,11 @@ bool Compiler::optRedundantBranch(BasicBlock* const block)
// Walk up the dom tree and see if any dominating block has branched on
// exactly this tree's VN...
//
- BasicBlock* prevBlock = block;
- BasicBlock* domBlock = block->bbIDom;
- int relopValue = -1;
+ BasicBlock* prevBlock = block;
+ BasicBlock* domBlock = block->bbIDom;
+ int relopValue = -1;
+ unsigned matchCount = 0;
+ const unsigned matchLimit = 4;
if (domBlock == nullptr)
{
@@ -140,6 +142,16 @@ bool Compiler::optRedundantBranch(BasicBlock* const block)
//
if (domCmpVN == tree->GetVN(VNK_Liberal))
{
+ // If we have a long skinny dominator tree we may scale poorly,
+ // and in particular reachability (below) is costly. Give up if
+ // we've matched a few times and failed to optimize.
+ //
+ if (++matchCount > matchLimit)
+ {
+ JITDUMP("Bailing out; %d matches found w/o optimizing\n", matchCount);
+ return false;
+ }
+
// The compare in "tree" is redundant.
// Is there a unique path from the dominating compare?
//
diff --git a/src/coreclr/jit/simd.cpp b/src/coreclr/jit/simd.cpp
index 2eb0fca532ca85..ef5e482df31139 100644
--- a/src/coreclr/jit/simd.cpp
+++ b/src/coreclr/jit/simd.cpp
@@ -107,6 +107,34 @@ int Compiler::getSIMDTypeAlignment(var_types simdType)
#endif
}
+//------------------------------------------------------------------------
+// Get, and allocate if necessary, the SIMD temp used for various operations.
+// The temp is allocated as the maximum sized type of all operations required.
+//
+// Arguments:
+// simdType - Required SIMD type
+//
+// Returns:
+// The temp number
+//
+unsigned Compiler::getSIMDInitTempVarNum(var_types simdType)
+{
+ if (lvaSIMDInitTempVarNum == BAD_VAR_NUM)
+ {
+ JITDUMP("Allocating SIMDInitTempVar as %s\n", varTypeName(simdType));
+ lvaSIMDInitTempVarNum = lvaGrabTempWithImplicitUse(false DEBUGARG("SIMDInitTempVar"));
+ lvaTable[lvaSIMDInitTempVarNum].lvType = simdType;
+ }
+ else if (genTypeSize(lvaTable[lvaSIMDInitTempVarNum].lvType) < genTypeSize(simdType))
+ {
+ // We want the largest required type size for the temp.
+ JITDUMP("Increasing SIMDInitTempVar type size from %s to %s\n",
+ varTypeName(lvaTable[lvaSIMDInitTempVarNum].lvType), varTypeName(simdType));
+ lvaTable[lvaSIMDInitTempVarNum].lvType = simdType;
+ }
+ return lvaSIMDInitTempVarNum;
+}
+
//----------------------------------------------------------------------------------
// Return the base type and size of SIMD vector type given its type handle.
//
diff --git a/src/coreclr/jit/valuenum.cpp b/src/coreclr/jit/valuenum.cpp
index 0e924073112cda..4a77cb41a524d7 100644
--- a/src/coreclr/jit/valuenum.cpp
+++ b/src/coreclr/jit/valuenum.cpp
@@ -4242,11 +4242,12 @@ ValueNum Compiler::fgValueNumberArrIndexVal(GenTree* tree,
var_types elemTyp = DecodeElemType(elemTypeEq);
var_types indType = (tree == nullptr) ? elemTyp : tree->TypeGet();
ValueNum selectedElem;
+ unsigned elemWidth = elemTyp == TYP_STRUCT ? info.compCompHnd->getClassSize(elemTypeEq) : genTypeSize(elemTyp);
- if (fldSeq == FieldSeqStore::NotAField())
+ if ((fldSeq == FieldSeqStore::NotAField()) || (genTypeSize(indType) > elemWidth))
{
// This doesn't represent a proper array access
- JITDUMP(" *** NotAField sequence encountered in fgValueNumberArrIndexVal\n");
+ JITDUMP(" *** Not a proper arrray access encountered in fgValueNumberArrIndexVal\n");
// a new unique value number
selectedElem = vnStore->VNForExpr(compCurBB, elemTyp);
@@ -5789,6 +5790,7 @@ static genTreeOps genTreeOpsIllegalAsVNFunc[] = {GT_IND, // When we do heap memo
GT_OBJ, // May reference heap memory.
GT_BLK, // May reference heap memory.
GT_INIT_VAL, // Not strictly a pass-through.
+ GT_LEA, // Needs to encode scale/offset. .NET7+ has no LEA in HIR.
// These control-flow operations need no values.
GT_JTRUE, GT_RETURN, GT_SWITCH, GT_RETFILT, GT_CKFINITE};
@@ -7116,6 +7118,7 @@ void Compiler::fgValueNumberBlockAssignment(GenTree* tree)
unsigned lhsLclNum = lclVarTree->GetLclNum();
FieldSeqNode* lhsFldSeq = nullptr;
unsigned lclDefSsaNum = GetSsaNumForLocalVarDef(lclVarTree);
+ LclVarDsc* lhsVarDsc = lvaGetDesc(lhsLclNum);
// If it's excluded from SSA, don't need to do anything.
if (lvaInSsa(lhsLclNum) && lclDefSsaNum != SsaConfig::RESERVED_SSA_NUM)
{
@@ -7176,9 +7179,7 @@ void Compiler::fgValueNumberBlockAssignment(GenTree* tree)
}
else
{
- rhsVNPair = lvaTable[rhsLclVarTree->GetLclNum()]
- .GetPerSsaData(rhsLclVarTree->GetSsaNum())
- ->m_vnPair;
+ rhsVNPair = rhsVarDsc->GetPerSsaData(rhsLclVarTree->GetSsaNum())->m_vnPair;
var_types indType = rhsLclVarTree->TypeGet();
rhsVNPair = vnStore->VNPairApplySelectors(rhsVNPair, rhsFldSeq, indType);
@@ -7186,7 +7187,6 @@ void Compiler::fgValueNumberBlockAssignment(GenTree* tree)
}
else
{
- rhsVNPair.SetBoth(vnStore->VNForExpr(compCurBB, rhs->TypeGet()));
isNewUniq = true;
}
}
@@ -7205,9 +7205,7 @@ void Compiler::fgValueNumberBlockAssignment(GenTree* tree)
}
else
{
- rhsVNPair = lvaTable[rhsLclVarTree->GetLclNum()]
- .GetPerSsaData(rhsLclVarTree->GetSsaNum())
- ->m_vnPair;
+ rhsVNPair = rhsVarDsc->GetPerSsaData(rhsLclVarTree->GetSsaNum())->m_vnPair;
var_types indType = rhsLclVarTree->TypeGet();
rhsVNPair = vnStore->VNPairApplySelectors(rhsVNPair, rhsFldSeq, indType);
@@ -7273,6 +7271,11 @@ void Compiler::fgValueNumberBlockAssignment(GenTree* tree)
isNewUniq = true;
}
+ if (!isNewUniq && (lclVarTree != nullptr) && (rhsLclVarTree != nullptr))
+ {
+ isNewUniq = fgValueNumberIsStructReinterpretation(lclVarTree, rhsLclVarTree);
+ }
+
if (isNewUniq)
{
rhsVNPair.SetBoth(vnStore->VNForExpr(compCurBB, lclVarTree->TypeGet()));
@@ -7293,14 +7296,13 @@ void Compiler::fgValueNumberBlockAssignment(GenTree* tree)
}
else
{
- ValueNumPair oldLhsVNPair =
- lvaTable[lhsLclNum].GetPerSsaData(lclVarTree->GetSsaNum())->m_vnPair;
+ ValueNumPair oldLhsVNPair = lhsVarDsc->GetPerSsaData(lclVarTree->GetSsaNum())->m_vnPair;
rhsVNPair = vnStore->VNPairApplySelectorsAssign(oldLhsVNPair, lhsFldSeq, rhsVNPair,
lclVarTree->TypeGet(), compCurBB);
}
}
- lvaTable[lhsLclNum].GetPerSsaData(lclDefSsaNum)->m_vnPair = vnStore->VNPNormalPair(rhsVNPair);
+ lhsVarDsc->GetPerSsaData(lclDefSsaNum)->m_vnPair = vnStore->VNPNormalPair(rhsVNPair);
#ifdef DEBUG
if (verbose)
@@ -7338,6 +7340,67 @@ void Compiler::fgValueNumberBlockAssignment(GenTree* tree)
}
}
+//------------------------------------------------------------------------
+// fgValueNumberIsStructReinterpretation: Checks if there is a struct reinterpretation that prevent VN propagation.
+//
+// Arguments:
+// lhsLclVarTree - a lcl var tree on the lhs of the asg;
+// rhsLclVarTree - a lcl var tree on the rhs of the asg;
+//
+// Return Value:
+// True if the locals have different struct types and VN can't use rhs VN for lhs VN.
+// False if locals have the same struct type or if this ASG is not a struct ASG.
+//
+bool Compiler::fgValueNumberIsStructReinterpretation(GenTreeLclVarCommon* lhsLclVarTree,
+ GenTreeLclVarCommon* rhsLclVarTree)
+{
+ assert(lhsLclVarTree != nullptr);
+ assert(rhsLclVarTree != nullptr);
+
+ if (rhsLclVarTree->TypeGet() == TYP_STRUCT)
+ {
+ if (rhsLclVarTree->TypeGet() == lhsLclVarTree->TypeGet())
+ {
+ if (lhsLclVarTree->isLclField() || rhsLclVarTree->isLclField())
+ {
+ // Jit does not have a real support for `LCL_FLD struct [FldSeq]` because it can't determinate their
+ // size
+ // when the fieldSeq is `NotAField`, but by mistake we could have
+ // `BLK(ADDR byref(LCL_FLD struct Fseq[]))` nowadays in out IR.
+ // Generate a unique VN for now, it currently won't match the other side,
+ // otherwise we would not have 'OBJ struct2 (ADDR(LCL_FLD struct1))` cast.
+ return true;
+ }
+
+ assert(lhsLclVarTree->OperIs(GT_LCL_VAR));
+ assert(rhsLclVarTree->OperIs(GT_LCL_VAR));
+
+ const LclVarDsc* lhsVarDsc = lvaGetDesc(lhsLclVarTree);
+ const LclVarDsc* rhsVarDsc = lvaGetDesc(rhsLclVarTree);
+ assert(rhsVarDsc->TypeGet() == TYP_STRUCT);
+ assert(lhsVarDsc->TypeGet() == TYP_STRUCT);
+
+ CORINFO_CLASS_HANDLE rhsStructHnd = rhsVarDsc->GetStructHnd();
+ CORINFO_CLASS_HANDLE lhsStructHnd = lhsVarDsc->GetStructHnd();
+
+ if (rhsStructHnd != lhsStructHnd)
+ {
+ // This can occur for nested structs or for unsafe casts, when we have IR like
+ // struct1 = struct2.
+ // Use an unique value number for the old map, as we don't have information about
+ // the dst field values using dst FIELD_HANDLE.
+ // Note that other asignments, like struct1 = IND struct(ADDR(LCL_VAR long))
+ // will be handled in `VNPairApplySelectorsAssign`, here we care only about
+ // `LCL_VAR structX = (*)LCL_VAR structY` cases.
+ JITDUMP(" *** Different struct handles for Dst/Src of COPYBLK\n");
+ return true;
+ }
+ }
+ }
+
+ return false;
+}
+
void Compiler::fgValueNumberTree(GenTree* tree)
{
genTreeOps oper = tree->OperGet();
@@ -7989,12 +8052,10 @@ void Compiler::fgValueNumberTree(GenTree* tree)
rhsVNPair.SetBoth(vnStore->VNForExpr(compCurBB, lclVarTree->TypeGet()));
}
- unsigned lclDefSsaNum;
ValueNumPair newLhsVNPair;
if (isEntire)
{
newLhsVNPair = rhsVNPair;
- lclDefSsaNum = lclVarTree->GetSsaNum();
}
else
{
@@ -8003,12 +8064,13 @@ void Compiler::fgValueNumberTree(GenTree* tree)
ValueNumPair oldLhsVNPair = lvaTable[lclVarTree->GetLclNum()]
.GetPerSsaData(lclVarTree->GetSsaNum())
->m_vnPair;
- lclDefSsaNum = GetSsaNumForLocalVarDef(lclVarTree);
newLhsVNPair =
vnStore->VNPairApplySelectorsAssign(oldLhsVNPair, fieldSeq, rhsVNPair,
lhs->TypeGet(), compCurBB);
}
+ unsigned lclDefSsaNum = GetSsaNumForLocalVarDef(lclVarTree);
+
if (lclDefSsaNum != SsaConfig::RESERVED_SSA_NUM)
{
lvaTable[lclNum].GetPerSsaData(lclDefSsaNum)->m_vnPair = newLhsVNPair;
@@ -9764,25 +9826,25 @@ VNFunc Compiler::fgValueNumberJitHelperMethodVNFunc(CorInfoHelpFunc helpFunc)
vnf = VNF_Dbl2Int;
break;
case CORINFO_HELP_DBL2INT_OVF:
- vnf = VNF_Dbl2Int;
+ vnf = VNF_Dbl2IntOvf;
break;
case CORINFO_HELP_DBL2LNG:
vnf = VNF_Dbl2Lng;
break;
case CORINFO_HELP_DBL2LNG_OVF:
- vnf = VNF_Dbl2Lng;
+ vnf = VNF_Dbl2LngOvf;
break;
case CORINFO_HELP_DBL2UINT:
vnf = VNF_Dbl2UInt;
break;
case CORINFO_HELP_DBL2UINT_OVF:
- vnf = VNF_Dbl2UInt;
+ vnf = VNF_Dbl2UIntOvf;
break;
case CORINFO_HELP_DBL2ULNG:
vnf = VNF_Dbl2ULng;
break;
case CORINFO_HELP_DBL2ULNG_OVF:
- vnf = VNF_Dbl2ULng;
+ vnf = VNF_Dbl2ULngOvf;
break;
case CORINFO_HELP_FLTREM:
vnf = VNFunc(GT_MOD);
diff --git a/src/coreclr/jit/valuenumfuncs.h b/src/coreclr/jit/valuenumfuncs.h
index 6b5c89bbbbf485..6b2fa5236f3a17 100644
--- a/src/coreclr/jit/valuenumfuncs.h
+++ b/src/coreclr/jit/valuenumfuncs.h
@@ -75,6 +75,10 @@ ValueNumFuncDef(Dbl2Int, 1, false, false, false)
ValueNumFuncDef(Dbl2UInt, 1, false, false, false)
ValueNumFuncDef(Dbl2Lng, 1, false, false, false)
ValueNumFuncDef(Dbl2ULng, 1, false, false, false)
+ValueNumFuncDef(Dbl2IntOvf, 1, false, false, false)
+ValueNumFuncDef(Dbl2UIntOvf, 1, false, false, false)
+ValueNumFuncDef(Dbl2LngOvf, 1, false, false, false)
+ValueNumFuncDef(Dbl2ULngOvf, 1, false, false, false)
ValueNumFuncDef(FltRound, 1, false, false, false)
ValueNumFuncDef(DblRound, 1, false, false, false)
diff --git a/src/coreclr/md/enc/pdbheap.cpp b/src/coreclr/md/enc/pdbheap.cpp
index 962472ac65a2e0..a95cf4ccefd6da 100644
--- a/src/coreclr/md/enc/pdbheap.cpp
+++ b/src/coreclr/md/enc/pdbheap.cpp
@@ -26,6 +26,16 @@ HRESULT PdbHeap::SetData(PORT_PDB_STREAM* data)
(sizeof(ULONG) * data->typeSystemTableRowsSize);
m_data = new BYTE[m_size];
+#if BIGENDIAN
+ PORT_PDB_STREAM swappedData = *data;
+ SwapGuid(&swappedData.id.pdbGuid);
+ swappedData.id.pdbTimeStamp = VAL32(swappedData.id.pdbTimeStamp);
+ swappedData.entryPoint = VAL32(swappedData.entryPoint);
+ swappedData.referencedTypeSystemTables = VAL64(swappedData.referencedTypeSystemTables);
+ // typeSystemTableRows and typeSystemTableRowsSize handled below
+ data = &swappedData;
+#endif
+
ULONG offset = 0;
if (memcpy_s(m_data + offset, m_size, &data->id, sizeof(data->id)))
return E_FAIL;
@@ -39,9 +49,17 @@ HRESULT PdbHeap::SetData(PORT_PDB_STREAM* data)
return E_FAIL;
offset += sizeof(data->referencedTypeSystemTables);
+#if !BIGENDIAN
if (memcpy_s(m_data + offset, m_size, data->typeSystemTableRows, sizeof(ULONG) * data->typeSystemTableRowsSize))
return E_FAIL;
offset += sizeof(ULONG) * data->typeSystemTableRowsSize;
+#else
+ for (int i = 0; i < data->typeSystemTableRowsSize; i++)
+ {
+ SET_UNALIGNED_VAL32(m_data + offset, data->typeSystemTableRows[i]);
+ offset += sizeof(ULONG);
+ }
+#endif
_ASSERTE(offset == m_size);
diff --git a/src/coreclr/pal/inc/pal.h b/src/coreclr/pal/inc/pal.h
index cd96f5753cc8fd..c17811b0853d81 100644
--- a/src/coreclr/pal/inc/pal.h
+++ b/src/coreclr/pal/inc/pal.h
@@ -432,13 +432,22 @@ PALAPI
PAL_SetShutdownCallback(
IN PSHUTDOWN_CALLBACK callback);
+// Must be the same as the copy in excep.h and the WriteDumpFlags enum in the diagnostics repo
+enum
+{
+ GenerateDumpFlagsNone = 0x00,
+ GenerateDumpFlagsLoggingEnabled = 0x01,
+ GenerateDumpFlagsVerboseLoggingEnabled = 0x02,
+ GenerateDumpFlagsCrashReportEnabled = 0x04
+};
+
PALIMPORT
BOOL
PALAPI
PAL_GenerateCoreDump(
IN LPCSTR dumpName,
IN INT dumpType,
- IN BOOL diag);
+ IN ULONG32 flags);
typedef VOID (*PPAL_STARTUP_CALLBACK)(
char *modulePath,
@@ -2405,6 +2414,7 @@ PALIMPORT
size_t
PALAPI
PAL_GetLogicalProcessorCacheSizeFromOS();
+#define GetLogicalProcessorCacheSizeFromOS PAL_GetLogicalProcessorCacheSizeFromOS
typedef BOOL(*UnwindReadMemoryCallback)(PVOID address, PVOID buffer, SIZE_T size);
@@ -2412,7 +2422,7 @@ PALIMPORT BOOL PALAPI PAL_VirtualUnwind(CONTEXT *context, KNONVOLATILE_CONTEXT_P
PALIMPORT BOOL PALAPI PAL_VirtualUnwindOutOfProc(CONTEXT *context, KNONVOLATILE_CONTEXT_POINTERS *contextPointers, PULONG64 functionStart, SIZE_T baseAddress, UnwindReadMemoryCallback readMemoryCallback);
-#define GetLogicalProcessorCacheSizeFromOS PAL_GetLogicalProcessorCacheSizeFromOS
+PALIMPORT BOOL PALAPI PAL_GetUnwindInfoSize(SIZE_T baseAddress, ULONG64 ehFrameHdrAddr, UnwindReadMemoryCallback readMemoryCallback, PULONG64 ehFrameStart, PULONG64 ehFrameSize);
/* PAL_CS_NATIVE_DATA_SIZE is defined as sizeof(PAL_CRITICAL_SECTION_NATIVE_DATA) */
@@ -4082,15 +4092,11 @@ inline WCHAR *PAL_wcsstr(WCHAR* S, const WCHAR* P)
}
#endif
-#if defined(__llvm__)
-#define HAS_ROTL __has_builtin(_rotl)
-#define HAS_ROTR __has_builtin(_rotr)
-#else
-#define HAS_ROTL 0
-#define HAS_ROTR 0
+#ifndef __has_builtin
+#define __has_builtin(x) 0
#endif
-#if !HAS_ROTL
+#if !__has_builtin(_rotl)
/*++
Function:
_rotl
@@ -4108,14 +4114,14 @@ unsigned int __cdecl _rotl(unsigned int value, int shift)
retval = (value << shift) | (value >> (sizeof(int) * CHAR_BIT - shift));
return retval;
}
-#endif // !HAS_ROTL
+#endif // !__has_builtin(_rotl)
// On 64 bit unix, make the long an int.
#ifdef HOST_64BIT
#define _lrotl _rotl
-#endif // HOST_64BIT
+#endif
-#if !HAS_ROTR
+#if !__has_builtin(_rotr)
/*++
Function:
@@ -4135,7 +4141,7 @@ unsigned int __cdecl _rotr(unsigned int value, int shift)
return retval;
}
-#endif // !HAS_ROTR
+#endif // !__has_builtin(_rotr)
PALIMPORT int __cdecl abs(int);
// clang complains if this is declared with __int64
diff --git a/src/coreclr/pal/prebuilt/idl/cordebug_i.cpp b/src/coreclr/pal/prebuilt/idl/cordebug_i.cpp
index 0499684f403d4b..c509c3c16cd529 100644
--- a/src/coreclr/pal/prebuilt/idl/cordebug_i.cpp
+++ b/src/coreclr/pal/prebuilt/idl/cordebug_i.cpp
@@ -1,3 +1,5 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
@@ -7,10 +9,10 @@
/* File created by MIDL compiler version 8.01.0622 */
/* Compiler settings for cordebug.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.01.0622
+ Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 8.01.0622
protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
+ error checks: allocation ref bounds_check enum stub_data
+ VC __declspec() decoration level:
__declspec(uuid()), __declspec(selectany), __declspec(novtable)
DECLSPEC_UUID(), MIDL_INTERFACE()
*/
@@ -21,7 +23,7 @@
#ifdef __cplusplus
extern "C"{
-#endif
+#endif
#include
@@ -251,6 +253,9 @@ MIDL_DEFINE_GUID(IID, IID_ICorDebugThread3,0xF8544EC3,0x5E4E,0x46c7,0x8D,0x3E,0x
MIDL_DEFINE_GUID(IID, IID_ICorDebugThread4,0x1A1F204B,0x1C66,0x4637,0x82,0x3F,0x3E,0xE6,0xC7,0x44,0xA6,0x9C);
+MIDL_DEFINE_GUID(IID, IID_ICorDebugThread5,0xF98421C4,0xE506,0x4D24,0x91,0x6F,0x02,0x37,0xEE,0x85,0x3E,0xC6);
+
+
MIDL_DEFINE_GUID(IID, IID_ICorDebugStackWalk,0xA0647DE9,0x55DE,0x4816,0x92,0x9C,0x38,0x52,0x71,0xC6,0x4C,0xF7);
@@ -480,6 +485,3 @@ MIDL_DEFINE_GUID(CLSID, CLSID_EmbeddedCLRCorDebug,0x211f1254,0xbc7e,0x4af5,0xb9,
#ifdef __cplusplus
}
#endif
-
-
-
diff --git a/src/coreclr/pal/prebuilt/inc/cordebug.h b/src/coreclr/pal/prebuilt/inc/cordebug.h
index ed5c428df0e972..df876984714400 100644
--- a/src/coreclr/pal/prebuilt/inc/cordebug.h
+++ b/src/coreclr/pal/prebuilt/inc/cordebug.h
@@ -1,14 +1,15 @@
-
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
/* this ALWAYS GENERATED file contains the definitions for the interfaces */
/* File created by MIDL compiler version 8.01.0622 */
/* Compiler settings for cordebug.idl:
- Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.01.0622
+ Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 8.01.0622
protocol : dce , ms_ext, c_ext, robust
- error checks: allocation ref bounds_check enum stub_data
- VC __declspec() decoration level:
+ error checks: allocation ref bounds_check enum stub_data
+ VC __declspec() decoration level:
__declspec(uuid()), __declspec(selectany), __declspec(novtable)
DECLSPEC_UUID(), MIDL_INTERFACE()
*/
@@ -41,7 +42,7 @@
#pragma once
#endif
-/* Forward Declarations */
+/* Forward Declarations */
#ifndef __ICorDebugDataTarget_FWD_DEFINED__
#define __ICorDebugDataTarget_FWD_DEFINED__
@@ -477,6 +478,13 @@ typedef interface ICorDebugThread4 ICorDebugThread4;
#endif /* __ICorDebugThread4_FWD_DEFINED__ */
+#ifndef __ICorDebugThread5_FWD_DEFINED__
+#define __ICorDebugThread5_FWD_DEFINED__
+typedef interface ICorDebugThread5 ICorDebugThread5;
+
+#endif /* __ICorDebugThread5_FWD_DEFINED__ */
+
+
#ifndef __ICorDebugStackWalk_FWD_DEFINED__
#define __ICorDebugStackWalk_FWD_DEFINED__
typedef interface ICorDebugStackWalk ICorDebugStackWalk;
@@ -1242,11 +1250,11 @@ typedef interface ICorDebugModule3 ICorDebugModule3;
#ifdef __cplusplus
extern "C"{
-#endif
+#endif
/* interface __MIDL_itf_cordebug_0000_0000 */
-/* [local] */
+/* [local] */
#if 0
typedef UINT32 mdToken;
@@ -1300,7 +1308,7 @@ typedef struct _COR_IL_MAP
#endif //_COR_IL_MAP
#ifndef _COR_DEBUG_IL_TO_NATIVE_MAP_
#define _COR_DEBUG_IL_TO_NATIVE_MAP_
-typedef
+typedef
enum CorDebugIlToNativeMappingTypes
{
NO_MAPPING = -1,
@@ -1317,7 +1325,7 @@ typedef struct COR_DEBUG_IL_TO_NATIVE_MAP
#endif // _COR_DEBUG_IL_TO_NATIVE_MAP_
#define REMOTE_DEBUGGING_DLL_ENTRY L"Software\\Microsoft\\.NETFramework\\Debugger\\ActivateRemoteDebugging"
-typedef
+typedef
enum CorDebugJITCompilerFlags
{
CORDEBUG_JIT_DEFAULT = 0x1,
@@ -1325,20 +1333,21 @@ enum CorDebugJITCompilerFlags
CORDEBUG_JIT_ENABLE_ENC = 0x7
} CorDebugJITCompilerFlags;
-typedef
+typedef
enum CorDebugJITCompilerFlagsDecprecated
{
CORDEBUG_JIT_TRACK_DEBUG_INFO = 0x1
} CorDebugJITCompilerFlagsDeprecated;
-typedef
+typedef
enum CorDebugNGENPolicy
{
DISABLE_LOCAL_NIC = 1
} CorDebugNGENPolicy;
#pragma warning(push)
-#pragma warning(disable:28718)
+#pragma warning(disable:28718)
+
@@ -1412,7 +1421,7 @@ typedef ULONG64 CORDB_REGISTER;
typedef DWORD CORDB_CONTINUE_STATUS;
-typedef
+typedef
enum CorDebugBlockingReason
{
BLOCKING_NONE = 0,
@@ -1450,9 +1459,9 @@ extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0000_v0_0_s_ifspec;
#define __ICorDebugDataTarget_INTERFACE_DEFINED__
/* interface ICorDebugDataTarget */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
-typedef
+typedef
enum CorDebugPlatform
{
CORDB_PLATFORM_WINDOWS_X86 = 0,
@@ -1466,72 +1475,72 @@ enum CorDebugPlatform
CORDB_PLATFORM_POSIX_AMD64 = ( CORDB_PLATFORM_WINDOWS_ARM64 + 1 ) ,
CORDB_PLATFORM_POSIX_X86 = ( CORDB_PLATFORM_POSIX_AMD64 + 1 ) ,
CORDB_PLATFORM_POSIX_ARM = ( CORDB_PLATFORM_POSIX_X86 + 1 ) ,
- CORDB_PLATFORM_POSIX_ARM64 = ( CORDB_PLATFORM_POSIX_ARM + 1 )
+ CORDB_PLATFORM_POSIX_ARM64 = ( CORDB_PLATFORM_POSIX_ARM + 1 )
} CorDebugPlatform;
EXTERN_C const IID IID_ICorDebugDataTarget;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("FE06DC28-49FB-4636-A4A3-E80DB4AE116C")
ICorDebugDataTarget : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetPlatform(
+ virtual HRESULT STDMETHODCALLTYPE GetPlatform(
/* [out] */ CorDebugPlatform *pTargetPlatform) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE ReadVirtual(
+
+ virtual HRESULT STDMETHODCALLTYPE ReadVirtual(
/* [in] */ CORDB_ADDRESS address,
/* [length_is][size_is][out] */ BYTE *pBuffer,
/* [in] */ ULONG32 bytesRequested,
/* [out] */ ULONG32 *pBytesRead) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetThreadContext(
+
+ virtual HRESULT STDMETHODCALLTYPE GetThreadContext(
/* [in] */ DWORD dwThreadID,
/* [in] */ ULONG32 contextFlags,
/* [in] */ ULONG32 contextSize,
/* [size_is][out] */ BYTE *pContext) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugDataTargetVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugDataTarget * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugDataTarget * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugDataTarget * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetPlatform )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetPlatform )(
ICorDebugDataTarget * This,
/* [out] */ CorDebugPlatform *pTargetPlatform);
-
- HRESULT ( STDMETHODCALLTYPE *ReadVirtual )(
+
+ HRESULT ( STDMETHODCALLTYPE *ReadVirtual )(
ICorDebugDataTarget * This,
/* [in] */ CORDB_ADDRESS address,
/* [length_is][size_is][out] */ BYTE *pBuffer,
/* [in] */ ULONG32 bytesRequested,
/* [out] */ ULONG32 *pBytesRead);
-
- HRESULT ( STDMETHODCALLTYPE *GetThreadContext )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetThreadContext )(
ICorDebugDataTarget * This,
/* [in] */ DWORD dwThreadID,
/* [in] */ ULONG32 contextFlags,
/* [in] */ ULONG32 contextSize,
/* [size_is][out] */ BYTE *pContext);
-
+
END_INTERFACE
} ICorDebugDataTargetVtbl;
@@ -1540,29 +1549,29 @@ EXTERN_C const IID IID_ICorDebugDataTarget;
CONST_VTBL struct ICorDebugDataTargetVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugDataTarget_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugDataTarget_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugDataTarget_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugDataTarget_GetPlatform(This,pTargetPlatform) \
- ( (This)->lpVtbl -> GetPlatform(This,pTargetPlatform) )
+ ( (This)->lpVtbl -> GetPlatform(This,pTargetPlatform) )
#define ICorDebugDataTarget_ReadVirtual(This,address,pBuffer,bytesRequested,pBytesRead) \
- ( (This)->lpVtbl -> ReadVirtual(This,address,pBuffer,bytesRequested,pBytesRead) )
+ ( (This)->lpVtbl -> ReadVirtual(This,address,pBuffer,bytesRequested,pBytesRead) )
#define ICorDebugDataTarget_GetThreadContext(This,dwThreadID,contextFlags,contextSize,pContext) \
- ( (This)->lpVtbl -> GetThreadContext(This,dwThreadID,contextFlags,contextSize,pContext) )
+ ( (This)->lpVtbl -> GetThreadContext(This,dwThreadID,contextFlags,contextSize,pContext) )
#endif /* COBJMACROS */
@@ -1579,63 +1588,63 @@ EXTERN_C const IID IID_ICorDebugDataTarget;
#define __ICorDebugStaticFieldSymbol_INTERFACE_DEFINED__
/* interface ICorDebugStaticFieldSymbol */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugStaticFieldSymbol;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("CBF9DA63-F68D-4BBB-A21C-15A45EAADF5B")
ICorDebugStaticFieldSymbol : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetName(
+ virtual HRESULT STDMETHODCALLTYPE GetName(
/* [in] */ ULONG32 cchName,
/* [out] */ ULONG32 *pcchName,
/* [length_is][size_is][out] */ WCHAR szName[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetSize(
+
+ virtual HRESULT STDMETHODCALLTYPE GetSize(
/* [out] */ ULONG32 *pcbSize) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetAddress(
+
+ virtual HRESULT STDMETHODCALLTYPE GetAddress(
/* [out] */ CORDB_ADDRESS *pRVA) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugStaticFieldSymbolVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugStaticFieldSymbol * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugStaticFieldSymbol * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugStaticFieldSymbol * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetName )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetName )(
ICorDebugStaticFieldSymbol * This,
/* [in] */ ULONG32 cchName,
/* [out] */ ULONG32 *pcchName,
/* [length_is][size_is][out] */ WCHAR szName[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetSize )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetSize )(
ICorDebugStaticFieldSymbol * This,
/* [out] */ ULONG32 *pcbSize);
-
- HRESULT ( STDMETHODCALLTYPE *GetAddress )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetAddress )(
ICorDebugStaticFieldSymbol * This,
/* [out] */ CORDB_ADDRESS *pRVA);
-
+
END_INTERFACE
} ICorDebugStaticFieldSymbolVtbl;
@@ -1644,29 +1653,29 @@ EXTERN_C const IID IID_ICorDebugStaticFieldSymbol;
CONST_VTBL struct ICorDebugStaticFieldSymbolVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugStaticFieldSymbol_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugStaticFieldSymbol_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugStaticFieldSymbol_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugStaticFieldSymbol_GetName(This,cchName,pcchName,szName) \
- ( (This)->lpVtbl -> GetName(This,cchName,pcchName,szName) )
+ ( (This)->lpVtbl -> GetName(This,cchName,pcchName,szName) )
#define ICorDebugStaticFieldSymbol_GetSize(This,pcbSize) \
- ( (This)->lpVtbl -> GetSize(This,pcbSize) )
+ ( (This)->lpVtbl -> GetSize(This,pcbSize) )
#define ICorDebugStaticFieldSymbol_GetAddress(This,pRVA) \
- ( (This)->lpVtbl -> GetAddress(This,pRVA) )
+ ( (This)->lpVtbl -> GetAddress(This,pRVA) )
#endif /* COBJMACROS */
@@ -1683,63 +1692,63 @@ EXTERN_C const IID IID_ICorDebugStaticFieldSymbol;
#define __ICorDebugInstanceFieldSymbol_INTERFACE_DEFINED__
/* interface ICorDebugInstanceFieldSymbol */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugInstanceFieldSymbol;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("A074096B-3ADC-4485-81DA-68C7A4EA52DB")
ICorDebugInstanceFieldSymbol : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetName(
+ virtual HRESULT STDMETHODCALLTYPE GetName(
/* [in] */ ULONG32 cchName,
/* [out] */ ULONG32 *pcchName,
/* [length_is][size_is][out] */ WCHAR szName[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetSize(
+
+ virtual HRESULT STDMETHODCALLTYPE GetSize(
/* [out] */ ULONG32 *pcbSize) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetOffset(
+
+ virtual HRESULT STDMETHODCALLTYPE GetOffset(
/* [out] */ ULONG32 *pcbOffset) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugInstanceFieldSymbolVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugInstanceFieldSymbol * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugInstanceFieldSymbol * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugInstanceFieldSymbol * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetName )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetName )(
ICorDebugInstanceFieldSymbol * This,
/* [in] */ ULONG32 cchName,
/* [out] */ ULONG32 *pcchName,
/* [length_is][size_is][out] */ WCHAR szName[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetSize )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetSize )(
ICorDebugInstanceFieldSymbol * This,
/* [out] */ ULONG32 *pcbSize);
-
- HRESULT ( STDMETHODCALLTYPE *GetOffset )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetOffset )(
ICorDebugInstanceFieldSymbol * This,
/* [out] */ ULONG32 *pcbOffset);
-
+
END_INTERFACE
} ICorDebugInstanceFieldSymbolVtbl;
@@ -1748,29 +1757,29 @@ EXTERN_C const IID IID_ICorDebugInstanceFieldSymbol;
CONST_VTBL struct ICorDebugInstanceFieldSymbolVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugInstanceFieldSymbol_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugInstanceFieldSymbol_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugInstanceFieldSymbol_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugInstanceFieldSymbol_GetName(This,cchName,pcchName,szName) \
- ( (This)->lpVtbl -> GetName(This,cchName,pcchName,szName) )
+ ( (This)->lpVtbl -> GetName(This,cchName,pcchName,szName) )
#define ICorDebugInstanceFieldSymbol_GetSize(This,pcbSize) \
- ( (This)->lpVtbl -> GetSize(This,pcbSize) )
+ ( (This)->lpVtbl -> GetSize(This,pcbSize) )
#define ICorDebugInstanceFieldSymbol_GetOffset(This,pcbOffset) \
- ( (This)->lpVtbl -> GetOffset(This,pcbOffset) )
+ ( (This)->lpVtbl -> GetOffset(This,pcbOffset) )
#endif /* COBJMACROS */
@@ -1787,76 +1796,76 @@ EXTERN_C const IID IID_ICorDebugInstanceFieldSymbol;
#define __ICorDebugVariableSymbol_INTERFACE_DEFINED__
/* interface ICorDebugVariableSymbol */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugVariableSymbol;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("707E8932-1163-48D9-8A93-F5B1F480FBB7")
ICorDebugVariableSymbol : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetName(
+ virtual HRESULT STDMETHODCALLTYPE GetName(
/* [in] */ ULONG32 cchName,
/* [out] */ ULONG32 *pcchName,
/* [length_is][size_is][out] */ WCHAR szName[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetSize(
+
+ virtual HRESULT STDMETHODCALLTYPE GetSize(
/* [out] */ ULONG32 *pcbValue) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetValue(
+
+ virtual HRESULT STDMETHODCALLTYPE GetValue(
/* [in] */ ULONG32 offset,
/* [in] */ ULONG32 cbContext,
/* [size_is][in] */ BYTE context[ ],
/* [in] */ ULONG32 cbValue,
/* [out] */ ULONG32 *pcbValue,
/* [length_is][size_is][out] */ BYTE pValue[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE SetValue(
+
+ virtual HRESULT STDMETHODCALLTYPE SetValue(
/* [in] */ ULONG32 offset,
/* [in] */ DWORD threadID,
/* [in] */ ULONG32 cbContext,
/* [size_is][in] */ BYTE context[ ],
/* [in] */ ULONG32 cbValue,
/* [size_is][in] */ BYTE pValue[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetSlotIndex(
+
+ virtual HRESULT STDMETHODCALLTYPE GetSlotIndex(
/* [out] */ ULONG32 *pSlotIndex) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugVariableSymbolVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugVariableSymbol * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugVariableSymbol * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugVariableSymbol * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetName )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetName )(
ICorDebugVariableSymbol * This,
/* [in] */ ULONG32 cchName,
/* [out] */ ULONG32 *pcchName,
/* [length_is][size_is][out] */ WCHAR szName[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetSize )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetSize )(
ICorDebugVariableSymbol * This,
/* [out] */ ULONG32 *pcbValue);
-
- HRESULT ( STDMETHODCALLTYPE *GetValue )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetValue )(
ICorDebugVariableSymbol * This,
/* [in] */ ULONG32 offset,
/* [in] */ ULONG32 cbContext,
@@ -1864,8 +1873,8 @@ EXTERN_C const IID IID_ICorDebugVariableSymbol;
/* [in] */ ULONG32 cbValue,
/* [out] */ ULONG32 *pcbValue,
/* [length_is][size_is][out] */ BYTE pValue[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *SetValue )(
+
+ HRESULT ( STDMETHODCALLTYPE *SetValue )(
ICorDebugVariableSymbol * This,
/* [in] */ ULONG32 offset,
/* [in] */ DWORD threadID,
@@ -1873,11 +1882,11 @@ EXTERN_C const IID IID_ICorDebugVariableSymbol;
/* [size_is][in] */ BYTE context[ ],
/* [in] */ ULONG32 cbValue,
/* [size_is][in] */ BYTE pValue[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetSlotIndex )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetSlotIndex )(
ICorDebugVariableSymbol * This,
/* [out] */ ULONG32 *pSlotIndex);
-
+
END_INTERFACE
} ICorDebugVariableSymbolVtbl;
@@ -1886,35 +1895,35 @@ EXTERN_C const IID IID_ICorDebugVariableSymbol;
CONST_VTBL struct ICorDebugVariableSymbolVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugVariableSymbol_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugVariableSymbol_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugVariableSymbol_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugVariableSymbol_GetName(This,cchName,pcchName,szName) \
- ( (This)->lpVtbl -> GetName(This,cchName,pcchName,szName) )
+ ( (This)->lpVtbl -> GetName(This,cchName,pcchName,szName) )
#define ICorDebugVariableSymbol_GetSize(This,pcbValue) \
- ( (This)->lpVtbl -> GetSize(This,pcbValue) )
+ ( (This)->lpVtbl -> GetSize(This,pcbValue) )
#define ICorDebugVariableSymbol_GetValue(This,offset,cbContext,context,cbValue,pcbValue,pValue) \
- ( (This)->lpVtbl -> GetValue(This,offset,cbContext,context,cbValue,pcbValue,pValue) )
+ ( (This)->lpVtbl -> GetValue(This,offset,cbContext,context,cbValue,pcbValue,pValue) )
#define ICorDebugVariableSymbol_SetValue(This,offset,threadID,cbContext,context,cbValue,pValue) \
- ( (This)->lpVtbl -> SetValue(This,offset,threadID,cbContext,context,cbValue,pValue) )
+ ( (This)->lpVtbl -> SetValue(This,offset,threadID,cbContext,context,cbValue,pValue) )
#define ICorDebugVariableSymbol_GetSlotIndex(This,pSlotIndex) \
- ( (This)->lpVtbl -> GetSlotIndex(This,pSlotIndex) )
+ ( (This)->lpVtbl -> GetSlotIndex(This,pSlotIndex) )
#endif /* COBJMACROS */
@@ -1931,52 +1940,52 @@ EXTERN_C const IID IID_ICorDebugVariableSymbol;
#define __ICorDebugMemoryBuffer_INTERFACE_DEFINED__
/* interface ICorDebugMemoryBuffer */
-/* [unique][local][uuid][object] */
+/* [unique][local][uuid][object] */
EXTERN_C const IID IID_ICorDebugMemoryBuffer;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("677888B3-D160-4B8C-A73B-D79E6AAA1D13")
ICorDebugMemoryBuffer : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetStartAddress(
+ virtual HRESULT STDMETHODCALLTYPE GetStartAddress(
/* [out] */ LPCVOID *address) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetSize(
+
+ virtual HRESULT STDMETHODCALLTYPE GetSize(
/* [out] */ ULONG32 *pcbBufferLength) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugMemoryBufferVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugMemoryBuffer * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugMemoryBuffer * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugMemoryBuffer * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetStartAddress )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetStartAddress )(
ICorDebugMemoryBuffer * This,
/* [out] */ LPCVOID *address);
-
- HRESULT ( STDMETHODCALLTYPE *GetSize )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetSize )(
ICorDebugMemoryBuffer * This,
/* [out] */ ULONG32 *pcbBufferLength);
-
+
END_INTERFACE
} ICorDebugMemoryBufferVtbl;
@@ -1985,26 +1994,26 @@ EXTERN_C const IID IID_ICorDebugMemoryBuffer;
CONST_VTBL struct ICorDebugMemoryBufferVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugMemoryBuffer_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugMemoryBuffer_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugMemoryBuffer_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugMemoryBuffer_GetStartAddress(This,address) \
- ( (This)->lpVtbl -> GetStartAddress(This,address) )
+ ( (This)->lpVtbl -> GetStartAddress(This,address) )
#define ICorDebugMemoryBuffer_GetSize(This,pcbBufferLength) \
- ( (This)->lpVtbl -> GetSize(This,pcbBufferLength) )
+ ( (This)->lpVtbl -> GetSize(This,pcbBufferLength) )
#endif /* COBJMACROS */
@@ -2021,102 +2030,102 @@ EXTERN_C const IID IID_ICorDebugMemoryBuffer;
#define __ICorDebugMergedAssemblyRecord_INTERFACE_DEFINED__
/* interface ICorDebugMergedAssemblyRecord */
-/* [unique][local][uuid][object] */
+/* [unique][local][uuid][object] */
EXTERN_C const IID IID_ICorDebugMergedAssemblyRecord;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("FAA8637B-3BBE-4671-8E26-3B59875B922A")
ICorDebugMergedAssemblyRecord : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetSimpleName(
+ virtual HRESULT STDMETHODCALLTYPE GetSimpleName(
/* [in] */ ULONG32 cchName,
/* [out] */ ULONG32 *pcchName,
/* [length_is][size_is][out] */ WCHAR szName[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetVersion(
+
+ virtual HRESULT STDMETHODCALLTYPE GetVersion(
/* [out] */ USHORT *pMajor,
/* [out] */ USHORT *pMinor,
/* [out] */ USHORT *pBuild,
/* [out] */ USHORT *pRevision) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetCulture(
+
+ virtual HRESULT STDMETHODCALLTYPE GetCulture(
/* [in] */ ULONG32 cchCulture,
/* [out] */ ULONG32 *pcchCulture,
/* [length_is][size_is][out] */ WCHAR szCulture[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetPublicKey(
+
+ virtual HRESULT STDMETHODCALLTYPE GetPublicKey(
/* [in] */ ULONG32 cbPublicKey,
/* [out] */ ULONG32 *pcbPublicKey,
/* [length_is][size_is][out] */ BYTE pbPublicKey[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetPublicKeyToken(
+
+ virtual HRESULT STDMETHODCALLTYPE GetPublicKeyToken(
/* [in] */ ULONG32 cbPublicKeyToken,
/* [out] */ ULONG32 *pcbPublicKeyToken,
/* [length_is][size_is][out] */ BYTE pbPublicKeyToken[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetIndex(
+
+ virtual HRESULT STDMETHODCALLTYPE GetIndex(
/* [out] */ ULONG32 *pIndex) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugMergedAssemblyRecordVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugMergedAssemblyRecord * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugMergedAssemblyRecord * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugMergedAssemblyRecord * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetSimpleName )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetSimpleName )(
ICorDebugMergedAssemblyRecord * This,
/* [in] */ ULONG32 cchName,
/* [out] */ ULONG32 *pcchName,
/* [length_is][size_is][out] */ WCHAR szName[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetVersion )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetVersion )(
ICorDebugMergedAssemblyRecord * This,
/* [out] */ USHORT *pMajor,
/* [out] */ USHORT *pMinor,
/* [out] */ USHORT *pBuild,
/* [out] */ USHORT *pRevision);
-
- HRESULT ( STDMETHODCALLTYPE *GetCulture )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCulture )(
ICorDebugMergedAssemblyRecord * This,
/* [in] */ ULONG32 cchCulture,
/* [out] */ ULONG32 *pcchCulture,
/* [length_is][size_is][out] */ WCHAR szCulture[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetPublicKey )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetPublicKey )(
ICorDebugMergedAssemblyRecord * This,
/* [in] */ ULONG32 cbPublicKey,
/* [out] */ ULONG32 *pcbPublicKey,
/* [length_is][size_is][out] */ BYTE pbPublicKey[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetPublicKeyToken )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetPublicKeyToken )(
ICorDebugMergedAssemblyRecord * This,
/* [in] */ ULONG32 cbPublicKeyToken,
/* [out] */ ULONG32 *pcbPublicKeyToken,
/* [length_is][size_is][out] */ BYTE pbPublicKeyToken[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetIndex )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetIndex )(
ICorDebugMergedAssemblyRecord * This,
/* [out] */ ULONG32 *pIndex);
-
+
END_INTERFACE
} ICorDebugMergedAssemblyRecordVtbl;
@@ -2125,38 +2134,38 @@ EXTERN_C const IID IID_ICorDebugMergedAssemblyRecord;
CONST_VTBL struct ICorDebugMergedAssemblyRecordVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugMergedAssemblyRecord_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugMergedAssemblyRecord_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugMergedAssemblyRecord_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugMergedAssemblyRecord_GetSimpleName(This,cchName,pcchName,szName) \
- ( (This)->lpVtbl -> GetSimpleName(This,cchName,pcchName,szName) )
+ ( (This)->lpVtbl -> GetSimpleName(This,cchName,pcchName,szName) )
#define ICorDebugMergedAssemblyRecord_GetVersion(This,pMajor,pMinor,pBuild,pRevision) \
- ( (This)->lpVtbl -> GetVersion(This,pMajor,pMinor,pBuild,pRevision) )
+ ( (This)->lpVtbl -> GetVersion(This,pMajor,pMinor,pBuild,pRevision) )
#define ICorDebugMergedAssemblyRecord_GetCulture(This,cchCulture,pcchCulture,szCulture) \
- ( (This)->lpVtbl -> GetCulture(This,cchCulture,pcchCulture,szCulture) )
+ ( (This)->lpVtbl -> GetCulture(This,cchCulture,pcchCulture,szCulture) )
#define ICorDebugMergedAssemblyRecord_GetPublicKey(This,cbPublicKey,pcbPublicKey,pbPublicKey) \
- ( (This)->lpVtbl -> GetPublicKey(This,cbPublicKey,pcbPublicKey,pbPublicKey) )
+ ( (This)->lpVtbl -> GetPublicKey(This,cbPublicKey,pcbPublicKey,pbPublicKey) )
#define ICorDebugMergedAssemblyRecord_GetPublicKeyToken(This,cbPublicKeyToken,pcbPublicKeyToken,pbPublicKeyToken) \
- ( (This)->lpVtbl -> GetPublicKeyToken(This,cbPublicKeyToken,pcbPublicKeyToken,pbPublicKeyToken) )
+ ( (This)->lpVtbl -> GetPublicKeyToken(This,cbPublicKeyToken,pcbPublicKeyToken,pbPublicKeyToken) )
#define ICorDebugMergedAssemblyRecord_GetIndex(This,pIndex) \
- ( (This)->lpVtbl -> GetIndex(This,pIndex) )
+ ( (This)->lpVtbl -> GetIndex(This,pIndex) )
#endif /* COBJMACROS */
@@ -2173,138 +2182,138 @@ EXTERN_C const IID IID_ICorDebugMergedAssemblyRecord;
#define __ICorDebugSymbolProvider_INTERFACE_DEFINED__
/* interface ICorDebugSymbolProvider */
-/* [unique][local][uuid][object] */
+/* [unique][local][uuid][object] */
EXTERN_C const IID IID_ICorDebugSymbolProvider;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("3948A999-FD8A-4C38-A708-8A71E9B04DBB")
ICorDebugSymbolProvider : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetStaticFieldSymbols(
+ virtual HRESULT STDMETHODCALLTYPE GetStaticFieldSymbols(
/* [in] */ ULONG32 cbSignature,
/* [size_is][in] */ BYTE typeSig[ ],
/* [in] */ ULONG32 cRequestedSymbols,
/* [out] */ ULONG32 *pcFetchedSymbols,
/* [length_is][size_is][out] */ ICorDebugStaticFieldSymbol *pSymbols[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetInstanceFieldSymbols(
+
+ virtual HRESULT STDMETHODCALLTYPE GetInstanceFieldSymbols(
/* [in] */ ULONG32 cbSignature,
/* [size_is][in] */ BYTE typeSig[ ],
/* [in] */ ULONG32 cRequestedSymbols,
/* [out] */ ULONG32 *pcFetchedSymbols,
/* [length_is][size_is][out] */ ICorDebugInstanceFieldSymbol *pSymbols[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetMethodLocalSymbols(
+
+ virtual HRESULT STDMETHODCALLTYPE GetMethodLocalSymbols(
/* [in] */ ULONG32 nativeRVA,
/* [in] */ ULONG32 cRequestedSymbols,
/* [out] */ ULONG32 *pcFetchedSymbols,
/* [length_is][size_is][out] */ ICorDebugVariableSymbol *pSymbols[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetMethodParameterSymbols(
+
+ virtual HRESULT STDMETHODCALLTYPE GetMethodParameterSymbols(
/* [in] */ ULONG32 nativeRVA,
/* [in] */ ULONG32 cRequestedSymbols,
/* [out] */ ULONG32 *pcFetchedSymbols,
/* [length_is][size_is][out] */ ICorDebugVariableSymbol *pSymbols[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetMergedAssemblyRecords(
+
+ virtual HRESULT STDMETHODCALLTYPE GetMergedAssemblyRecords(
/* [in] */ ULONG32 cRequestedRecords,
/* [out] */ ULONG32 *pcFetchedRecords,
/* [length_is][size_is][out] */ ICorDebugMergedAssemblyRecord *pRecords[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetMethodProps(
+
+ virtual HRESULT STDMETHODCALLTYPE GetMethodProps(
/* [in] */ ULONG32 codeRva,
/* [out] */ mdToken *pMethodToken,
/* [out] */ ULONG32 *pcGenericParams,
/* [in] */ ULONG32 cbSignature,
/* [out] */ ULONG32 *pcbSignature,
/* [length_is][size_is][out] */ BYTE signature[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetTypeProps(
+
+ virtual HRESULT STDMETHODCALLTYPE GetTypeProps(
/* [in] */ ULONG32 vtableRva,
/* [in] */ ULONG32 cbSignature,
/* [out] */ ULONG32 *pcbSignature,
/* [length_is][size_is][out] */ BYTE signature[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetCodeRange(
+
+ virtual HRESULT STDMETHODCALLTYPE GetCodeRange(
/* [in] */ ULONG32 codeRva,
/* [out] */ ULONG32 *pCodeStartAddress,
ULONG32 *pCodeSize) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetAssemblyImageBytes(
+
+ virtual HRESULT STDMETHODCALLTYPE GetAssemblyImageBytes(
/* [in] */ CORDB_ADDRESS rva,
/* [in] */ ULONG32 length,
/* [out] */ ICorDebugMemoryBuffer **ppMemoryBuffer) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetObjectSize(
+
+ virtual HRESULT STDMETHODCALLTYPE GetObjectSize(
/* [in] */ ULONG32 cbSignature,
/* [size_is][in] */ BYTE typeSig[ ],
/* [out] */ ULONG32 *pObjectSize) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetAssemblyImageMetadata(
+
+ virtual HRESULT STDMETHODCALLTYPE GetAssemblyImageMetadata(
/* [out] */ ICorDebugMemoryBuffer **ppMemoryBuffer) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugSymbolProviderVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugSymbolProvider * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugSymbolProvider * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugSymbolProvider * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetStaticFieldSymbols )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetStaticFieldSymbols )(
ICorDebugSymbolProvider * This,
/* [in] */ ULONG32 cbSignature,
/* [size_is][in] */ BYTE typeSig[ ],
/* [in] */ ULONG32 cRequestedSymbols,
/* [out] */ ULONG32 *pcFetchedSymbols,
/* [length_is][size_is][out] */ ICorDebugStaticFieldSymbol *pSymbols[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetInstanceFieldSymbols )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetInstanceFieldSymbols )(
ICorDebugSymbolProvider * This,
/* [in] */ ULONG32 cbSignature,
/* [size_is][in] */ BYTE typeSig[ ],
/* [in] */ ULONG32 cRequestedSymbols,
/* [out] */ ULONG32 *pcFetchedSymbols,
/* [length_is][size_is][out] */ ICorDebugInstanceFieldSymbol *pSymbols[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetMethodLocalSymbols )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetMethodLocalSymbols )(
ICorDebugSymbolProvider * This,
/* [in] */ ULONG32 nativeRVA,
/* [in] */ ULONG32 cRequestedSymbols,
/* [out] */ ULONG32 *pcFetchedSymbols,
/* [length_is][size_is][out] */ ICorDebugVariableSymbol *pSymbols[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetMethodParameterSymbols )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetMethodParameterSymbols )(
ICorDebugSymbolProvider * This,
/* [in] */ ULONG32 nativeRVA,
/* [in] */ ULONG32 cRequestedSymbols,
/* [out] */ ULONG32 *pcFetchedSymbols,
/* [length_is][size_is][out] */ ICorDebugVariableSymbol *pSymbols[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetMergedAssemblyRecords )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetMergedAssemblyRecords )(
ICorDebugSymbolProvider * This,
/* [in] */ ULONG32 cRequestedRecords,
/* [out] */ ULONG32 *pcFetchedRecords,
/* [length_is][size_is][out] */ ICorDebugMergedAssemblyRecord *pRecords[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetMethodProps )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetMethodProps )(
ICorDebugSymbolProvider * This,
/* [in] */ ULONG32 codeRva,
/* [out] */ mdToken *pMethodToken,
@@ -2312,36 +2321,36 @@ EXTERN_C const IID IID_ICorDebugSymbolProvider;
/* [in] */ ULONG32 cbSignature,
/* [out] */ ULONG32 *pcbSignature,
/* [length_is][size_is][out] */ BYTE signature[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetTypeProps )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeProps )(
ICorDebugSymbolProvider * This,
/* [in] */ ULONG32 vtableRva,
/* [in] */ ULONG32 cbSignature,
/* [out] */ ULONG32 *pcbSignature,
/* [length_is][size_is][out] */ BYTE signature[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetCodeRange )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCodeRange )(
ICorDebugSymbolProvider * This,
/* [in] */ ULONG32 codeRva,
/* [out] */ ULONG32 *pCodeStartAddress,
ULONG32 *pCodeSize);
-
- HRESULT ( STDMETHODCALLTYPE *GetAssemblyImageBytes )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetAssemblyImageBytes )(
ICorDebugSymbolProvider * This,
/* [in] */ CORDB_ADDRESS rva,
/* [in] */ ULONG32 length,
/* [out] */ ICorDebugMemoryBuffer **ppMemoryBuffer);
-
- HRESULT ( STDMETHODCALLTYPE *GetObjectSize )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetObjectSize )(
ICorDebugSymbolProvider * This,
/* [in] */ ULONG32 cbSignature,
/* [size_is][in] */ BYTE typeSig[ ],
/* [out] */ ULONG32 *pObjectSize);
-
- HRESULT ( STDMETHODCALLTYPE *GetAssemblyImageMetadata )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetAssemblyImageMetadata )(
ICorDebugSymbolProvider * This,
/* [out] */ ICorDebugMemoryBuffer **ppMemoryBuffer);
-
+
END_INTERFACE
} ICorDebugSymbolProviderVtbl;
@@ -2350,53 +2359,53 @@ EXTERN_C const IID IID_ICorDebugSymbolProvider;
CONST_VTBL struct ICorDebugSymbolProviderVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugSymbolProvider_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugSymbolProvider_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugSymbolProvider_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugSymbolProvider_GetStaticFieldSymbols(This,cbSignature,typeSig,cRequestedSymbols,pcFetchedSymbols,pSymbols) \
- ( (This)->lpVtbl -> GetStaticFieldSymbols(This,cbSignature,typeSig,cRequestedSymbols,pcFetchedSymbols,pSymbols) )
+ ( (This)->lpVtbl -> GetStaticFieldSymbols(This,cbSignature,typeSig,cRequestedSymbols,pcFetchedSymbols,pSymbols) )
#define ICorDebugSymbolProvider_GetInstanceFieldSymbols(This,cbSignature,typeSig,cRequestedSymbols,pcFetchedSymbols,pSymbols) \
- ( (This)->lpVtbl -> GetInstanceFieldSymbols(This,cbSignature,typeSig,cRequestedSymbols,pcFetchedSymbols,pSymbols) )
+ ( (This)->lpVtbl -> GetInstanceFieldSymbols(This,cbSignature,typeSig,cRequestedSymbols,pcFetchedSymbols,pSymbols) )
#define ICorDebugSymbolProvider_GetMethodLocalSymbols(This,nativeRVA,cRequestedSymbols,pcFetchedSymbols,pSymbols) \
- ( (This)->lpVtbl -> GetMethodLocalSymbols(This,nativeRVA,cRequestedSymbols,pcFetchedSymbols,pSymbols) )
+ ( (This)->lpVtbl -> GetMethodLocalSymbols(This,nativeRVA,cRequestedSymbols,pcFetchedSymbols,pSymbols) )
#define ICorDebugSymbolProvider_GetMethodParameterSymbols(This,nativeRVA,cRequestedSymbols,pcFetchedSymbols,pSymbols) \
- ( (This)->lpVtbl -> GetMethodParameterSymbols(This,nativeRVA,cRequestedSymbols,pcFetchedSymbols,pSymbols) )
+ ( (This)->lpVtbl -> GetMethodParameterSymbols(This,nativeRVA,cRequestedSymbols,pcFetchedSymbols,pSymbols) )
#define ICorDebugSymbolProvider_GetMergedAssemblyRecords(This,cRequestedRecords,pcFetchedRecords,pRecords) \
- ( (This)->lpVtbl -> GetMergedAssemblyRecords(This,cRequestedRecords,pcFetchedRecords,pRecords) )
+ ( (This)->lpVtbl -> GetMergedAssemblyRecords(This,cRequestedRecords,pcFetchedRecords,pRecords) )
#define ICorDebugSymbolProvider_GetMethodProps(This,codeRva,pMethodToken,pcGenericParams,cbSignature,pcbSignature,signature) \
- ( (This)->lpVtbl -> GetMethodProps(This,codeRva,pMethodToken,pcGenericParams,cbSignature,pcbSignature,signature) )
+ ( (This)->lpVtbl -> GetMethodProps(This,codeRva,pMethodToken,pcGenericParams,cbSignature,pcbSignature,signature) )
#define ICorDebugSymbolProvider_GetTypeProps(This,vtableRva,cbSignature,pcbSignature,signature) \
- ( (This)->lpVtbl -> GetTypeProps(This,vtableRva,cbSignature,pcbSignature,signature) )
+ ( (This)->lpVtbl -> GetTypeProps(This,vtableRva,cbSignature,pcbSignature,signature) )
#define ICorDebugSymbolProvider_GetCodeRange(This,codeRva,pCodeStartAddress,pCodeSize) \
- ( (This)->lpVtbl -> GetCodeRange(This,codeRva,pCodeStartAddress,pCodeSize) )
+ ( (This)->lpVtbl -> GetCodeRange(This,codeRva,pCodeStartAddress,pCodeSize) )
#define ICorDebugSymbolProvider_GetAssemblyImageBytes(This,rva,length,ppMemoryBuffer) \
- ( (This)->lpVtbl -> GetAssemblyImageBytes(This,rva,length,ppMemoryBuffer) )
+ ( (This)->lpVtbl -> GetAssemblyImageBytes(This,rva,length,ppMemoryBuffer) )
#define ICorDebugSymbolProvider_GetObjectSize(This,cbSignature,typeSig,pObjectSize) \
- ( (This)->lpVtbl -> GetObjectSize(This,cbSignature,typeSig,pObjectSize) )
+ ( (This)->lpVtbl -> GetObjectSize(This,cbSignature,typeSig,pObjectSize) )
#define ICorDebugSymbolProvider_GetAssemblyImageMetadata(This,ppMemoryBuffer) \
- ( (This)->lpVtbl -> GetAssemblyImageMetadata(This,ppMemoryBuffer) )
+ ( (This)->lpVtbl -> GetAssemblyImageMetadata(This,ppMemoryBuffer) )
#endif /* COBJMACROS */
@@ -2413,56 +2422,56 @@ EXTERN_C const IID IID_ICorDebugSymbolProvider;
#define __ICorDebugSymbolProvider2_INTERFACE_DEFINED__
/* interface ICorDebugSymbolProvider2 */
-/* [unique][local][uuid][object] */
+/* [unique][local][uuid][object] */
EXTERN_C const IID IID_ICorDebugSymbolProvider2;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("F9801807-4764-4330-9E67-4F685094165E")
ICorDebugSymbolProvider2 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetGenericDictionaryInfo(
+ virtual HRESULT STDMETHODCALLTYPE GetGenericDictionaryInfo(
/* [out] */ ICorDebugMemoryBuffer **ppMemoryBuffer) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetFrameProps(
+
+ virtual HRESULT STDMETHODCALLTYPE GetFrameProps(
/* [in] */ ULONG32 codeRva,
/* [out] */ ULONG32 *pCodeStartRva,
/* [out] */ ULONG32 *pParentFrameStartRva) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugSymbolProvider2Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugSymbolProvider2 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugSymbolProvider2 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugSymbolProvider2 * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetGenericDictionaryInfo )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetGenericDictionaryInfo )(
ICorDebugSymbolProvider2 * This,
/* [out] */ ICorDebugMemoryBuffer **ppMemoryBuffer);
-
- HRESULT ( STDMETHODCALLTYPE *GetFrameProps )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetFrameProps )(
ICorDebugSymbolProvider2 * This,
/* [in] */ ULONG32 codeRva,
/* [out] */ ULONG32 *pCodeStartRva,
/* [out] */ ULONG32 *pParentFrameStartRva);
-
+
END_INTERFACE
} ICorDebugSymbolProvider2Vtbl;
@@ -2471,26 +2480,26 @@ EXTERN_C const IID IID_ICorDebugSymbolProvider2;
CONST_VTBL struct ICorDebugSymbolProvider2Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugSymbolProvider2_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugSymbolProvider2_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugSymbolProvider2_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugSymbolProvider2_GetGenericDictionaryInfo(This,ppMemoryBuffer) \
- ( (This)->lpVtbl -> GetGenericDictionaryInfo(This,ppMemoryBuffer) )
+ ( (This)->lpVtbl -> GetGenericDictionaryInfo(This,ppMemoryBuffer) )
#define ICorDebugSymbolProvider2_GetFrameProps(This,codeRva,pCodeStartRva,pParentFrameStartRva) \
- ( (This)->lpVtbl -> GetFrameProps(This,codeRva,pCodeStartRva,pParentFrameStartRva) )
+ ( (This)->lpVtbl -> GetFrameProps(This,codeRva,pCodeStartRva,pParentFrameStartRva) )
#endif /* COBJMACROS */
@@ -2507,56 +2516,56 @@ EXTERN_C const IID IID_ICorDebugSymbolProvider2;
#define __ICorDebugVirtualUnwinder_INTERFACE_DEFINED__
/* interface ICorDebugVirtualUnwinder */
-/* [unique][local][uuid][object] */
+/* [unique][local][uuid][object] */
EXTERN_C const IID IID_ICorDebugVirtualUnwinder;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("F69126B7-C787-4F6B-AE96-A569786FC670")
ICorDebugVirtualUnwinder : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetContext(
+ virtual HRESULT STDMETHODCALLTYPE GetContext(
/* [in] */ ULONG32 contextFlags,
/* [in] */ ULONG32 cbContextBuf,
/* [out] */ ULONG32 *contextSize,
/* [size_is][out] */ BYTE contextBuf[ ]) = 0;
-
+
virtual HRESULT STDMETHODCALLTYPE Next( void) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugVirtualUnwinderVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugVirtualUnwinder * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugVirtualUnwinder * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugVirtualUnwinder * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetContext )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetContext )(
ICorDebugVirtualUnwinder * This,
/* [in] */ ULONG32 contextFlags,
/* [in] */ ULONG32 cbContextBuf,
/* [out] */ ULONG32 *contextSize,
/* [size_is][out] */ BYTE contextBuf[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *Next )(
+
+ HRESULT ( STDMETHODCALLTYPE *Next )(
ICorDebugVirtualUnwinder * This);
-
+
END_INTERFACE
} ICorDebugVirtualUnwinderVtbl;
@@ -2565,26 +2574,26 @@ EXTERN_C const IID IID_ICorDebugVirtualUnwinder;
CONST_VTBL struct ICorDebugVirtualUnwinderVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugVirtualUnwinder_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugVirtualUnwinder_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugVirtualUnwinder_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugVirtualUnwinder_GetContext(This,contextFlags,cbContextBuf,contextSize,contextBuf) \
- ( (This)->lpVtbl -> GetContext(This,contextFlags,cbContextBuf,contextSize,contextBuf) )
+ ( (This)->lpVtbl -> GetContext(This,contextFlags,cbContextBuf,contextSize,contextBuf) )
#define ICorDebugVirtualUnwinder_Next(This) \
- ( (This)->lpVtbl -> Next(This) )
+ ( (This)->lpVtbl -> Next(This) )
#endif /* COBJMACROS */
@@ -2601,97 +2610,97 @@ EXTERN_C const IID IID_ICorDebugVirtualUnwinder;
#define __ICorDebugDataTarget2_INTERFACE_DEFINED__
/* interface ICorDebugDataTarget2 */
-/* [unique][local][uuid][object] */
+/* [unique][local][uuid][object] */
EXTERN_C const IID IID_ICorDebugDataTarget2;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("2eb364da-605b-4e8d-b333-3394c4828d41")
ICorDebugDataTarget2 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetImageFromPointer(
+ virtual HRESULT STDMETHODCALLTYPE GetImageFromPointer(
/* [in] */ CORDB_ADDRESS addr,
/* [out] */ CORDB_ADDRESS *pImageBase,
/* [out] */ ULONG32 *pSize) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetImageLocation(
+
+ virtual HRESULT STDMETHODCALLTYPE GetImageLocation(
/* [in] */ CORDB_ADDRESS baseAddress,
/* [in] */ ULONG32 cchName,
/* [out] */ ULONG32 *pcchName,
/* [length_is][size_is][out] */ WCHAR szName[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetSymbolProviderForImage(
+
+ virtual HRESULT STDMETHODCALLTYPE GetSymbolProviderForImage(
/* [in] */ CORDB_ADDRESS imageBaseAddress,
/* [out] */ ICorDebugSymbolProvider **ppSymProvider) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE EnumerateThreadIDs(
+
+ virtual HRESULT STDMETHODCALLTYPE EnumerateThreadIDs(
/* [in] */ ULONG32 cThreadIds,
/* [out] */ ULONG32 *pcThreadIds,
/* [length_is][size_is][out] */ ULONG32 pThreadIds[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE CreateVirtualUnwinder(
+
+ virtual HRESULT STDMETHODCALLTYPE CreateVirtualUnwinder(
/* [in] */ DWORD nativeThreadID,
/* [in] */ ULONG32 contextFlags,
/* [in] */ ULONG32 cbContext,
/* [size_is][in] */ BYTE initialContext[ ],
/* [out] */ ICorDebugVirtualUnwinder **ppUnwinder) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugDataTarget2Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugDataTarget2 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugDataTarget2 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugDataTarget2 * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetImageFromPointer )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetImageFromPointer )(
ICorDebugDataTarget2 * This,
/* [in] */ CORDB_ADDRESS addr,
/* [out] */ CORDB_ADDRESS *pImageBase,
/* [out] */ ULONG32 *pSize);
-
- HRESULT ( STDMETHODCALLTYPE *GetImageLocation )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetImageLocation )(
ICorDebugDataTarget2 * This,
/* [in] */ CORDB_ADDRESS baseAddress,
/* [in] */ ULONG32 cchName,
/* [out] */ ULONG32 *pcchName,
/* [length_is][size_is][out] */ WCHAR szName[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetSymbolProviderForImage )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetSymbolProviderForImage )(
ICorDebugDataTarget2 * This,
/* [in] */ CORDB_ADDRESS imageBaseAddress,
/* [out] */ ICorDebugSymbolProvider **ppSymProvider);
-
- HRESULT ( STDMETHODCALLTYPE *EnumerateThreadIDs )(
+
+ HRESULT ( STDMETHODCALLTYPE *EnumerateThreadIDs )(
ICorDebugDataTarget2 * This,
/* [in] */ ULONG32 cThreadIds,
/* [out] */ ULONG32 *pcThreadIds,
/* [length_is][size_is][out] */ ULONG32 pThreadIds[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *CreateVirtualUnwinder )(
+
+ HRESULT ( STDMETHODCALLTYPE *CreateVirtualUnwinder )(
ICorDebugDataTarget2 * This,
/* [in] */ DWORD nativeThreadID,
/* [in] */ ULONG32 contextFlags,
/* [in] */ ULONG32 cbContext,
/* [size_is][in] */ BYTE initialContext[ ],
/* [out] */ ICorDebugVirtualUnwinder **ppUnwinder);
-
+
END_INTERFACE
} ICorDebugDataTarget2Vtbl;
@@ -2700,35 +2709,35 @@ EXTERN_C const IID IID_ICorDebugDataTarget2;
CONST_VTBL struct ICorDebugDataTarget2Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugDataTarget2_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugDataTarget2_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugDataTarget2_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugDataTarget2_GetImageFromPointer(This,addr,pImageBase,pSize) \
- ( (This)->lpVtbl -> GetImageFromPointer(This,addr,pImageBase,pSize) )
+ ( (This)->lpVtbl -> GetImageFromPointer(This,addr,pImageBase,pSize) )
#define ICorDebugDataTarget2_GetImageLocation(This,baseAddress,cchName,pcchName,szName) \
- ( (This)->lpVtbl -> GetImageLocation(This,baseAddress,cchName,pcchName,szName) )
+ ( (This)->lpVtbl -> GetImageLocation(This,baseAddress,cchName,pcchName,szName) )
#define ICorDebugDataTarget2_GetSymbolProviderForImage(This,imageBaseAddress,ppSymProvider) \
- ( (This)->lpVtbl -> GetSymbolProviderForImage(This,imageBaseAddress,ppSymProvider) )
+ ( (This)->lpVtbl -> GetSymbolProviderForImage(This,imageBaseAddress,ppSymProvider) )
#define ICorDebugDataTarget2_EnumerateThreadIDs(This,cThreadIds,pcThreadIds,pThreadIds) \
- ( (This)->lpVtbl -> EnumerateThreadIDs(This,cThreadIds,pcThreadIds,pThreadIds) )
+ ( (This)->lpVtbl -> EnumerateThreadIDs(This,cThreadIds,pcThreadIds,pThreadIds) )
#define ICorDebugDataTarget2_CreateVirtualUnwinder(This,nativeThreadID,contextFlags,cbContext,initialContext,ppUnwinder) \
- ( (This)->lpVtbl -> CreateVirtualUnwinder(This,nativeThreadID,contextFlags,cbContext,initialContext,ppUnwinder) )
+ ( (This)->lpVtbl -> CreateVirtualUnwinder(This,nativeThreadID,contextFlags,cbContext,initialContext,ppUnwinder) )
#endif /* COBJMACROS */
@@ -2745,63 +2754,63 @@ EXTERN_C const IID IID_ICorDebugDataTarget2;
#define __ICorDebugLoadedModule_INTERFACE_DEFINED__
/* interface ICorDebugLoadedModule */
-/* [unique][local][uuid][object] */
+/* [unique][local][uuid][object] */
EXTERN_C const IID IID_ICorDebugLoadedModule;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("817F343A-6630-4578-96C5-D11BC0EC5EE2")
ICorDebugLoadedModule : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetBaseAddress(
+ virtual HRESULT STDMETHODCALLTYPE GetBaseAddress(
/* [out] */ CORDB_ADDRESS *pAddress) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetName(
+
+ virtual HRESULT STDMETHODCALLTYPE GetName(
/* [in] */ ULONG32 cchName,
/* [out] */ ULONG32 *pcchName,
/* [length_is][size_is][out] */ WCHAR szName[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetSize(
+
+ virtual HRESULT STDMETHODCALLTYPE GetSize(
/* [out] */ ULONG32 *pcBytes) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugLoadedModuleVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugLoadedModule * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugLoadedModule * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugLoadedModule * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetBaseAddress )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetBaseAddress )(
ICorDebugLoadedModule * This,
/* [out] */ CORDB_ADDRESS *pAddress);
-
- HRESULT ( STDMETHODCALLTYPE *GetName )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetName )(
ICorDebugLoadedModule * This,
/* [in] */ ULONG32 cchName,
/* [out] */ ULONG32 *pcchName,
/* [length_is][size_is][out] */ WCHAR szName[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetSize )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetSize )(
ICorDebugLoadedModule * This,
/* [out] */ ULONG32 *pcBytes);
-
+
END_INTERFACE
} ICorDebugLoadedModuleVtbl;
@@ -2810,29 +2819,29 @@ EXTERN_C const IID IID_ICorDebugLoadedModule;
CONST_VTBL struct ICorDebugLoadedModuleVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugLoadedModule_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugLoadedModule_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugLoadedModule_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugLoadedModule_GetBaseAddress(This,pAddress) \
- ( (This)->lpVtbl -> GetBaseAddress(This,pAddress) )
+ ( (This)->lpVtbl -> GetBaseAddress(This,pAddress) )
#define ICorDebugLoadedModule_GetName(This,cchName,pcchName,szName) \
- ( (This)->lpVtbl -> GetName(This,cchName,pcchName,szName) )
+ ( (This)->lpVtbl -> GetName(This,cchName,pcchName,szName) )
#define ICorDebugLoadedModule_GetSize(This,pcBytes) \
- ( (This)->lpVtbl -> GetSize(This,pcBytes) )
+ ( (This)->lpVtbl -> GetSize(This,pcBytes) )
#endif /* COBJMACROS */
@@ -2849,49 +2858,49 @@ EXTERN_C const IID IID_ICorDebugLoadedModule;
#define __ICorDebugDataTarget3_INTERFACE_DEFINED__
/* interface ICorDebugDataTarget3 */
-/* [unique][local][uuid][object] */
+/* [unique][local][uuid][object] */
EXTERN_C const IID IID_ICorDebugDataTarget3;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("D05E60C3-848C-4E7D-894E-623320FF6AFA")
ICorDebugDataTarget3 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetLoadedModules(
+ virtual HRESULT STDMETHODCALLTYPE GetLoadedModules(
/* [in] */ ULONG32 cRequestedModules,
/* [out] */ ULONG32 *pcFetchedModules,
/* [length_is][size_is][out] */ ICorDebugLoadedModule *pLoadedModules[ ]) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugDataTarget3Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugDataTarget3 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugDataTarget3 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugDataTarget3 * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetLoadedModules )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetLoadedModules )(
ICorDebugDataTarget3 * This,
/* [in] */ ULONG32 cRequestedModules,
/* [out] */ ULONG32 *pcFetchedModules,
/* [length_is][size_is][out] */ ICorDebugLoadedModule *pLoadedModules[ ]);
-
+
END_INTERFACE
} ICorDebugDataTarget3Vtbl;
@@ -2900,23 +2909,23 @@ EXTERN_C const IID IID_ICorDebugDataTarget3;
CONST_VTBL struct ICorDebugDataTarget3Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugDataTarget3_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugDataTarget3_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugDataTarget3_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugDataTarget3_GetLoadedModules(This,cRequestedModules,pcFetchedModules,pLoadedModules) \
- ( (This)->lpVtbl -> GetLoadedModules(This,cRequestedModules,pcFetchedModules,pLoadedModules) )
+ ( (This)->lpVtbl -> GetLoadedModules(This,cRequestedModules,pcFetchedModules,pLoadedModules) )
#endif /* COBJMACROS */
@@ -2933,49 +2942,49 @@ EXTERN_C const IID IID_ICorDebugDataTarget3;
#define __ICorDebugDataTarget4_INTERFACE_DEFINED__
/* interface ICorDebugDataTarget4 */
-/* [unique][local][uuid][object] */
+/* [unique][local][uuid][object] */
EXTERN_C const IID IID_ICorDebugDataTarget4;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("E799DC06-E099-4713-BDD9-906D3CC02CF2")
ICorDebugDataTarget4 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE VirtualUnwind(
+ virtual HRESULT STDMETHODCALLTYPE VirtualUnwind(
/* [in] */ DWORD threadId,
/* [in] */ ULONG32 contextSize,
/* [size_is][out][in] */ BYTE *context) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugDataTarget4Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugDataTarget4 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugDataTarget4 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugDataTarget4 * This);
-
- HRESULT ( STDMETHODCALLTYPE *VirtualUnwind )(
+
+ HRESULT ( STDMETHODCALLTYPE *VirtualUnwind )(
ICorDebugDataTarget4 * This,
/* [in] */ DWORD threadId,
/* [in] */ ULONG32 contextSize,
/* [size_is][out][in] */ BYTE *context);
-
+
END_INTERFACE
} ICorDebugDataTarget4Vtbl;
@@ -2984,23 +2993,23 @@ EXTERN_C const IID IID_ICorDebugDataTarget4;
CONST_VTBL struct ICorDebugDataTarget4Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugDataTarget4_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugDataTarget4_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugDataTarget4_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugDataTarget4_VirtualUnwind(This,threadId,contextSize,context) \
- ( (This)->lpVtbl -> VirtualUnwind(This,threadId,contextSize,context) )
+ ( (This)->lpVtbl -> VirtualUnwind(This,threadId,contextSize,context) )
#endif /* COBJMACROS */
@@ -3017,87 +3026,87 @@ EXTERN_C const IID IID_ICorDebugDataTarget4;
#define __ICorDebugMutableDataTarget_INTERFACE_DEFINED__
/* interface ICorDebugMutableDataTarget */
-/* [unique][local][uuid][object] */
+/* [unique][local][uuid][object] */
EXTERN_C const IID IID_ICorDebugMutableDataTarget;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("A1B8A756-3CB6-4CCB-979F-3DF999673A59")
ICorDebugMutableDataTarget : public ICorDebugDataTarget
{
public:
- virtual HRESULT STDMETHODCALLTYPE WriteVirtual(
+ virtual HRESULT STDMETHODCALLTYPE WriteVirtual(
/* [in] */ CORDB_ADDRESS address,
/* [size_is][in] */ const BYTE *pBuffer,
/* [in] */ ULONG32 bytesRequested) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE SetThreadContext(
+
+ virtual HRESULT STDMETHODCALLTYPE SetThreadContext(
/* [in] */ DWORD dwThreadID,
/* [in] */ ULONG32 contextSize,
/* [size_is][in] */ const BYTE *pContext) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE ContinueStatusChanged(
+
+ virtual HRESULT STDMETHODCALLTYPE ContinueStatusChanged(
/* [in] */ DWORD dwThreadId,
/* [in] */ CORDB_CONTINUE_STATUS continueStatus) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugMutableDataTargetVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugMutableDataTarget * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugMutableDataTarget * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugMutableDataTarget * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetPlatform )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetPlatform )(
ICorDebugMutableDataTarget * This,
/* [out] */ CorDebugPlatform *pTargetPlatform);
-
- HRESULT ( STDMETHODCALLTYPE *ReadVirtual )(
+
+ HRESULT ( STDMETHODCALLTYPE *ReadVirtual )(
ICorDebugMutableDataTarget * This,
/* [in] */ CORDB_ADDRESS address,
/* [length_is][size_is][out] */ BYTE *pBuffer,
/* [in] */ ULONG32 bytesRequested,
/* [out] */ ULONG32 *pBytesRead);
-
- HRESULT ( STDMETHODCALLTYPE *GetThreadContext )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetThreadContext )(
ICorDebugMutableDataTarget * This,
/* [in] */ DWORD dwThreadID,
/* [in] */ ULONG32 contextFlags,
/* [in] */ ULONG32 contextSize,
/* [size_is][out] */ BYTE *pContext);
-
- HRESULT ( STDMETHODCALLTYPE *WriteVirtual )(
+
+ HRESULT ( STDMETHODCALLTYPE *WriteVirtual )(
ICorDebugMutableDataTarget * This,
/* [in] */ CORDB_ADDRESS address,
/* [size_is][in] */ const BYTE *pBuffer,
/* [in] */ ULONG32 bytesRequested);
-
- HRESULT ( STDMETHODCALLTYPE *SetThreadContext )(
+
+ HRESULT ( STDMETHODCALLTYPE *SetThreadContext )(
ICorDebugMutableDataTarget * This,
/* [in] */ DWORD dwThreadID,
/* [in] */ ULONG32 contextSize,
/* [size_is][in] */ const BYTE *pContext);
-
- HRESULT ( STDMETHODCALLTYPE *ContinueStatusChanged )(
+
+ HRESULT ( STDMETHODCALLTYPE *ContinueStatusChanged )(
ICorDebugMutableDataTarget * This,
/* [in] */ DWORD dwThreadId,
/* [in] */ CORDB_CONTINUE_STATUS continueStatus);
-
+
END_INTERFACE
} ICorDebugMutableDataTargetVtbl;
@@ -3106,39 +3115,39 @@ EXTERN_C const IID IID_ICorDebugMutableDataTarget;
CONST_VTBL struct ICorDebugMutableDataTargetVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugMutableDataTarget_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugMutableDataTarget_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugMutableDataTarget_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugMutableDataTarget_GetPlatform(This,pTargetPlatform) \
- ( (This)->lpVtbl -> GetPlatform(This,pTargetPlatform) )
+ ( (This)->lpVtbl -> GetPlatform(This,pTargetPlatform) )
#define ICorDebugMutableDataTarget_ReadVirtual(This,address,pBuffer,bytesRequested,pBytesRead) \
- ( (This)->lpVtbl -> ReadVirtual(This,address,pBuffer,bytesRequested,pBytesRead) )
+ ( (This)->lpVtbl -> ReadVirtual(This,address,pBuffer,bytesRequested,pBytesRead) )
#define ICorDebugMutableDataTarget_GetThreadContext(This,dwThreadID,contextFlags,contextSize,pContext) \
- ( (This)->lpVtbl -> GetThreadContext(This,dwThreadID,contextFlags,contextSize,pContext) )
+ ( (This)->lpVtbl -> GetThreadContext(This,dwThreadID,contextFlags,contextSize,pContext) )
#define ICorDebugMutableDataTarget_WriteVirtual(This,address,pBuffer,bytesRequested) \
- ( (This)->lpVtbl -> WriteVirtual(This,address,pBuffer,bytesRequested) )
+ ( (This)->lpVtbl -> WriteVirtual(This,address,pBuffer,bytesRequested) )
#define ICorDebugMutableDataTarget_SetThreadContext(This,dwThreadID,contextSize,pContext) \
- ( (This)->lpVtbl -> SetThreadContext(This,dwThreadID,contextSize,pContext) )
+ ( (This)->lpVtbl -> SetThreadContext(This,dwThreadID,contextSize,pContext) )
#define ICorDebugMutableDataTarget_ContinueStatusChanged(This,dwThreadId,continueStatus) \
- ( (This)->lpVtbl -> ContinueStatusChanged(This,dwThreadId,continueStatus) )
+ ( (This)->lpVtbl -> ContinueStatusChanged(This,dwThreadId,continueStatus) )
#endif /* COBJMACROS */
@@ -3155,59 +3164,59 @@ EXTERN_C const IID IID_ICorDebugMutableDataTarget;
#define __ICorDebugMetaDataLocator_INTERFACE_DEFINED__
/* interface ICorDebugMetaDataLocator */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugMetaDataLocator;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("7cef8ba9-2ef7-42bf-973f-4171474f87d9")
ICorDebugMetaDataLocator : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetMetaData(
+ virtual HRESULT STDMETHODCALLTYPE GetMetaData(
/* [in] */ LPCWSTR wszImagePath,
/* [in] */ DWORD dwImageTimeStamp,
/* [in] */ DWORD dwImageSize,
/* [in] */ ULONG32 cchPathBuffer,
- /* [annotation][out] */
+ /* [annotation][out] */
_Out_ ULONG32 *pcchPathBuffer,
- /* [annotation][length_is][size_is][out] */
+ /* [annotation][length_is][size_is][out] */
_Out_writes_to_(cchPathBuffer, *pcchPathBuffer) WCHAR wszPathBuffer[ ]) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugMetaDataLocatorVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugMetaDataLocator * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugMetaDataLocator * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugMetaDataLocator * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetMetaData )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetMetaData )(
ICorDebugMetaDataLocator * This,
/* [in] */ LPCWSTR wszImagePath,
/* [in] */ DWORD dwImageTimeStamp,
/* [in] */ DWORD dwImageSize,
/* [in] */ ULONG32 cchPathBuffer,
- /* [annotation][out] */
+ /* [annotation][out] */
_Out_ ULONG32 *pcchPathBuffer,
- /* [annotation][length_is][size_is][out] */
+ /* [annotation][length_is][size_is][out] */
_Out_writes_to_(cchPathBuffer, *pcchPathBuffer) WCHAR wszPathBuffer[ ]);
-
+
END_INTERFACE
} ICorDebugMetaDataLocatorVtbl;
@@ -3216,23 +3225,23 @@ EXTERN_C const IID IID_ICorDebugMetaDataLocator;
CONST_VTBL struct ICorDebugMetaDataLocatorVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugMetaDataLocator_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugMetaDataLocator_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugMetaDataLocator_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugMetaDataLocator_GetMetaData(This,wszImagePath,dwImageTimeStamp,dwImageSize,cchPathBuffer,pcchPathBuffer,wszPathBuffer) \
- ( (This)->lpVtbl -> GetMetaData(This,wszImagePath,dwImageTimeStamp,dwImageSize,cchPathBuffer,pcchPathBuffer,wszPathBuffer) )
+ ( (This)->lpVtbl -> GetMetaData(This,wszImagePath,dwImageTimeStamp,dwImageSize,cchPathBuffer,pcchPathBuffer,wszPathBuffer) )
#endif /* COBJMACROS */
@@ -3246,10 +3255,10 @@ EXTERN_C const IID IID_ICorDebugMetaDataLocator;
/* interface __MIDL_itf_cordebug_0000_0015 */
-/* [local] */
+/* [local] */
#pragma warning(push)
-#pragma warning(disable:28718)
+#pragma warning(disable:28718)
extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0015_v0_0_c_ifspec;
@@ -3259,9 +3268,9 @@ extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0015_v0_0_s_ifspec;
#define __ICorDebugManagedCallback_INTERFACE_DEFINED__
/* interface ICorDebugManagedCallback */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
-typedef
+typedef
enum CorDebugStepReason
{
STEP_NORMAL = 0,
@@ -3270,10 +3279,10 @@ enum CorDebugStepReason
STEP_EXCEPTION_FILTER = ( STEP_CALL + 1 ) ,
STEP_EXCEPTION_HANDLER = ( STEP_EXCEPTION_FILTER + 1 ) ,
STEP_INTERCEPT = ( STEP_EXCEPTION_HANDLER + 1 ) ,
- STEP_EXIT = ( STEP_INTERCEPT + 1 )
+ STEP_EXIT = ( STEP_INTERCEPT + 1 )
} CorDebugStepReason;
-typedef
+typedef
enum LoggingLevelEnum
{
LTraceLevel0 = 0,
@@ -3291,253 +3300,253 @@ enum LoggingLevelEnum
LPanicLevel = 100
} LoggingLevelEnum;
-typedef
+typedef
enum LogSwitchCallReason
{
SWITCH_CREATE = 0,
SWITCH_MODIFY = ( SWITCH_CREATE + 1 ) ,
- SWITCH_DELETE = ( SWITCH_MODIFY + 1 )
+ SWITCH_DELETE = ( SWITCH_MODIFY + 1 )
} LogSwitchCallReason;
EXTERN_C const IID IID_ICorDebugManagedCallback;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("3d6f5f60-7538-11d3-8d5b-00104b35e7ef")
ICorDebugManagedCallback : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE Breakpoint(
+ virtual HRESULT STDMETHODCALLTYPE Breakpoint(
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugThread *pThread,
/* [in] */ ICorDebugBreakpoint *pBreakpoint) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE StepComplete(
+
+ virtual HRESULT STDMETHODCALLTYPE StepComplete(
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugThread *pThread,
/* [in] */ ICorDebugStepper *pStepper,
/* [in] */ CorDebugStepReason reason) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE Break(
+
+ virtual HRESULT STDMETHODCALLTYPE Break(
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugThread *thread) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE Exception(
+
+ virtual HRESULT STDMETHODCALLTYPE Exception(
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugThread *pThread,
/* [in] */ BOOL unhandled) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE EvalComplete(
+
+ virtual HRESULT STDMETHODCALLTYPE EvalComplete(
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugThread *pThread,
/* [in] */ ICorDebugEval *pEval) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE EvalException(
+
+ virtual HRESULT STDMETHODCALLTYPE EvalException(
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugThread *pThread,
/* [in] */ ICorDebugEval *pEval) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE CreateProcess(
+
+ virtual HRESULT STDMETHODCALLTYPE CreateProcess(
/* [in] */ ICorDebugProcess *pProcess) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE ExitProcess(
+
+ virtual HRESULT STDMETHODCALLTYPE ExitProcess(
/* [in] */ ICorDebugProcess *pProcess) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE CreateThread(
+
+ virtual HRESULT STDMETHODCALLTYPE CreateThread(
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugThread *thread) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE ExitThread(
+
+ virtual HRESULT STDMETHODCALLTYPE ExitThread(
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugThread *thread) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE LoadModule(
+
+ virtual HRESULT STDMETHODCALLTYPE LoadModule(
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugModule *pModule) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE UnloadModule(
+
+ virtual HRESULT STDMETHODCALLTYPE UnloadModule(
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugModule *pModule) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE LoadClass(
+
+ virtual HRESULT STDMETHODCALLTYPE LoadClass(
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugClass *c) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE UnloadClass(
+
+ virtual HRESULT STDMETHODCALLTYPE UnloadClass(
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugClass *c) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE DebuggerError(
+
+ virtual HRESULT STDMETHODCALLTYPE DebuggerError(
/* [in] */ ICorDebugProcess *pProcess,
/* [in] */ HRESULT errorHR,
/* [in] */ DWORD errorCode) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE LogMessage(
+
+ virtual HRESULT STDMETHODCALLTYPE LogMessage(
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugThread *pThread,
/* [in] */ LONG lLevel,
/* [in] */ WCHAR *pLogSwitchName,
/* [in] */ WCHAR *pMessage) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE LogSwitch(
+
+ virtual HRESULT STDMETHODCALLTYPE LogSwitch(
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugThread *pThread,
/* [in] */ LONG lLevel,
/* [in] */ ULONG ulReason,
/* [in] */ WCHAR *pLogSwitchName,
/* [in] */ WCHAR *pParentName) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE CreateAppDomain(
+
+ virtual HRESULT STDMETHODCALLTYPE CreateAppDomain(
/* [in] */ ICorDebugProcess *pProcess,
/* [in] */ ICorDebugAppDomain *pAppDomain) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE ExitAppDomain(
+
+ virtual HRESULT STDMETHODCALLTYPE ExitAppDomain(
/* [in] */ ICorDebugProcess *pProcess,
/* [in] */ ICorDebugAppDomain *pAppDomain) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE LoadAssembly(
+
+ virtual HRESULT STDMETHODCALLTYPE LoadAssembly(
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugAssembly *pAssembly) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE UnloadAssembly(
+
+ virtual HRESULT STDMETHODCALLTYPE UnloadAssembly(
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugAssembly *pAssembly) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE ControlCTrap(
+
+ virtual HRESULT STDMETHODCALLTYPE ControlCTrap(
/* [in] */ ICorDebugProcess *pProcess) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE NameChange(
+
+ virtual HRESULT STDMETHODCALLTYPE NameChange(
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugThread *pThread) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE UpdateModuleSymbols(
+
+ virtual HRESULT STDMETHODCALLTYPE UpdateModuleSymbols(
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugModule *pModule,
/* [in] */ IStream *pSymbolStream) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE EditAndContinueRemap(
+
+ virtual HRESULT STDMETHODCALLTYPE EditAndContinueRemap(
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugThread *pThread,
/* [in] */ ICorDebugFunction *pFunction,
/* [in] */ BOOL fAccurate) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE BreakpointSetError(
+
+ virtual HRESULT STDMETHODCALLTYPE BreakpointSetError(
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugThread *pThread,
/* [in] */ ICorDebugBreakpoint *pBreakpoint,
/* [in] */ DWORD dwError) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugManagedCallbackVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugManagedCallback * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugManagedCallback * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugManagedCallback * This);
-
- HRESULT ( STDMETHODCALLTYPE *Breakpoint )(
+
+ HRESULT ( STDMETHODCALLTYPE *Breakpoint )(
ICorDebugManagedCallback * This,
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugThread *pThread,
/* [in] */ ICorDebugBreakpoint *pBreakpoint);
-
- HRESULT ( STDMETHODCALLTYPE *StepComplete )(
+
+ HRESULT ( STDMETHODCALLTYPE *StepComplete )(
ICorDebugManagedCallback * This,
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugThread *pThread,
/* [in] */ ICorDebugStepper *pStepper,
/* [in] */ CorDebugStepReason reason);
-
- HRESULT ( STDMETHODCALLTYPE *Break )(
+
+ HRESULT ( STDMETHODCALLTYPE *Break )(
ICorDebugManagedCallback * This,
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugThread *thread);
-
- HRESULT ( STDMETHODCALLTYPE *Exception )(
+
+ HRESULT ( STDMETHODCALLTYPE *Exception )(
ICorDebugManagedCallback * This,
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugThread *pThread,
/* [in] */ BOOL unhandled);
-
- HRESULT ( STDMETHODCALLTYPE *EvalComplete )(
+
+ HRESULT ( STDMETHODCALLTYPE *EvalComplete )(
ICorDebugManagedCallback * This,
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugThread *pThread,
/* [in] */ ICorDebugEval *pEval);
-
- HRESULT ( STDMETHODCALLTYPE *EvalException )(
+
+ HRESULT ( STDMETHODCALLTYPE *EvalException )(
ICorDebugManagedCallback * This,
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugThread *pThread,
/* [in] */ ICorDebugEval *pEval);
-
- HRESULT ( STDMETHODCALLTYPE *CreateProcess )(
+
+ HRESULT ( STDMETHODCALLTYPE *CreateProcess )(
ICorDebugManagedCallback * This,
/* [in] */ ICorDebugProcess *pProcess);
-
- HRESULT ( STDMETHODCALLTYPE *ExitProcess )(
+
+ HRESULT ( STDMETHODCALLTYPE *ExitProcess )(
ICorDebugManagedCallback * This,
/* [in] */ ICorDebugProcess *pProcess);
-
- HRESULT ( STDMETHODCALLTYPE *CreateThread )(
+
+ HRESULT ( STDMETHODCALLTYPE *CreateThread )(
ICorDebugManagedCallback * This,
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugThread *thread);
-
- HRESULT ( STDMETHODCALLTYPE *ExitThread )(
+
+ HRESULT ( STDMETHODCALLTYPE *ExitThread )(
ICorDebugManagedCallback * This,
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugThread *thread);
-
- HRESULT ( STDMETHODCALLTYPE *LoadModule )(
+
+ HRESULT ( STDMETHODCALLTYPE *LoadModule )(
ICorDebugManagedCallback * This,
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugModule *pModule);
-
- HRESULT ( STDMETHODCALLTYPE *UnloadModule )(
+
+ HRESULT ( STDMETHODCALLTYPE *UnloadModule )(
ICorDebugManagedCallback * This,
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugModule *pModule);
-
- HRESULT ( STDMETHODCALLTYPE *LoadClass )(
+
+ HRESULT ( STDMETHODCALLTYPE *LoadClass )(
ICorDebugManagedCallback * This,
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugClass *c);
-
- HRESULT ( STDMETHODCALLTYPE *UnloadClass )(
+
+ HRESULT ( STDMETHODCALLTYPE *UnloadClass )(
ICorDebugManagedCallback * This,
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugClass *c);
-
- HRESULT ( STDMETHODCALLTYPE *DebuggerError )(
+
+ HRESULT ( STDMETHODCALLTYPE *DebuggerError )(
ICorDebugManagedCallback * This,
/* [in] */ ICorDebugProcess *pProcess,
/* [in] */ HRESULT errorHR,
/* [in] */ DWORD errorCode);
-
- HRESULT ( STDMETHODCALLTYPE *LogMessage )(
+
+ HRESULT ( STDMETHODCALLTYPE *LogMessage )(
ICorDebugManagedCallback * This,
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugThread *pThread,
/* [in] */ LONG lLevel,
/* [in] */ WCHAR *pLogSwitchName,
/* [in] */ WCHAR *pMessage);
-
- HRESULT ( STDMETHODCALLTYPE *LogSwitch )(
+
+ HRESULT ( STDMETHODCALLTYPE *LogSwitch )(
ICorDebugManagedCallback * This,
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugThread *pThread,
@@ -3545,56 +3554,56 @@ EXTERN_C const IID IID_ICorDebugManagedCallback;
/* [in] */ ULONG ulReason,
/* [in] */ WCHAR *pLogSwitchName,
/* [in] */ WCHAR *pParentName);
-
- HRESULT ( STDMETHODCALLTYPE *CreateAppDomain )(
+
+ HRESULT ( STDMETHODCALLTYPE *CreateAppDomain )(
ICorDebugManagedCallback * This,
/* [in] */ ICorDebugProcess *pProcess,
/* [in] */ ICorDebugAppDomain *pAppDomain);
-
- HRESULT ( STDMETHODCALLTYPE *ExitAppDomain )(
+
+ HRESULT ( STDMETHODCALLTYPE *ExitAppDomain )(
ICorDebugManagedCallback * This,
/* [in] */ ICorDebugProcess *pProcess,
/* [in] */ ICorDebugAppDomain *pAppDomain);
-
- HRESULT ( STDMETHODCALLTYPE *LoadAssembly )(
+
+ HRESULT ( STDMETHODCALLTYPE *LoadAssembly )(
ICorDebugManagedCallback * This,
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugAssembly *pAssembly);
-
- HRESULT ( STDMETHODCALLTYPE *UnloadAssembly )(
+
+ HRESULT ( STDMETHODCALLTYPE *UnloadAssembly )(
ICorDebugManagedCallback * This,
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugAssembly *pAssembly);
-
- HRESULT ( STDMETHODCALLTYPE *ControlCTrap )(
+
+ HRESULT ( STDMETHODCALLTYPE *ControlCTrap )(
ICorDebugManagedCallback * This,
/* [in] */ ICorDebugProcess *pProcess);
-
- HRESULT ( STDMETHODCALLTYPE *NameChange )(
+
+ HRESULT ( STDMETHODCALLTYPE *NameChange )(
ICorDebugManagedCallback * This,
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugThread *pThread);
-
- HRESULT ( STDMETHODCALLTYPE *UpdateModuleSymbols )(
+
+ HRESULT ( STDMETHODCALLTYPE *UpdateModuleSymbols )(
ICorDebugManagedCallback * This,
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugModule *pModule,
/* [in] */ IStream *pSymbolStream);
-
- HRESULT ( STDMETHODCALLTYPE *EditAndContinueRemap )(
+
+ HRESULT ( STDMETHODCALLTYPE *EditAndContinueRemap )(
ICorDebugManagedCallback * This,
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugThread *pThread,
/* [in] */ ICorDebugFunction *pFunction,
/* [in] */ BOOL fAccurate);
-
- HRESULT ( STDMETHODCALLTYPE *BreakpointSetError )(
+
+ HRESULT ( STDMETHODCALLTYPE *BreakpointSetError )(
ICorDebugManagedCallback * This,
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugThread *pThread,
/* [in] */ ICorDebugBreakpoint *pBreakpoint,
/* [in] */ DWORD dwError);
-
+
END_INTERFACE
} ICorDebugManagedCallbackVtbl;
@@ -3603,98 +3612,98 @@ EXTERN_C const IID IID_ICorDebugManagedCallback;
CONST_VTBL struct ICorDebugManagedCallbackVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugManagedCallback_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugManagedCallback_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugManagedCallback_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugManagedCallback_Breakpoint(This,pAppDomain,pThread,pBreakpoint) \
- ( (This)->lpVtbl -> Breakpoint(This,pAppDomain,pThread,pBreakpoint) )
+ ( (This)->lpVtbl -> Breakpoint(This,pAppDomain,pThread,pBreakpoint) )
#define ICorDebugManagedCallback_StepComplete(This,pAppDomain,pThread,pStepper,reason) \
- ( (This)->lpVtbl -> StepComplete(This,pAppDomain,pThread,pStepper,reason) )
+ ( (This)->lpVtbl -> StepComplete(This,pAppDomain,pThread,pStepper,reason) )
#define ICorDebugManagedCallback_Break(This,pAppDomain,thread) \
- ( (This)->lpVtbl -> Break(This,pAppDomain,thread) )
+ ( (This)->lpVtbl -> Break(This,pAppDomain,thread) )
#define ICorDebugManagedCallback_Exception(This,pAppDomain,pThread,unhandled) \
- ( (This)->lpVtbl -> Exception(This,pAppDomain,pThread,unhandled) )
+ ( (This)->lpVtbl -> Exception(This,pAppDomain,pThread,unhandled) )
#define ICorDebugManagedCallback_EvalComplete(This,pAppDomain,pThread,pEval) \
- ( (This)->lpVtbl -> EvalComplete(This,pAppDomain,pThread,pEval) )
+ ( (This)->lpVtbl -> EvalComplete(This,pAppDomain,pThread,pEval) )
#define ICorDebugManagedCallback_EvalException(This,pAppDomain,pThread,pEval) \
- ( (This)->lpVtbl -> EvalException(This,pAppDomain,pThread,pEval) )
+ ( (This)->lpVtbl -> EvalException(This,pAppDomain,pThread,pEval) )
#define ICorDebugManagedCallback_CreateProcess(This,pProcess) \
- ( (This)->lpVtbl -> CreateProcess(This,pProcess) )
+ ( (This)->lpVtbl -> CreateProcess(This,pProcess) )
#define ICorDebugManagedCallback_ExitProcess(This,pProcess) \
- ( (This)->lpVtbl -> ExitProcess(This,pProcess) )
+ ( (This)->lpVtbl -> ExitProcess(This,pProcess) )
#define ICorDebugManagedCallback_CreateThread(This,pAppDomain,thread) \
- ( (This)->lpVtbl -> CreateThread(This,pAppDomain,thread) )
+ ( (This)->lpVtbl -> CreateThread(This,pAppDomain,thread) )
#define ICorDebugManagedCallback_ExitThread(This,pAppDomain,thread) \
- ( (This)->lpVtbl -> ExitThread(This,pAppDomain,thread) )
+ ( (This)->lpVtbl -> ExitThread(This,pAppDomain,thread) )
#define ICorDebugManagedCallback_LoadModule(This,pAppDomain,pModule) \
- ( (This)->lpVtbl -> LoadModule(This,pAppDomain,pModule) )
+ ( (This)->lpVtbl -> LoadModule(This,pAppDomain,pModule) )
#define ICorDebugManagedCallback_UnloadModule(This,pAppDomain,pModule) \
- ( (This)->lpVtbl -> UnloadModule(This,pAppDomain,pModule) )
+ ( (This)->lpVtbl -> UnloadModule(This,pAppDomain,pModule) )
#define ICorDebugManagedCallback_LoadClass(This,pAppDomain,c) \
- ( (This)->lpVtbl -> LoadClass(This,pAppDomain,c) )
+ ( (This)->lpVtbl -> LoadClass(This,pAppDomain,c) )
#define ICorDebugManagedCallback_UnloadClass(This,pAppDomain,c) \
- ( (This)->lpVtbl -> UnloadClass(This,pAppDomain,c) )
+ ( (This)->lpVtbl -> UnloadClass(This,pAppDomain,c) )
#define ICorDebugManagedCallback_DebuggerError(This,pProcess,errorHR,errorCode) \
- ( (This)->lpVtbl -> DebuggerError(This,pProcess,errorHR,errorCode) )
+ ( (This)->lpVtbl -> DebuggerError(This,pProcess,errorHR,errorCode) )
#define ICorDebugManagedCallback_LogMessage(This,pAppDomain,pThread,lLevel,pLogSwitchName,pMessage) \
- ( (This)->lpVtbl -> LogMessage(This,pAppDomain,pThread,lLevel,pLogSwitchName,pMessage) )
+ ( (This)->lpVtbl -> LogMessage(This,pAppDomain,pThread,lLevel,pLogSwitchName,pMessage) )
#define ICorDebugManagedCallback_LogSwitch(This,pAppDomain,pThread,lLevel,ulReason,pLogSwitchName,pParentName) \
- ( (This)->lpVtbl -> LogSwitch(This,pAppDomain,pThread,lLevel,ulReason,pLogSwitchName,pParentName) )
+ ( (This)->lpVtbl -> LogSwitch(This,pAppDomain,pThread,lLevel,ulReason,pLogSwitchName,pParentName) )
#define ICorDebugManagedCallback_CreateAppDomain(This,pProcess,pAppDomain) \
- ( (This)->lpVtbl -> CreateAppDomain(This,pProcess,pAppDomain) )
+ ( (This)->lpVtbl -> CreateAppDomain(This,pProcess,pAppDomain) )
#define ICorDebugManagedCallback_ExitAppDomain(This,pProcess,pAppDomain) \
- ( (This)->lpVtbl -> ExitAppDomain(This,pProcess,pAppDomain) )
+ ( (This)->lpVtbl -> ExitAppDomain(This,pProcess,pAppDomain) )
#define ICorDebugManagedCallback_LoadAssembly(This,pAppDomain,pAssembly) \
- ( (This)->lpVtbl -> LoadAssembly(This,pAppDomain,pAssembly) )
+ ( (This)->lpVtbl -> LoadAssembly(This,pAppDomain,pAssembly) )
#define ICorDebugManagedCallback_UnloadAssembly(This,pAppDomain,pAssembly) \
- ( (This)->lpVtbl -> UnloadAssembly(This,pAppDomain,pAssembly) )
+ ( (This)->lpVtbl -> UnloadAssembly(This,pAppDomain,pAssembly) )
#define ICorDebugManagedCallback_ControlCTrap(This,pProcess) \
- ( (This)->lpVtbl -> ControlCTrap(This,pProcess) )
+ ( (This)->lpVtbl -> ControlCTrap(This,pProcess) )
#define ICorDebugManagedCallback_NameChange(This,pAppDomain,pThread) \
- ( (This)->lpVtbl -> NameChange(This,pAppDomain,pThread) )
+ ( (This)->lpVtbl -> NameChange(This,pAppDomain,pThread) )
#define ICorDebugManagedCallback_UpdateModuleSymbols(This,pAppDomain,pModule,pSymbolStream) \
- ( (This)->lpVtbl -> UpdateModuleSymbols(This,pAppDomain,pModule,pSymbolStream) )
+ ( (This)->lpVtbl -> UpdateModuleSymbols(This,pAppDomain,pModule,pSymbolStream) )
#define ICorDebugManagedCallback_EditAndContinueRemap(This,pAppDomain,pThread,pFunction,fAccurate) \
- ( (This)->lpVtbl -> EditAndContinueRemap(This,pAppDomain,pThread,pFunction,fAccurate) )
+ ( (This)->lpVtbl -> EditAndContinueRemap(This,pAppDomain,pThread,pFunction,fAccurate) )
#define ICorDebugManagedCallback_BreakpointSetError(This,pAppDomain,pThread,pBreakpoint,dwError) \
- ( (This)->lpVtbl -> BreakpointSetError(This,pAppDomain,pThread,pBreakpoint,dwError) )
+ ( (This)->lpVtbl -> BreakpointSetError(This,pAppDomain,pThread,pBreakpoint,dwError) )
#endif /* COBJMACROS */
@@ -3708,7 +3717,7 @@ EXTERN_C const IID IID_ICorDebugManagedCallback;
/* interface __MIDL_itf_cordebug_0000_0016 */
-/* [local] */
+/* [local] */
#pragma warning(pop)
#pragma warning(push)
@@ -3721,47 +3730,47 @@ extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0016_v0_0_s_ifspec;
#define __ICorDebugManagedCallback3_INTERFACE_DEFINED__
/* interface ICorDebugManagedCallback3 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugManagedCallback3;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("264EA0FC-2591-49AA-868E-835E6515323F")
ICorDebugManagedCallback3 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE CustomNotification(
+ virtual HRESULT STDMETHODCALLTYPE CustomNotification(
/* [in] */ ICorDebugThread *pThread,
/* [in] */ ICorDebugAppDomain *pAppDomain) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugManagedCallback3Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugManagedCallback3 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugManagedCallback3 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugManagedCallback3 * This);
-
- HRESULT ( STDMETHODCALLTYPE *CustomNotification )(
+
+ HRESULT ( STDMETHODCALLTYPE *CustomNotification )(
ICorDebugManagedCallback3 * This,
/* [in] */ ICorDebugThread *pThread,
/* [in] */ ICorDebugAppDomain *pAppDomain);
-
+
END_INTERFACE
} ICorDebugManagedCallback3Vtbl;
@@ -3770,23 +3779,23 @@ EXTERN_C const IID IID_ICorDebugManagedCallback3;
CONST_VTBL struct ICorDebugManagedCallback3Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugManagedCallback3_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugManagedCallback3_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugManagedCallback3_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugManagedCallback3_CustomNotification(This,pThread,pAppDomain) \
- ( (This)->lpVtbl -> CustomNotification(This,pThread,pAppDomain) )
+ ( (This)->lpVtbl -> CustomNotification(This,pThread,pAppDomain) )
#endif /* COBJMACROS */
@@ -3803,65 +3812,65 @@ EXTERN_C const IID IID_ICorDebugManagedCallback3;
#define __ICorDebugManagedCallback4_INTERFACE_DEFINED__
/* interface ICorDebugManagedCallback4 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugManagedCallback4;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("322911AE-16A5-49BA-84A3-ED69678138A3")
ICorDebugManagedCallback4 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE BeforeGarbageCollection(
+ virtual HRESULT STDMETHODCALLTYPE BeforeGarbageCollection(
/* [in] */ ICorDebugProcess *pProcess) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE AfterGarbageCollection(
+
+ virtual HRESULT STDMETHODCALLTYPE AfterGarbageCollection(
/* [in] */ ICorDebugProcess *pProcess) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE DataBreakpoint(
+
+ virtual HRESULT STDMETHODCALLTYPE DataBreakpoint(
/* [in] */ ICorDebugProcess *pProcess,
/* [in] */ ICorDebugThread *pThread,
/* [in] */ BYTE *pContext,
/* [in] */ ULONG32 contextSize) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugManagedCallback4Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugManagedCallback4 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugManagedCallback4 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugManagedCallback4 * This);
-
- HRESULT ( STDMETHODCALLTYPE *BeforeGarbageCollection )(
+
+ HRESULT ( STDMETHODCALLTYPE *BeforeGarbageCollection )(
ICorDebugManagedCallback4 * This,
/* [in] */ ICorDebugProcess *pProcess);
-
- HRESULT ( STDMETHODCALLTYPE *AfterGarbageCollection )(
+
+ HRESULT ( STDMETHODCALLTYPE *AfterGarbageCollection )(
ICorDebugManagedCallback4 * This,
/* [in] */ ICorDebugProcess *pProcess);
-
- HRESULT ( STDMETHODCALLTYPE *DataBreakpoint )(
+
+ HRESULT ( STDMETHODCALLTYPE *DataBreakpoint )(
ICorDebugManagedCallback4 * This,
/* [in] */ ICorDebugProcess *pProcess,
/* [in] */ ICorDebugThread *pThread,
/* [in] */ BYTE *pContext,
/* [in] */ ULONG32 contextSize);
-
+
END_INTERFACE
} ICorDebugManagedCallback4Vtbl;
@@ -3870,29 +3879,29 @@ EXTERN_C const IID IID_ICorDebugManagedCallback4;
CONST_VTBL struct ICorDebugManagedCallback4Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugManagedCallback4_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugManagedCallback4_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugManagedCallback4_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugManagedCallback4_BeforeGarbageCollection(This,pProcess) \
- ( (This)->lpVtbl -> BeforeGarbageCollection(This,pProcess) )
+ ( (This)->lpVtbl -> BeforeGarbageCollection(This,pProcess) )
#define ICorDebugManagedCallback4_AfterGarbageCollection(This,pProcess) \
- ( (This)->lpVtbl -> AfterGarbageCollection(This,pProcess) )
+ ( (This)->lpVtbl -> AfterGarbageCollection(This,pProcess) )
#define ICorDebugManagedCallback4_DataBreakpoint(This,pProcess,pThread,pContext,contextSize) \
- ( (This)->lpVtbl -> DataBreakpoint(This,pProcess,pThread,pContext,contextSize) )
+ ( (This)->lpVtbl -> DataBreakpoint(This,pProcess,pThread,pContext,contextSize) )
#endif /* COBJMACROS */
@@ -3906,9 +3915,9 @@ EXTERN_C const IID IID_ICorDebugManagedCallback4;
/* interface __MIDL_itf_cordebug_0000_0018 */
-/* [local] */
+/* [local] */
-#pragma warning(disable:28718)
+#pragma warning(disable:28718)
extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0018_v0_0_c_ifspec;
@@ -3918,9 +3927,9 @@ extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0018_v0_0_s_ifspec;
#define __ICorDebugManagedCallback2_INTERFACE_DEFINED__
/* interface ICorDebugManagedCallback2 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
-typedef
+typedef
enum CorDebugExceptionCallbackType
{
DEBUG_EXCEPTION_FIRST_CHANCE = 1,
@@ -3929,14 +3938,14 @@ enum CorDebugExceptionCallbackType
DEBUG_EXCEPTION_UNHANDLED = 4
} CorDebugExceptionCallbackType;
-typedef
+typedef
enum CorDebugExceptionFlags
{
DEBUG_EXCEPTION_NONE = 0,
DEBUG_EXCEPTION_CAN_BE_INTERCEPTED = 0x1
} CorDebugExceptionFlags;
-typedef
+typedef
enum CorDebugExceptionUnwindCallbackType
{
DEBUG_EXCEPTION_UNWIND_BEGIN = 1,
@@ -3947,101 +3956,101 @@ enum CorDebugExceptionUnwindCallbackType
EXTERN_C const IID IID_ICorDebugManagedCallback2;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("250E5EEA-DB5C-4C76-B6F3-8C46F12E3203")
ICorDebugManagedCallback2 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE FunctionRemapOpportunity(
+ virtual HRESULT STDMETHODCALLTYPE FunctionRemapOpportunity(
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugThread *pThread,
/* [in] */ ICorDebugFunction *pOldFunction,
/* [in] */ ICorDebugFunction *pNewFunction,
/* [in] */ ULONG32 oldILOffset) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE CreateConnection(
+
+ virtual HRESULT STDMETHODCALLTYPE CreateConnection(
/* [in] */ ICorDebugProcess *pProcess,
/* [in] */ CONNID dwConnectionId,
/* [in] */ WCHAR *pConnName) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE ChangeConnection(
+
+ virtual HRESULT STDMETHODCALLTYPE ChangeConnection(
/* [in] */ ICorDebugProcess *pProcess,
/* [in] */ CONNID dwConnectionId) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE DestroyConnection(
+
+ virtual HRESULT STDMETHODCALLTYPE DestroyConnection(
/* [in] */ ICorDebugProcess *pProcess,
/* [in] */ CONNID dwConnectionId) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE Exception(
+
+ virtual HRESULT STDMETHODCALLTYPE Exception(
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugThread *pThread,
/* [in] */ ICorDebugFrame *pFrame,
/* [in] */ ULONG32 nOffset,
/* [in] */ CorDebugExceptionCallbackType dwEventType,
/* [in] */ DWORD dwFlags) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE ExceptionUnwind(
+
+ virtual HRESULT STDMETHODCALLTYPE ExceptionUnwind(
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugThread *pThread,
/* [in] */ CorDebugExceptionUnwindCallbackType dwEventType,
/* [in] */ DWORD dwFlags) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE FunctionRemapComplete(
+
+ virtual HRESULT STDMETHODCALLTYPE FunctionRemapComplete(
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugThread *pThread,
/* [in] */ ICorDebugFunction *pFunction) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE MDANotification(
+
+ virtual HRESULT STDMETHODCALLTYPE MDANotification(
/* [in] */ ICorDebugController *pController,
/* [in] */ ICorDebugThread *pThread,
/* [in] */ ICorDebugMDA *pMDA) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugManagedCallback2Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugManagedCallback2 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugManagedCallback2 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugManagedCallback2 * This);
-
- HRESULT ( STDMETHODCALLTYPE *FunctionRemapOpportunity )(
+
+ HRESULT ( STDMETHODCALLTYPE *FunctionRemapOpportunity )(
ICorDebugManagedCallback2 * This,
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugThread *pThread,
/* [in] */ ICorDebugFunction *pOldFunction,
/* [in] */ ICorDebugFunction *pNewFunction,
/* [in] */ ULONG32 oldILOffset);
-
- HRESULT ( STDMETHODCALLTYPE *CreateConnection )(
+
+ HRESULT ( STDMETHODCALLTYPE *CreateConnection )(
ICorDebugManagedCallback2 * This,
/* [in] */ ICorDebugProcess *pProcess,
/* [in] */ CONNID dwConnectionId,
/* [in] */ WCHAR *pConnName);
-
- HRESULT ( STDMETHODCALLTYPE *ChangeConnection )(
+
+ HRESULT ( STDMETHODCALLTYPE *ChangeConnection )(
ICorDebugManagedCallback2 * This,
/* [in] */ ICorDebugProcess *pProcess,
/* [in] */ CONNID dwConnectionId);
-
- HRESULT ( STDMETHODCALLTYPE *DestroyConnection )(
+
+ HRESULT ( STDMETHODCALLTYPE *DestroyConnection )(
ICorDebugManagedCallback2 * This,
/* [in] */ ICorDebugProcess *pProcess,
/* [in] */ CONNID dwConnectionId);
-
- HRESULT ( STDMETHODCALLTYPE *Exception )(
+
+ HRESULT ( STDMETHODCALLTYPE *Exception )(
ICorDebugManagedCallback2 * This,
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugThread *pThread,
@@ -4049,26 +4058,26 @@ EXTERN_C const IID IID_ICorDebugManagedCallback2;
/* [in] */ ULONG32 nOffset,
/* [in] */ CorDebugExceptionCallbackType dwEventType,
/* [in] */ DWORD dwFlags);
-
- HRESULT ( STDMETHODCALLTYPE *ExceptionUnwind )(
+
+ HRESULT ( STDMETHODCALLTYPE *ExceptionUnwind )(
ICorDebugManagedCallback2 * This,
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugThread *pThread,
/* [in] */ CorDebugExceptionUnwindCallbackType dwEventType,
/* [in] */ DWORD dwFlags);
-
- HRESULT ( STDMETHODCALLTYPE *FunctionRemapComplete )(
+
+ HRESULT ( STDMETHODCALLTYPE *FunctionRemapComplete )(
ICorDebugManagedCallback2 * This,
/* [in] */ ICorDebugAppDomain *pAppDomain,
/* [in] */ ICorDebugThread *pThread,
/* [in] */ ICorDebugFunction *pFunction);
-
- HRESULT ( STDMETHODCALLTYPE *MDANotification )(
+
+ HRESULT ( STDMETHODCALLTYPE *MDANotification )(
ICorDebugManagedCallback2 * This,
/* [in] */ ICorDebugController *pController,
/* [in] */ ICorDebugThread *pThread,
/* [in] */ ICorDebugMDA *pMDA);
-
+
END_INTERFACE
} ICorDebugManagedCallback2Vtbl;
@@ -4077,44 +4086,44 @@ EXTERN_C const IID IID_ICorDebugManagedCallback2;
CONST_VTBL struct ICorDebugManagedCallback2Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugManagedCallback2_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugManagedCallback2_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugManagedCallback2_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugManagedCallback2_FunctionRemapOpportunity(This,pAppDomain,pThread,pOldFunction,pNewFunction,oldILOffset) \
- ( (This)->lpVtbl -> FunctionRemapOpportunity(This,pAppDomain,pThread,pOldFunction,pNewFunction,oldILOffset) )
+ ( (This)->lpVtbl -> FunctionRemapOpportunity(This,pAppDomain,pThread,pOldFunction,pNewFunction,oldILOffset) )
#define ICorDebugManagedCallback2_CreateConnection(This,pProcess,dwConnectionId,pConnName) \
- ( (This)->lpVtbl -> CreateConnection(This,pProcess,dwConnectionId,pConnName) )
+ ( (This)->lpVtbl -> CreateConnection(This,pProcess,dwConnectionId,pConnName) )
#define ICorDebugManagedCallback2_ChangeConnection(This,pProcess,dwConnectionId) \
- ( (This)->lpVtbl -> ChangeConnection(This,pProcess,dwConnectionId) )
+ ( (This)->lpVtbl -> ChangeConnection(This,pProcess,dwConnectionId) )
#define ICorDebugManagedCallback2_DestroyConnection(This,pProcess,dwConnectionId) \
- ( (This)->lpVtbl -> DestroyConnection(This,pProcess,dwConnectionId) )
+ ( (This)->lpVtbl -> DestroyConnection(This,pProcess,dwConnectionId) )
#define ICorDebugManagedCallback2_Exception(This,pAppDomain,pThread,pFrame,nOffset,dwEventType,dwFlags) \
- ( (This)->lpVtbl -> Exception(This,pAppDomain,pThread,pFrame,nOffset,dwEventType,dwFlags) )
+ ( (This)->lpVtbl -> Exception(This,pAppDomain,pThread,pFrame,nOffset,dwEventType,dwFlags) )
#define ICorDebugManagedCallback2_ExceptionUnwind(This,pAppDomain,pThread,dwEventType,dwFlags) \
- ( (This)->lpVtbl -> ExceptionUnwind(This,pAppDomain,pThread,dwEventType,dwFlags) )
+ ( (This)->lpVtbl -> ExceptionUnwind(This,pAppDomain,pThread,dwEventType,dwFlags) )
#define ICorDebugManagedCallback2_FunctionRemapComplete(This,pAppDomain,pThread,pFunction) \
- ( (This)->lpVtbl -> FunctionRemapComplete(This,pAppDomain,pThread,pFunction) )
+ ( (This)->lpVtbl -> FunctionRemapComplete(This,pAppDomain,pThread,pFunction) )
#define ICorDebugManagedCallback2_MDANotification(This,pController,pThread,pMDA) \
- ( (This)->lpVtbl -> MDANotification(This,pController,pThread,pMDA) )
+ ( (This)->lpVtbl -> MDANotification(This,pController,pThread,pMDA) )
#endif /* COBJMACROS */
@@ -4128,7 +4137,7 @@ EXTERN_C const IID IID_ICorDebugManagedCallback2;
/* interface __MIDL_itf_cordebug_0000_0019 */
-/* [local] */
+/* [local] */
#pragma warning(pop)
@@ -4140,47 +4149,47 @@ extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0019_v0_0_s_ifspec;
#define __ICorDebugUnmanagedCallback_INTERFACE_DEFINED__
/* interface ICorDebugUnmanagedCallback */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugUnmanagedCallback;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("5263E909-8CB5-11d3-BD2F-0000F80849BD")
ICorDebugUnmanagedCallback : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE DebugEvent(
+ virtual HRESULT STDMETHODCALLTYPE DebugEvent(
/* [in] */ LPDEBUG_EVENT pDebugEvent,
/* [in] */ BOOL fOutOfBand) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugUnmanagedCallbackVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugUnmanagedCallback * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugUnmanagedCallback * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugUnmanagedCallback * This);
-
- HRESULT ( STDMETHODCALLTYPE *DebugEvent )(
+
+ HRESULT ( STDMETHODCALLTYPE *DebugEvent )(
ICorDebugUnmanagedCallback * This,
/* [in] */ LPDEBUG_EVENT pDebugEvent,
/* [in] */ BOOL fOutOfBand);
-
+
END_INTERFACE
} ICorDebugUnmanagedCallbackVtbl;
@@ -4189,23 +4198,23 @@ EXTERN_C const IID IID_ICorDebugUnmanagedCallback;
CONST_VTBL struct ICorDebugUnmanagedCallbackVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugUnmanagedCallback_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugUnmanagedCallback_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugUnmanagedCallback_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugUnmanagedCallback_DebugEvent(This,pDebugEvent,fOutOfBand) \
- ( (This)->lpVtbl -> DebugEvent(This,pDebugEvent,fOutOfBand) )
+ ( (This)->lpVtbl -> DebugEvent(This,pDebugEvent,fOutOfBand) )
#endif /* COBJMACROS */
@@ -4219,15 +4228,15 @@ EXTERN_C const IID IID_ICorDebugUnmanagedCallback;
/* interface __MIDL_itf_cordebug_0000_0020 */
-/* [local] */
+/* [local] */
-typedef
+typedef
enum CorDebugCreateProcessFlags
{
DEBUG_NO_SPECIAL_OPTIONS = 0
} CorDebugCreateProcessFlags;
-typedef
+typedef
enum CorDebugHandleType
{
HANDLE_STRONG = 1,
@@ -4236,7 +4245,7 @@ enum CorDebugHandleType
} CorDebugHandleType;
#pragma warning(push)
-#pragma warning(disable:28718)
+#pragma warning(disable:28718)
extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0020_v0_0_c_ifspec;
@@ -4246,28 +4255,28 @@ extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0020_v0_0_s_ifspec;
#define __ICorDebug_INTERFACE_DEFINED__
/* interface ICorDebug */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebug;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("3d6f5f61-7538-11d3-8d5b-00104b35e7ef")
ICorDebug : public IUnknown
{
public:
virtual HRESULT STDMETHODCALLTYPE Initialize( void) = 0;
-
+
virtual HRESULT STDMETHODCALLTYPE Terminate( void) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE SetManagedHandler(
+
+ virtual HRESULT STDMETHODCALLTYPE SetManagedHandler(
/* [in] */ ICorDebugManagedCallback *pCallback) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE SetUnmanagedHandler(
+
+ virtual HRESULT STDMETHODCALLTYPE SetUnmanagedHandler(
/* [in] */ ICorDebugUnmanagedCallback *pCallback) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE CreateProcess(
+
+ virtual HRESULT STDMETHODCALLTYPE CreateProcess(
/* [in] */ LPCWSTR lpApplicationName,
/* [in] */ LPWSTR lpCommandLine,
/* [in] */ LPSECURITY_ATTRIBUTES lpProcessAttributes,
@@ -4280,59 +4289,59 @@ EXTERN_C const IID IID_ICorDebug;
/* [in] */ LPPROCESS_INFORMATION lpProcessInformation,
/* [in] */ CorDebugCreateProcessFlags debuggingFlags,
/* [out] */ ICorDebugProcess **ppProcess) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE DebugActiveProcess(
+
+ virtual HRESULT STDMETHODCALLTYPE DebugActiveProcess(
/* [in] */ DWORD id,
/* [in] */ BOOL win32Attach,
/* [out] */ ICorDebugProcess **ppProcess) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE EnumerateProcesses(
+
+ virtual HRESULT STDMETHODCALLTYPE EnumerateProcesses(
/* [out] */ ICorDebugProcessEnum **ppProcess) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetProcess(
+
+ virtual HRESULT STDMETHODCALLTYPE GetProcess(
/* [in] */ DWORD dwProcessId,
/* [out] */ ICorDebugProcess **ppProcess) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE CanLaunchOrAttach(
+
+ virtual HRESULT STDMETHODCALLTYPE CanLaunchOrAttach(
/* [in] */ DWORD dwProcessId,
/* [in] */ BOOL win32DebuggingEnabled) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebug * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebug * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebug * This);
-
- HRESULT ( STDMETHODCALLTYPE *Initialize )(
+
+ HRESULT ( STDMETHODCALLTYPE *Initialize )(
ICorDebug * This);
-
- HRESULT ( STDMETHODCALLTYPE *Terminate )(
+
+ HRESULT ( STDMETHODCALLTYPE *Terminate )(
ICorDebug * This);
-
- HRESULT ( STDMETHODCALLTYPE *SetManagedHandler )(
+
+ HRESULT ( STDMETHODCALLTYPE *SetManagedHandler )(
ICorDebug * This,
/* [in] */ ICorDebugManagedCallback *pCallback);
-
- HRESULT ( STDMETHODCALLTYPE *SetUnmanagedHandler )(
+
+ HRESULT ( STDMETHODCALLTYPE *SetUnmanagedHandler )(
ICorDebug * This,
/* [in] */ ICorDebugUnmanagedCallback *pCallback);
-
- HRESULT ( STDMETHODCALLTYPE *CreateProcess )(
+
+ HRESULT ( STDMETHODCALLTYPE *CreateProcess )(
ICorDebug * This,
/* [in] */ LPCWSTR lpApplicationName,
/* [in] */ LPWSTR lpCommandLine,
@@ -4346,27 +4355,27 @@ EXTERN_C const IID IID_ICorDebug;
/* [in] */ LPPROCESS_INFORMATION lpProcessInformation,
/* [in] */ CorDebugCreateProcessFlags debuggingFlags,
/* [out] */ ICorDebugProcess **ppProcess);
-
- HRESULT ( STDMETHODCALLTYPE *DebugActiveProcess )(
+
+ HRESULT ( STDMETHODCALLTYPE *DebugActiveProcess )(
ICorDebug * This,
/* [in] */ DWORD id,
/* [in] */ BOOL win32Attach,
/* [out] */ ICorDebugProcess **ppProcess);
-
- HRESULT ( STDMETHODCALLTYPE *EnumerateProcesses )(
+
+ HRESULT ( STDMETHODCALLTYPE *EnumerateProcesses )(
ICorDebug * This,
/* [out] */ ICorDebugProcessEnum **ppProcess);
-
- HRESULT ( STDMETHODCALLTYPE *GetProcess )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetProcess )(
ICorDebug * This,
/* [in] */ DWORD dwProcessId,
/* [out] */ ICorDebugProcess **ppProcess);
-
- HRESULT ( STDMETHODCALLTYPE *CanLaunchOrAttach )(
+
+ HRESULT ( STDMETHODCALLTYPE *CanLaunchOrAttach )(
ICorDebug * This,
/* [in] */ DWORD dwProcessId,
/* [in] */ BOOL win32DebuggingEnabled);
-
+
END_INTERFACE
} ICorDebugVtbl;
@@ -4375,47 +4384,47 @@ EXTERN_C const IID IID_ICorDebug;
CONST_VTBL struct ICorDebugVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebug_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebug_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebug_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebug_Initialize(This) \
- ( (This)->lpVtbl -> Initialize(This) )
+ ( (This)->lpVtbl -> Initialize(This) )
#define ICorDebug_Terminate(This) \
- ( (This)->lpVtbl -> Terminate(This) )
+ ( (This)->lpVtbl -> Terminate(This) )
#define ICorDebug_SetManagedHandler(This,pCallback) \
- ( (This)->lpVtbl -> SetManagedHandler(This,pCallback) )
+ ( (This)->lpVtbl -> SetManagedHandler(This,pCallback) )
#define ICorDebug_SetUnmanagedHandler(This,pCallback) \
- ( (This)->lpVtbl -> SetUnmanagedHandler(This,pCallback) )
+ ( (This)->lpVtbl -> SetUnmanagedHandler(This,pCallback) )
#define ICorDebug_CreateProcess(This,lpApplicationName,lpCommandLine,lpProcessAttributes,lpThreadAttributes,bInheritHandles,dwCreationFlags,lpEnvironment,lpCurrentDirectory,lpStartupInfo,lpProcessInformation,debuggingFlags,ppProcess) \
- ( (This)->lpVtbl -> CreateProcess(This,lpApplicationName,lpCommandLine,lpProcessAttributes,lpThreadAttributes,bInheritHandles,dwCreationFlags,lpEnvironment,lpCurrentDirectory,lpStartupInfo,lpProcessInformation,debuggingFlags,ppProcess) )
+ ( (This)->lpVtbl -> CreateProcess(This,lpApplicationName,lpCommandLine,lpProcessAttributes,lpThreadAttributes,bInheritHandles,dwCreationFlags,lpEnvironment,lpCurrentDirectory,lpStartupInfo,lpProcessInformation,debuggingFlags,ppProcess) )
#define ICorDebug_DebugActiveProcess(This,id,win32Attach,ppProcess) \
- ( (This)->lpVtbl -> DebugActiveProcess(This,id,win32Attach,ppProcess) )
+ ( (This)->lpVtbl -> DebugActiveProcess(This,id,win32Attach,ppProcess) )
#define ICorDebug_EnumerateProcesses(This,ppProcess) \
- ( (This)->lpVtbl -> EnumerateProcesses(This,ppProcess) )
+ ( (This)->lpVtbl -> EnumerateProcesses(This,ppProcess) )
#define ICorDebug_GetProcess(This,dwProcessId,ppProcess) \
- ( (This)->lpVtbl -> GetProcess(This,dwProcessId,ppProcess) )
+ ( (This)->lpVtbl -> GetProcess(This,dwProcessId,ppProcess) )
#define ICorDebug_CanLaunchOrAttach(This,dwProcessId,win32DebuggingEnabled) \
- ( (This)->lpVtbl -> CanLaunchOrAttach(This,dwProcessId,win32DebuggingEnabled) )
+ ( (This)->lpVtbl -> CanLaunchOrAttach(This,dwProcessId,win32DebuggingEnabled) )
#endif /* COBJMACROS */
@@ -4429,7 +4438,7 @@ EXTERN_C const IID IID_ICorDebug;
/* interface __MIDL_itf_cordebug_0000_0021 */
-/* [local] */
+/* [local] */
#pragma warning(pop)
@@ -4441,53 +4450,53 @@ extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0021_v0_0_s_ifspec;
#define __ICorDebugRemoteTarget_INTERFACE_DEFINED__
/* interface ICorDebugRemoteTarget */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugRemoteTarget;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("C3ED8383-5A49-4cf5-B4B7-01864D9E582D")
ICorDebugRemoteTarget : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetHostName(
+ virtual HRESULT STDMETHODCALLTYPE GetHostName(
/* [in] */ ULONG32 cchHostName,
- /* [annotation][out] */
+ /* [annotation][out] */
_Out_ ULONG32 *pcchHostName,
- /* [annotation][length_is][size_is][out] */
+ /* [annotation][length_is][size_is][out] */
_Out_writes_to_opt_(cchHostName, *pcchHostName) WCHAR szHostName[ ]) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugRemoteTargetVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugRemoteTarget * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugRemoteTarget * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugRemoteTarget * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetHostName )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetHostName )(
ICorDebugRemoteTarget * This,
/* [in] */ ULONG32 cchHostName,
- /* [annotation][out] */
+ /* [annotation][out] */
_Out_ ULONG32 *pcchHostName,
- /* [annotation][length_is][size_is][out] */
+ /* [annotation][length_is][size_is][out] */
_Out_writes_to_opt_(cchHostName, *pcchHostName) WCHAR szHostName[ ]);
-
+
END_INTERFACE
} ICorDebugRemoteTargetVtbl;
@@ -4496,23 +4505,23 @@ EXTERN_C const IID IID_ICorDebugRemoteTarget;
CONST_VTBL struct ICorDebugRemoteTargetVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugRemoteTarget_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugRemoteTarget_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugRemoteTarget_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugRemoteTarget_GetHostName(This,cchHostName,pcchHostName,szHostName) \
- ( (This)->lpVtbl -> GetHostName(This,cchHostName,pcchHostName,szHostName) )
+ ( (This)->lpVtbl -> GetHostName(This,cchHostName,pcchHostName,szHostName) )
#endif /* COBJMACROS */
@@ -4529,21 +4538,21 @@ EXTERN_C const IID IID_ICorDebugRemoteTarget;
#define __ICorDebugRemote_INTERFACE_DEFINED__
/* interface ICorDebugRemote */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugRemote;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("D5EBB8E2-7BBE-4c1d-98A6-A3C04CBDEF64")
ICorDebugRemote : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE CreateProcessEx(
+ virtual HRESULT STDMETHODCALLTYPE CreateProcessEx(
/* [in] */ ICorDebugRemoteTarget *pRemoteTarget,
/* [in] */ LPCWSTR lpApplicationName,
- /* [annotation][in] */
+ /* [annotation][in] */
_In_ LPWSTR lpCommandLine,
/* [in] */ LPSECURITY_ATTRIBUTES lpProcessAttributes,
/* [in] */ LPSECURITY_ATTRIBUTES lpThreadAttributes,
@@ -4555,39 +4564,39 @@ EXTERN_C const IID IID_ICorDebugRemote;
/* [in] */ LPPROCESS_INFORMATION lpProcessInformation,
/* [in] */ CorDebugCreateProcessFlags debuggingFlags,
/* [out] */ ICorDebugProcess **ppProcess) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE DebugActiveProcessEx(
+
+ virtual HRESULT STDMETHODCALLTYPE DebugActiveProcessEx(
/* [in] */ ICorDebugRemoteTarget *pRemoteTarget,
/* [in] */ DWORD dwProcessId,
/* [in] */ BOOL fWin32Attach,
/* [out] */ ICorDebugProcess **ppProcess) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugRemoteVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugRemote * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugRemote * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugRemote * This);
-
- HRESULT ( STDMETHODCALLTYPE *CreateProcessEx )(
+
+ HRESULT ( STDMETHODCALLTYPE *CreateProcessEx )(
ICorDebugRemote * This,
/* [in] */ ICorDebugRemoteTarget *pRemoteTarget,
/* [in] */ LPCWSTR lpApplicationName,
- /* [annotation][in] */
+ /* [annotation][in] */
_In_ LPWSTR lpCommandLine,
/* [in] */ LPSECURITY_ATTRIBUTES lpProcessAttributes,
/* [in] */ LPSECURITY_ATTRIBUTES lpThreadAttributes,
@@ -4599,14 +4608,14 @@ EXTERN_C const IID IID_ICorDebugRemote;
/* [in] */ LPPROCESS_INFORMATION lpProcessInformation,
/* [in] */ CorDebugCreateProcessFlags debuggingFlags,
/* [out] */ ICorDebugProcess **ppProcess);
-
- HRESULT ( STDMETHODCALLTYPE *DebugActiveProcessEx )(
+
+ HRESULT ( STDMETHODCALLTYPE *DebugActiveProcessEx )(
ICorDebugRemote * This,
/* [in] */ ICorDebugRemoteTarget *pRemoteTarget,
/* [in] */ DWORD dwProcessId,
/* [in] */ BOOL fWin32Attach,
/* [out] */ ICorDebugProcess **ppProcess);
-
+
END_INTERFACE
} ICorDebugRemoteVtbl;
@@ -4615,26 +4624,26 @@ EXTERN_C const IID IID_ICorDebugRemote;
CONST_VTBL struct ICorDebugRemoteVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugRemote_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugRemote_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugRemote_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugRemote_CreateProcessEx(This,pRemoteTarget,lpApplicationName,lpCommandLine,lpProcessAttributes,lpThreadAttributes,bInheritHandles,dwCreationFlags,lpEnvironment,lpCurrentDirectory,lpStartupInfo,lpProcessInformation,debuggingFlags,ppProcess) \
- ( (This)->lpVtbl -> CreateProcessEx(This,pRemoteTarget,lpApplicationName,lpCommandLine,lpProcessAttributes,lpThreadAttributes,bInheritHandles,dwCreationFlags,lpEnvironment,lpCurrentDirectory,lpStartupInfo,lpProcessInformation,debuggingFlags,ppProcess) )
+ ( (This)->lpVtbl -> CreateProcessEx(This,pRemoteTarget,lpApplicationName,lpCommandLine,lpProcessAttributes,lpThreadAttributes,bInheritHandles,dwCreationFlags,lpEnvironment,lpCurrentDirectory,lpStartupInfo,lpProcessInformation,debuggingFlags,ppProcess) )
#define ICorDebugRemote_DebugActiveProcessEx(This,pRemoteTarget,dwProcessId,fWin32Attach,ppProcess) \
- ( (This)->lpVtbl -> DebugActiveProcessEx(This,pRemoteTarget,dwProcessId,fWin32Attach,ppProcess) )
+ ( (This)->lpVtbl -> DebugActiveProcessEx(This,pRemoteTarget,dwProcessId,fWin32Attach,ppProcess) )
#endif /* COBJMACROS */
@@ -4648,7 +4657,7 @@ EXTERN_C const IID IID_ICorDebugRemote;
/* interface __MIDL_itf_cordebug_0000_0023 */
-/* [local] */
+/* [local] */
typedef struct _COR_VERSION
{
@@ -4667,9 +4676,9 @@ extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0023_v0_0_s_ifspec;
#define __ICorDebug2_INTERFACE_DEFINED__
/* interface ICorDebug2 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
-typedef
+typedef
enum CorDebugInterfaceVersion
{
CorDebugInvalidVersion = 0,
@@ -4763,32 +4772,32 @@ enum CorDebugInterfaceVersion
EXTERN_C const IID IID_ICorDebug2;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("ECCCCF2E-B286-4b3e-A983-860A8793D105")
ICorDebug2 : public IUnknown
{
public:
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebug2Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebug2 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebug2 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebug2 * This);
-
+
END_INTERFACE
} ICorDebug2Vtbl;
@@ -4797,19 +4806,19 @@ EXTERN_C const IID IID_ICorDebug2;
CONST_VTBL struct ICorDebug2Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebug2_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebug2_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebug2_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#endif /* COBJMACROS */
@@ -4824,13 +4833,13 @@ EXTERN_C const IID IID_ICorDebug2;
/* interface __MIDL_itf_cordebug_0000_0024 */
-/* [local] */
+/* [local] */
-typedef
+typedef
enum CorDebugThreadState
{
THREAD_RUN = 0,
- THREAD_SUSPEND = ( THREAD_RUN + 1 )
+ THREAD_SUSPEND = ( THREAD_RUN + 1 )
} CorDebugThreadState;
@@ -4842,118 +4851,118 @@ extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0024_v0_0_s_ifspec;
#define __ICorDebugController_INTERFACE_DEFINED__
/* interface ICorDebugController */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugController;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("3d6f5f62-7538-11d3-8d5b-00104b35e7ef")
ICorDebugController : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE Stop(
+ virtual HRESULT STDMETHODCALLTYPE Stop(
/* [in] */ DWORD dwTimeoutIgnored) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE Continue(
+
+ virtual HRESULT STDMETHODCALLTYPE Continue(
/* [in] */ BOOL fIsOutOfBand) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE IsRunning(
+
+ virtual HRESULT STDMETHODCALLTYPE IsRunning(
/* [out] */ BOOL *pbRunning) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE HasQueuedCallbacks(
+
+ virtual HRESULT STDMETHODCALLTYPE HasQueuedCallbacks(
/* [in] */ ICorDebugThread *pThread,
/* [out] */ BOOL *pbQueued) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE EnumerateThreads(
+
+ virtual HRESULT STDMETHODCALLTYPE EnumerateThreads(
/* [out] */ ICorDebugThreadEnum **ppThreads) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE SetAllThreadsDebugState(
+
+ virtual HRESULT STDMETHODCALLTYPE SetAllThreadsDebugState(
/* [in] */ CorDebugThreadState state,
/* [in] */ ICorDebugThread *pExceptThisThread) = 0;
-
+
virtual HRESULT STDMETHODCALLTYPE Detach( void) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE Terminate(
+
+ virtual HRESULT STDMETHODCALLTYPE Terminate(
/* [in] */ UINT exitCode) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE CanCommitChanges(
+
+ virtual HRESULT STDMETHODCALLTYPE CanCommitChanges(
/* [in] */ ULONG cSnapshots,
/* [size_is][in] */ ICorDebugEditAndContinueSnapshot *pSnapshots[ ],
/* [out] */ ICorDebugErrorInfoEnum **pError) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE CommitChanges(
+
+ virtual HRESULT STDMETHODCALLTYPE CommitChanges(
/* [in] */ ULONG cSnapshots,
/* [size_is][in] */ ICorDebugEditAndContinueSnapshot *pSnapshots[ ],
/* [out] */ ICorDebugErrorInfoEnum **pError) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugControllerVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugController * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugController * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugController * This);
-
- HRESULT ( STDMETHODCALLTYPE *Stop )(
+
+ HRESULT ( STDMETHODCALLTYPE *Stop )(
ICorDebugController * This,
/* [in] */ DWORD dwTimeoutIgnored);
-
- HRESULT ( STDMETHODCALLTYPE *Continue )(
+
+ HRESULT ( STDMETHODCALLTYPE *Continue )(
ICorDebugController * This,
/* [in] */ BOOL fIsOutOfBand);
-
- HRESULT ( STDMETHODCALLTYPE *IsRunning )(
+
+ HRESULT ( STDMETHODCALLTYPE *IsRunning )(
ICorDebugController * This,
/* [out] */ BOOL *pbRunning);
-
- HRESULT ( STDMETHODCALLTYPE *HasQueuedCallbacks )(
+
+ HRESULT ( STDMETHODCALLTYPE *HasQueuedCallbacks )(
ICorDebugController * This,
/* [in] */ ICorDebugThread *pThread,
/* [out] */ BOOL *pbQueued);
-
- HRESULT ( STDMETHODCALLTYPE *EnumerateThreads )(
+
+ HRESULT ( STDMETHODCALLTYPE *EnumerateThreads )(
ICorDebugController * This,
/* [out] */ ICorDebugThreadEnum **ppThreads);
-
- HRESULT ( STDMETHODCALLTYPE *SetAllThreadsDebugState )(
+
+ HRESULT ( STDMETHODCALLTYPE *SetAllThreadsDebugState )(
ICorDebugController * This,
/* [in] */ CorDebugThreadState state,
/* [in] */ ICorDebugThread *pExceptThisThread);
-
- HRESULT ( STDMETHODCALLTYPE *Detach )(
+
+ HRESULT ( STDMETHODCALLTYPE *Detach )(
ICorDebugController * This);
-
- HRESULT ( STDMETHODCALLTYPE *Terminate )(
+
+ HRESULT ( STDMETHODCALLTYPE *Terminate )(
ICorDebugController * This,
/* [in] */ UINT exitCode);
-
- HRESULT ( STDMETHODCALLTYPE *CanCommitChanges )(
+
+ HRESULT ( STDMETHODCALLTYPE *CanCommitChanges )(
ICorDebugController * This,
/* [in] */ ULONG cSnapshots,
/* [size_is][in] */ ICorDebugEditAndContinueSnapshot *pSnapshots[ ],
/* [out] */ ICorDebugErrorInfoEnum **pError);
-
- HRESULT ( STDMETHODCALLTYPE *CommitChanges )(
+
+ HRESULT ( STDMETHODCALLTYPE *CommitChanges )(
ICorDebugController * This,
/* [in] */ ULONG cSnapshots,
/* [size_is][in] */ ICorDebugEditAndContinueSnapshot *pSnapshots[ ],
/* [out] */ ICorDebugErrorInfoEnum **pError);
-
+
END_INTERFACE
} ICorDebugControllerVtbl;
@@ -4962,50 +4971,50 @@ EXTERN_C const IID IID_ICorDebugController;
CONST_VTBL struct ICorDebugControllerVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugController_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugController_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugController_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugController_Stop(This,dwTimeoutIgnored) \
- ( (This)->lpVtbl -> Stop(This,dwTimeoutIgnored) )
+ ( (This)->lpVtbl -> Stop(This,dwTimeoutIgnored) )
#define ICorDebugController_Continue(This,fIsOutOfBand) \
- ( (This)->lpVtbl -> Continue(This,fIsOutOfBand) )
+ ( (This)->lpVtbl -> Continue(This,fIsOutOfBand) )
#define ICorDebugController_IsRunning(This,pbRunning) \
- ( (This)->lpVtbl -> IsRunning(This,pbRunning) )
+ ( (This)->lpVtbl -> IsRunning(This,pbRunning) )
#define ICorDebugController_HasQueuedCallbacks(This,pThread,pbQueued) \
- ( (This)->lpVtbl -> HasQueuedCallbacks(This,pThread,pbQueued) )
+ ( (This)->lpVtbl -> HasQueuedCallbacks(This,pThread,pbQueued) )
#define ICorDebugController_EnumerateThreads(This,ppThreads) \
- ( (This)->lpVtbl -> EnumerateThreads(This,ppThreads) )
+ ( (This)->lpVtbl -> EnumerateThreads(This,ppThreads) )
#define ICorDebugController_SetAllThreadsDebugState(This,state,pExceptThisThread) \
- ( (This)->lpVtbl -> SetAllThreadsDebugState(This,state,pExceptThisThread) )
+ ( (This)->lpVtbl -> SetAllThreadsDebugState(This,state,pExceptThisThread) )
#define ICorDebugController_Detach(This) \
- ( (This)->lpVtbl -> Detach(This) )
+ ( (This)->lpVtbl -> Detach(This) )
#define ICorDebugController_Terminate(This,exitCode) \
- ( (This)->lpVtbl -> Terminate(This,exitCode) )
+ ( (This)->lpVtbl -> Terminate(This,exitCode) )
#define ICorDebugController_CanCommitChanges(This,cSnapshots,pSnapshots,pError) \
- ( (This)->lpVtbl -> CanCommitChanges(This,cSnapshots,pSnapshots,pError) )
+ ( (This)->lpVtbl -> CanCommitChanges(This,cSnapshots,pSnapshots,pError) )
#define ICorDebugController_CommitChanges(This,cSnapshots,pSnapshots,pError) \
- ( (This)->lpVtbl -> CommitChanges(This,cSnapshots,pSnapshots,pError) )
+ ( (This)->lpVtbl -> CommitChanges(This,cSnapshots,pSnapshots,pError) )
#endif /* COBJMACROS */
@@ -5019,10 +5028,10 @@ EXTERN_C const IID IID_ICorDebugController;
/* interface __MIDL_itf_cordebug_0000_0025 */
-/* [local] */
+/* [local] */
#pragma warning(push)
-#pragma warning(disable:28718)
+#pragma warning(disable:28718)
extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0025_v0_0_c_ifspec;
@@ -5032,157 +5041,157 @@ extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0025_v0_0_s_ifspec;
#define __ICorDebugAppDomain_INTERFACE_DEFINED__
/* interface ICorDebugAppDomain */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugAppDomain;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("3d6f5f63-7538-11d3-8d5b-00104b35e7ef")
ICorDebugAppDomain : public ICorDebugController
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetProcess(
+ virtual HRESULT STDMETHODCALLTYPE GetProcess(
/* [out] */ ICorDebugProcess **ppProcess) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE EnumerateAssemblies(
+
+ virtual HRESULT STDMETHODCALLTYPE EnumerateAssemblies(
/* [out] */ ICorDebugAssemblyEnum **ppAssemblies) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetModuleFromMetaDataInterface(
+
+ virtual HRESULT STDMETHODCALLTYPE GetModuleFromMetaDataInterface(
/* [in] */ IUnknown *pIMetaData,
/* [out] */ ICorDebugModule **ppModule) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE EnumerateBreakpoints(
+
+ virtual HRESULT STDMETHODCALLTYPE EnumerateBreakpoints(
/* [out] */ ICorDebugBreakpointEnum **ppBreakpoints) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE EnumerateSteppers(
+
+ virtual HRESULT STDMETHODCALLTYPE EnumerateSteppers(
/* [out] */ ICorDebugStepperEnum **ppSteppers) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE IsAttached(
+
+ virtual HRESULT STDMETHODCALLTYPE IsAttached(
/* [out] */ BOOL *pbAttached) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetName(
+
+ virtual HRESULT STDMETHODCALLTYPE GetName(
/* [in] */ ULONG32 cchName,
/* [out] */ ULONG32 *pcchName,
/* [length_is][size_is][out] */ WCHAR szName[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetObject(
+
+ virtual HRESULT STDMETHODCALLTYPE GetObject(
/* [out] */ ICorDebugValue **ppObject) = 0;
-
+
virtual HRESULT STDMETHODCALLTYPE Attach( void) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetID(
+
+ virtual HRESULT STDMETHODCALLTYPE GetID(
/* [out] */ ULONG32 *pId) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugAppDomainVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugAppDomain * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugAppDomain * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugAppDomain * This);
-
- HRESULT ( STDMETHODCALLTYPE *Stop )(
+
+ HRESULT ( STDMETHODCALLTYPE *Stop )(
ICorDebugAppDomain * This,
/* [in] */ DWORD dwTimeoutIgnored);
-
- HRESULT ( STDMETHODCALLTYPE *Continue )(
+
+ HRESULT ( STDMETHODCALLTYPE *Continue )(
ICorDebugAppDomain * This,
/* [in] */ BOOL fIsOutOfBand);
-
- HRESULT ( STDMETHODCALLTYPE *IsRunning )(
+
+ HRESULT ( STDMETHODCALLTYPE *IsRunning )(
ICorDebugAppDomain * This,
/* [out] */ BOOL *pbRunning);
-
- HRESULT ( STDMETHODCALLTYPE *HasQueuedCallbacks )(
+
+ HRESULT ( STDMETHODCALLTYPE *HasQueuedCallbacks )(
ICorDebugAppDomain * This,
/* [in] */ ICorDebugThread *pThread,
/* [out] */ BOOL *pbQueued);
-
- HRESULT ( STDMETHODCALLTYPE *EnumerateThreads )(
+
+ HRESULT ( STDMETHODCALLTYPE *EnumerateThreads )(
ICorDebugAppDomain * This,
/* [out] */ ICorDebugThreadEnum **ppThreads);
-
- HRESULT ( STDMETHODCALLTYPE *SetAllThreadsDebugState )(
+
+ HRESULT ( STDMETHODCALLTYPE *SetAllThreadsDebugState )(
ICorDebugAppDomain * This,
/* [in] */ CorDebugThreadState state,
/* [in] */ ICorDebugThread *pExceptThisThread);
-
- HRESULT ( STDMETHODCALLTYPE *Detach )(
+
+ HRESULT ( STDMETHODCALLTYPE *Detach )(
ICorDebugAppDomain * This);
-
- HRESULT ( STDMETHODCALLTYPE *Terminate )(
+
+ HRESULT ( STDMETHODCALLTYPE *Terminate )(
ICorDebugAppDomain * This,
/* [in] */ UINT exitCode);
-
- HRESULT ( STDMETHODCALLTYPE *CanCommitChanges )(
+
+ HRESULT ( STDMETHODCALLTYPE *CanCommitChanges )(
ICorDebugAppDomain * This,
/* [in] */ ULONG cSnapshots,
/* [size_is][in] */ ICorDebugEditAndContinueSnapshot *pSnapshots[ ],
/* [out] */ ICorDebugErrorInfoEnum **pError);
-
- HRESULT ( STDMETHODCALLTYPE *CommitChanges )(
+
+ HRESULT ( STDMETHODCALLTYPE *CommitChanges )(
ICorDebugAppDomain * This,
/* [in] */ ULONG cSnapshots,
/* [size_is][in] */ ICorDebugEditAndContinueSnapshot *pSnapshots[ ],
/* [out] */ ICorDebugErrorInfoEnum **pError);
-
- HRESULT ( STDMETHODCALLTYPE *GetProcess )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetProcess )(
ICorDebugAppDomain * This,
/* [out] */ ICorDebugProcess **ppProcess);
-
- HRESULT ( STDMETHODCALLTYPE *EnumerateAssemblies )(
+
+ HRESULT ( STDMETHODCALLTYPE *EnumerateAssemblies )(
ICorDebugAppDomain * This,
/* [out] */ ICorDebugAssemblyEnum **ppAssemblies);
-
- HRESULT ( STDMETHODCALLTYPE *GetModuleFromMetaDataInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetModuleFromMetaDataInterface )(
ICorDebugAppDomain * This,
/* [in] */ IUnknown *pIMetaData,
/* [out] */ ICorDebugModule **ppModule);
-
- HRESULT ( STDMETHODCALLTYPE *EnumerateBreakpoints )(
+
+ HRESULT ( STDMETHODCALLTYPE *EnumerateBreakpoints )(
ICorDebugAppDomain * This,
/* [out] */ ICorDebugBreakpointEnum **ppBreakpoints);
-
- HRESULT ( STDMETHODCALLTYPE *EnumerateSteppers )(
+
+ HRESULT ( STDMETHODCALLTYPE *EnumerateSteppers )(
ICorDebugAppDomain * This,
/* [out] */ ICorDebugStepperEnum **ppSteppers);
-
- HRESULT ( STDMETHODCALLTYPE *IsAttached )(
+
+ HRESULT ( STDMETHODCALLTYPE *IsAttached )(
ICorDebugAppDomain * This,
/* [out] */ BOOL *pbAttached);
-
- HRESULT ( STDMETHODCALLTYPE *GetName )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetName )(
ICorDebugAppDomain * This,
/* [in] */ ULONG32 cchName,
/* [out] */ ULONG32 *pcchName,
/* [length_is][size_is][out] */ WCHAR szName[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetObject )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetObject )(
ICorDebugAppDomain * This,
/* [out] */ ICorDebugValue **ppObject);
-
- HRESULT ( STDMETHODCALLTYPE *Attach )(
+
+ HRESULT ( STDMETHODCALLTYPE *Attach )(
ICorDebugAppDomain * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetID )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetID )(
ICorDebugAppDomain * This,
/* [out] */ ULONG32 *pId);
-
+
END_INTERFACE
} ICorDebugAppDomainVtbl;
@@ -5191,81 +5200,81 @@ EXTERN_C const IID IID_ICorDebugAppDomain;
CONST_VTBL struct ICorDebugAppDomainVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugAppDomain_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugAppDomain_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugAppDomain_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugAppDomain_Stop(This,dwTimeoutIgnored) \
- ( (This)->lpVtbl -> Stop(This,dwTimeoutIgnored) )
+ ( (This)->lpVtbl -> Stop(This,dwTimeoutIgnored) )
#define ICorDebugAppDomain_Continue(This,fIsOutOfBand) \
- ( (This)->lpVtbl -> Continue(This,fIsOutOfBand) )
+ ( (This)->lpVtbl -> Continue(This,fIsOutOfBand) )
#define ICorDebugAppDomain_IsRunning(This,pbRunning) \
- ( (This)->lpVtbl -> IsRunning(This,pbRunning) )
+ ( (This)->lpVtbl -> IsRunning(This,pbRunning) )
#define ICorDebugAppDomain_HasQueuedCallbacks(This,pThread,pbQueued) \
- ( (This)->lpVtbl -> HasQueuedCallbacks(This,pThread,pbQueued) )
+ ( (This)->lpVtbl -> HasQueuedCallbacks(This,pThread,pbQueued) )
#define ICorDebugAppDomain_EnumerateThreads(This,ppThreads) \
- ( (This)->lpVtbl -> EnumerateThreads(This,ppThreads) )
+ ( (This)->lpVtbl -> EnumerateThreads(This,ppThreads) )
#define ICorDebugAppDomain_SetAllThreadsDebugState(This,state,pExceptThisThread) \
- ( (This)->lpVtbl -> SetAllThreadsDebugState(This,state,pExceptThisThread) )
+ ( (This)->lpVtbl -> SetAllThreadsDebugState(This,state,pExceptThisThread) )
#define ICorDebugAppDomain_Detach(This) \
- ( (This)->lpVtbl -> Detach(This) )
+ ( (This)->lpVtbl -> Detach(This) )
#define ICorDebugAppDomain_Terminate(This,exitCode) \
- ( (This)->lpVtbl -> Terminate(This,exitCode) )
+ ( (This)->lpVtbl -> Terminate(This,exitCode) )
#define ICorDebugAppDomain_CanCommitChanges(This,cSnapshots,pSnapshots,pError) \
- ( (This)->lpVtbl -> CanCommitChanges(This,cSnapshots,pSnapshots,pError) )
+ ( (This)->lpVtbl -> CanCommitChanges(This,cSnapshots,pSnapshots,pError) )
#define ICorDebugAppDomain_CommitChanges(This,cSnapshots,pSnapshots,pError) \
- ( (This)->lpVtbl -> CommitChanges(This,cSnapshots,pSnapshots,pError) )
+ ( (This)->lpVtbl -> CommitChanges(This,cSnapshots,pSnapshots,pError) )
#define ICorDebugAppDomain_GetProcess(This,ppProcess) \
- ( (This)->lpVtbl -> GetProcess(This,ppProcess) )
+ ( (This)->lpVtbl -> GetProcess(This,ppProcess) )
#define ICorDebugAppDomain_EnumerateAssemblies(This,ppAssemblies) \
- ( (This)->lpVtbl -> EnumerateAssemblies(This,ppAssemblies) )
+ ( (This)->lpVtbl -> EnumerateAssemblies(This,ppAssemblies) )
#define ICorDebugAppDomain_GetModuleFromMetaDataInterface(This,pIMetaData,ppModule) \
- ( (This)->lpVtbl -> GetModuleFromMetaDataInterface(This,pIMetaData,ppModule) )
+ ( (This)->lpVtbl -> GetModuleFromMetaDataInterface(This,pIMetaData,ppModule) )
#define ICorDebugAppDomain_EnumerateBreakpoints(This,ppBreakpoints) \
- ( (This)->lpVtbl -> EnumerateBreakpoints(This,ppBreakpoints) )
+ ( (This)->lpVtbl -> EnumerateBreakpoints(This,ppBreakpoints) )
#define ICorDebugAppDomain_EnumerateSteppers(This,ppSteppers) \
- ( (This)->lpVtbl -> EnumerateSteppers(This,ppSteppers) )
+ ( (This)->lpVtbl -> EnumerateSteppers(This,ppSteppers) )
#define ICorDebugAppDomain_IsAttached(This,pbAttached) \
- ( (This)->lpVtbl -> IsAttached(This,pbAttached) )
+ ( (This)->lpVtbl -> IsAttached(This,pbAttached) )
#define ICorDebugAppDomain_GetName(This,cchName,pcchName,szName) \
- ( (This)->lpVtbl -> GetName(This,cchName,pcchName,szName) )
+ ( (This)->lpVtbl -> GetName(This,cchName,pcchName,szName) )
#define ICorDebugAppDomain_GetObject(This,ppObject) \
- ( (This)->lpVtbl -> GetObject(This,ppObject) )
+ ( (This)->lpVtbl -> GetObject(This,ppObject) )
#define ICorDebugAppDomain_Attach(This) \
- ( (This)->lpVtbl -> Attach(This) )
+ ( (This)->lpVtbl -> Attach(This) )
#define ICorDebugAppDomain_GetID(This,pId) \
- ( (This)->lpVtbl -> GetID(This,pId) )
+ ( (This)->lpVtbl -> GetID(This,pId) )
#endif /* COBJMACROS */
@@ -5279,7 +5288,7 @@ EXTERN_C const IID IID_ICorDebugAppDomain;
/* interface __MIDL_itf_cordebug_0000_0026 */
-/* [local] */
+/* [local] */
#pragma warning(pop)
@@ -5291,62 +5300,62 @@ extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0026_v0_0_s_ifspec;
#define __ICorDebugAppDomain2_INTERFACE_DEFINED__
/* interface ICorDebugAppDomain2 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugAppDomain2;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("096E81D5-ECDA-4202-83F5-C65980A9EF75")
ICorDebugAppDomain2 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetArrayOrPointerType(
+ virtual HRESULT STDMETHODCALLTYPE GetArrayOrPointerType(
/* [in] */ CorElementType elementType,
/* [in] */ ULONG32 nRank,
/* [in] */ ICorDebugType *pTypeArg,
/* [out] */ ICorDebugType **ppType) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetFunctionPointerType(
+
+ virtual HRESULT STDMETHODCALLTYPE GetFunctionPointerType(
/* [in] */ ULONG32 nTypeArgs,
/* [size_is][in] */ ICorDebugType *ppTypeArgs[ ],
/* [out] */ ICorDebugType **ppType) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugAppDomain2Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugAppDomain2 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugAppDomain2 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugAppDomain2 * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetArrayOrPointerType )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetArrayOrPointerType )(
ICorDebugAppDomain2 * This,
/* [in] */ CorElementType elementType,
/* [in] */ ULONG32 nRank,
/* [in] */ ICorDebugType *pTypeArg,
/* [out] */ ICorDebugType **ppType);
-
- HRESULT ( STDMETHODCALLTYPE *GetFunctionPointerType )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetFunctionPointerType )(
ICorDebugAppDomain2 * This,
/* [in] */ ULONG32 nTypeArgs,
/* [size_is][in] */ ICorDebugType *ppTypeArgs[ ],
/* [out] */ ICorDebugType **ppType);
-
+
END_INTERFACE
} ICorDebugAppDomain2Vtbl;
@@ -5355,26 +5364,26 @@ EXTERN_C const IID IID_ICorDebugAppDomain2;
CONST_VTBL struct ICorDebugAppDomain2Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugAppDomain2_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugAppDomain2_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugAppDomain2_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugAppDomain2_GetArrayOrPointerType(This,elementType,nRank,pTypeArg,ppType) \
- ( (This)->lpVtbl -> GetArrayOrPointerType(This,elementType,nRank,pTypeArg,ppType) )
+ ( (This)->lpVtbl -> GetArrayOrPointerType(This,elementType,nRank,pTypeArg,ppType) )
#define ICorDebugAppDomain2_GetFunctionPointerType(This,nTypeArgs,ppTypeArgs,ppType) \
- ( (This)->lpVtbl -> GetFunctionPointerType(This,nTypeArgs,ppTypeArgs,ppType) )
+ ( (This)->lpVtbl -> GetFunctionPointerType(This,nTypeArgs,ppTypeArgs,ppType) )
#endif /* COBJMACROS */
@@ -5391,64 +5400,64 @@ EXTERN_C const IID IID_ICorDebugAppDomain2;
#define __ICorDebugEnum_INTERFACE_DEFINED__
/* interface ICorDebugEnum */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugEnum;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("CC7BCB01-8A68-11d2-983C-0000F808342D")
ICorDebugEnum : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE Skip(
+ virtual HRESULT STDMETHODCALLTYPE Skip(
/* [in] */ ULONG celt) = 0;
-
+
virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE Clone(
+
+ virtual HRESULT STDMETHODCALLTYPE Clone(
/* [out] */ ICorDebugEnum **ppEnum) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetCount(
+
+ virtual HRESULT STDMETHODCALLTYPE GetCount(
/* [out] */ ULONG *pcelt) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugEnumVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugEnum * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugEnum * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Skip )(
+
+ HRESULT ( STDMETHODCALLTYPE *Skip )(
ICorDebugEnum * This,
/* [in] */ ULONG celt);
-
- HRESULT ( STDMETHODCALLTYPE *Reset )(
+
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
ICorDebugEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Clone )(
+
+ HRESULT ( STDMETHODCALLTYPE *Clone )(
ICorDebugEnum * This,
/* [out] */ ICorDebugEnum **ppEnum);
-
- HRESULT ( STDMETHODCALLTYPE *GetCount )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCount )(
ICorDebugEnum * This,
/* [out] */ ULONG *pcelt);
-
+
END_INTERFACE
} ICorDebugEnumVtbl;
@@ -5457,32 +5466,32 @@ EXTERN_C const IID IID_ICorDebugEnum;
CONST_VTBL struct ICorDebugEnumVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugEnum_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugEnum_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugEnum_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugEnum_Skip(This,celt) \
- ( (This)->lpVtbl -> Skip(This,celt) )
+ ( (This)->lpVtbl -> Skip(This,celt) )
#define ICorDebugEnum_Reset(This) \
- ( (This)->lpVtbl -> Reset(This) )
+ ( (This)->lpVtbl -> Reset(This) )
#define ICorDebugEnum_Clone(This,ppEnum) \
- ( (This)->lpVtbl -> Clone(This,ppEnum) )
+ ( (This)->lpVtbl -> Clone(This,ppEnum) )
#define ICorDebugEnum_GetCount(This,pcelt) \
- ( (This)->lpVtbl -> GetCount(This,pcelt) )
+ ( (This)->lpVtbl -> GetCount(This,pcelt) )
#endif /* COBJMACROS */
@@ -5499,64 +5508,64 @@ EXTERN_C const IID IID_ICorDebugEnum;
#define __ICorDebugGuidToTypeEnum_INTERFACE_DEFINED__
/* interface ICorDebugGuidToTypeEnum */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugGuidToTypeEnum;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("6164D242-1015-4BD6-8CBE-D0DBD4B8275A")
ICorDebugGuidToTypeEnum : public ICorDebugEnum
{
public:
- virtual HRESULT STDMETHODCALLTYPE Next(
+ virtual HRESULT STDMETHODCALLTYPE Next(
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ CorDebugGuidToTypeMapping values[ ],
/* [out] */ ULONG *pceltFetched) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugGuidToTypeEnumVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugGuidToTypeEnum * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugGuidToTypeEnum * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugGuidToTypeEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Skip )(
+
+ HRESULT ( STDMETHODCALLTYPE *Skip )(
ICorDebugGuidToTypeEnum * This,
/* [in] */ ULONG celt);
-
- HRESULT ( STDMETHODCALLTYPE *Reset )(
+
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
ICorDebugGuidToTypeEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Clone )(
+
+ HRESULT ( STDMETHODCALLTYPE *Clone )(
ICorDebugGuidToTypeEnum * This,
/* [out] */ ICorDebugEnum **ppEnum);
-
- HRESULT ( STDMETHODCALLTYPE *GetCount )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCount )(
ICorDebugGuidToTypeEnum * This,
/* [out] */ ULONG *pcelt);
-
- HRESULT ( STDMETHODCALLTYPE *Next )(
+
+ HRESULT ( STDMETHODCALLTYPE *Next )(
ICorDebugGuidToTypeEnum * This,
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ CorDebugGuidToTypeMapping values[ ],
/* [out] */ ULONG *pceltFetched);
-
+
END_INTERFACE
} ICorDebugGuidToTypeEnumVtbl;
@@ -5565,36 +5574,36 @@ EXTERN_C const IID IID_ICorDebugGuidToTypeEnum;
CONST_VTBL struct ICorDebugGuidToTypeEnumVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugGuidToTypeEnum_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugGuidToTypeEnum_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugGuidToTypeEnum_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugGuidToTypeEnum_Skip(This,celt) \
- ( (This)->lpVtbl -> Skip(This,celt) )
+ ( (This)->lpVtbl -> Skip(This,celt) )
#define ICorDebugGuidToTypeEnum_Reset(This) \
- ( (This)->lpVtbl -> Reset(This) )
+ ( (This)->lpVtbl -> Reset(This) )
#define ICorDebugGuidToTypeEnum_Clone(This,ppEnum) \
- ( (This)->lpVtbl -> Clone(This,ppEnum) )
+ ( (This)->lpVtbl -> Clone(This,ppEnum) )
#define ICorDebugGuidToTypeEnum_GetCount(This,pcelt) \
- ( (This)->lpVtbl -> GetCount(This,pcelt) )
+ ( (This)->lpVtbl -> GetCount(This,pcelt) )
#define ICorDebugGuidToTypeEnum_Next(This,celt,values,pceltFetched) \
- ( (This)->lpVtbl -> Next(This,celt,values,pceltFetched) )
+ ( (This)->lpVtbl -> Next(This,celt,values,pceltFetched) )
#endif /* COBJMACROS */
@@ -5611,56 +5620,56 @@ EXTERN_C const IID IID_ICorDebugGuidToTypeEnum;
#define __ICorDebugAppDomain3_INTERFACE_DEFINED__
/* interface ICorDebugAppDomain3 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugAppDomain3;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("8CB96A16-B588-42E2-B71C-DD849FC2ECCC")
ICorDebugAppDomain3 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetCachedWinRTTypesForIIDs(
+ virtual HRESULT STDMETHODCALLTYPE GetCachedWinRTTypesForIIDs(
/* [in] */ ULONG32 cReqTypes,
/* [size_is][in] */ GUID *iidsToResolve,
/* [out] */ ICorDebugTypeEnum **ppTypesEnum) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetCachedWinRTTypes(
+
+ virtual HRESULT STDMETHODCALLTYPE GetCachedWinRTTypes(
/* [out] */ ICorDebugGuidToTypeEnum **ppGuidToTypeEnum) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugAppDomain3Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugAppDomain3 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugAppDomain3 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugAppDomain3 * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetCachedWinRTTypesForIIDs )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCachedWinRTTypesForIIDs )(
ICorDebugAppDomain3 * This,
/* [in] */ ULONG32 cReqTypes,
/* [size_is][in] */ GUID *iidsToResolve,
/* [out] */ ICorDebugTypeEnum **ppTypesEnum);
-
- HRESULT ( STDMETHODCALLTYPE *GetCachedWinRTTypes )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCachedWinRTTypes )(
ICorDebugAppDomain3 * This,
/* [out] */ ICorDebugGuidToTypeEnum **ppGuidToTypeEnum);
-
+
END_INTERFACE
} ICorDebugAppDomain3Vtbl;
@@ -5669,26 +5678,26 @@ EXTERN_C const IID IID_ICorDebugAppDomain3;
CONST_VTBL struct ICorDebugAppDomain3Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugAppDomain3_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugAppDomain3_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugAppDomain3_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugAppDomain3_GetCachedWinRTTypesForIIDs(This,cReqTypes,iidsToResolve,ppTypesEnum) \
- ( (This)->lpVtbl -> GetCachedWinRTTypesForIIDs(This,cReqTypes,iidsToResolve,ppTypesEnum) )
+ ( (This)->lpVtbl -> GetCachedWinRTTypesForIIDs(This,cReqTypes,iidsToResolve,ppTypesEnum) )
#define ICorDebugAppDomain3_GetCachedWinRTTypes(This,ppGuidToTypeEnum) \
- ( (This)->lpVtbl -> GetCachedWinRTTypes(This,ppGuidToTypeEnum) )
+ ( (This)->lpVtbl -> GetCachedWinRTTypes(This,ppGuidToTypeEnum) )
#endif /* COBJMACROS */
@@ -5705,47 +5714,47 @@ EXTERN_C const IID IID_ICorDebugAppDomain3;
#define __ICorDebugAppDomain4_INTERFACE_DEFINED__
/* interface ICorDebugAppDomain4 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugAppDomain4;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("FB99CC40-83BE-4724-AB3B-768E796EBAC2")
ICorDebugAppDomain4 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetObjectForCCW(
+ virtual HRESULT STDMETHODCALLTYPE GetObjectForCCW(
/* [in] */ CORDB_ADDRESS ccwPointer,
/* [out] */ ICorDebugValue **ppManagedObject) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugAppDomain4Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugAppDomain4 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugAppDomain4 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugAppDomain4 * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetObjectForCCW )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetObjectForCCW )(
ICorDebugAppDomain4 * This,
/* [in] */ CORDB_ADDRESS ccwPointer,
/* [out] */ ICorDebugValue **ppManagedObject);
-
+
END_INTERFACE
} ICorDebugAppDomain4Vtbl;
@@ -5754,23 +5763,23 @@ EXTERN_C const IID IID_ICorDebugAppDomain4;
CONST_VTBL struct ICorDebugAppDomain4Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugAppDomain4_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugAppDomain4_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugAppDomain4_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugAppDomain4_GetObjectForCCW(This,ccwPointer,ppManagedObject) \
- ( (This)->lpVtbl -> GetObjectForCCW(This,ccwPointer,ppManagedObject) )
+ ( (This)->lpVtbl -> GetObjectForCCW(This,ccwPointer,ppManagedObject) )
#endif /* COBJMACROS */
@@ -5784,10 +5793,10 @@ EXTERN_C const IID IID_ICorDebugAppDomain4;
/* interface __MIDL_itf_cordebug_0000_0030 */
-/* [local] */
+/* [local] */
#pragma warning(push)
-#pragma warning(disable:28718)
+#pragma warning(disable:28718)
extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0030_v0_0_c_ifspec;
@@ -5797,81 +5806,81 @@ extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0030_v0_0_s_ifspec;
#define __ICorDebugAssembly_INTERFACE_DEFINED__
/* interface ICorDebugAssembly */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugAssembly;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("df59507c-d47a-459e-bce2-6427eac8fd06")
ICorDebugAssembly : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetProcess(
+ virtual HRESULT STDMETHODCALLTYPE GetProcess(
/* [out] */ ICorDebugProcess **ppProcess) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetAppDomain(
+
+ virtual HRESULT STDMETHODCALLTYPE GetAppDomain(
/* [out] */ ICorDebugAppDomain **ppAppDomain) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE EnumerateModules(
+
+ virtual HRESULT STDMETHODCALLTYPE EnumerateModules(
/* [out] */ ICorDebugModuleEnum **ppModules) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetCodeBase(
+
+ virtual HRESULT STDMETHODCALLTYPE GetCodeBase(
/* [in] */ ULONG32 cchName,
/* [out] */ ULONG32 *pcchName,
/* [length_is][size_is][out] */ WCHAR szName[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetName(
+
+ virtual HRESULT STDMETHODCALLTYPE GetName(
/* [in] */ ULONG32 cchName,
/* [out] */ ULONG32 *pcchName,
/* [length_is][size_is][out] */ WCHAR szName[ ]) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugAssemblyVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugAssembly * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugAssembly * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugAssembly * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetProcess )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetProcess )(
ICorDebugAssembly * This,
/* [out] */ ICorDebugProcess **ppProcess);
-
- HRESULT ( STDMETHODCALLTYPE *GetAppDomain )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetAppDomain )(
ICorDebugAssembly * This,
/* [out] */ ICorDebugAppDomain **ppAppDomain);
-
- HRESULT ( STDMETHODCALLTYPE *EnumerateModules )(
+
+ HRESULT ( STDMETHODCALLTYPE *EnumerateModules )(
ICorDebugAssembly * This,
/* [out] */ ICorDebugModuleEnum **ppModules);
-
- HRESULT ( STDMETHODCALLTYPE *GetCodeBase )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCodeBase )(
ICorDebugAssembly * This,
/* [in] */ ULONG32 cchName,
/* [out] */ ULONG32 *pcchName,
/* [length_is][size_is][out] */ WCHAR szName[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetName )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetName )(
ICorDebugAssembly * This,
/* [in] */ ULONG32 cchName,
/* [out] */ ULONG32 *pcchName,
/* [length_is][size_is][out] */ WCHAR szName[ ]);
-
+
END_INTERFACE
} ICorDebugAssemblyVtbl;
@@ -5880,35 +5889,35 @@ EXTERN_C const IID IID_ICorDebugAssembly;
CONST_VTBL struct ICorDebugAssemblyVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugAssembly_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugAssembly_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugAssembly_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugAssembly_GetProcess(This,ppProcess) \
- ( (This)->lpVtbl -> GetProcess(This,ppProcess) )
+ ( (This)->lpVtbl -> GetProcess(This,ppProcess) )
#define ICorDebugAssembly_GetAppDomain(This,ppAppDomain) \
- ( (This)->lpVtbl -> GetAppDomain(This,ppAppDomain) )
+ ( (This)->lpVtbl -> GetAppDomain(This,ppAppDomain) )
#define ICorDebugAssembly_EnumerateModules(This,ppModules) \
- ( (This)->lpVtbl -> EnumerateModules(This,ppModules) )
+ ( (This)->lpVtbl -> EnumerateModules(This,ppModules) )
#define ICorDebugAssembly_GetCodeBase(This,cchName,pcchName,szName) \
- ( (This)->lpVtbl -> GetCodeBase(This,cchName,pcchName,szName) )
+ ( (This)->lpVtbl -> GetCodeBase(This,cchName,pcchName,szName) )
#define ICorDebugAssembly_GetName(This,cchName,pcchName,szName) \
- ( (This)->lpVtbl -> GetName(This,cchName,pcchName,szName) )
+ ( (This)->lpVtbl -> GetName(This,cchName,pcchName,szName) )
#endif /* COBJMACROS */
@@ -5922,7 +5931,7 @@ EXTERN_C const IID IID_ICorDebugAssembly;
/* interface __MIDL_itf_cordebug_0000_0031 */
-/* [local] */
+/* [local] */
#pragma warning(pop)
@@ -5934,45 +5943,45 @@ extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0031_v0_0_s_ifspec;
#define __ICorDebugAssembly2_INTERFACE_DEFINED__
/* interface ICorDebugAssembly2 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugAssembly2;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("426d1f9e-6dd4-44c8-aec7-26cdbaf4e398")
ICorDebugAssembly2 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE IsFullyTrusted(
+ virtual HRESULT STDMETHODCALLTYPE IsFullyTrusted(
/* [out] */ BOOL *pbFullyTrusted) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugAssembly2Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugAssembly2 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugAssembly2 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugAssembly2 * This);
-
- HRESULT ( STDMETHODCALLTYPE *IsFullyTrusted )(
+
+ HRESULT ( STDMETHODCALLTYPE *IsFullyTrusted )(
ICorDebugAssembly2 * This,
/* [out] */ BOOL *pbFullyTrusted);
-
+
END_INTERFACE
} ICorDebugAssembly2Vtbl;
@@ -5981,23 +5990,23 @@ EXTERN_C const IID IID_ICorDebugAssembly2;
CONST_VTBL struct ICorDebugAssembly2Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugAssembly2_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugAssembly2_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugAssembly2_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugAssembly2_IsFullyTrusted(This,pbFullyTrusted) \
- ( (This)->lpVtbl -> IsFullyTrusted(This,pbFullyTrusted) )
+ ( (This)->lpVtbl -> IsFullyTrusted(This,pbFullyTrusted) )
#endif /* COBJMACROS */
@@ -6014,52 +6023,52 @@ EXTERN_C const IID IID_ICorDebugAssembly2;
#define __ICorDebugAssembly3_INTERFACE_DEFINED__
/* interface ICorDebugAssembly3 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugAssembly3;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("76361AB2-8C86-4FE9-96F2-F73D8843570A")
ICorDebugAssembly3 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetContainerAssembly(
+ virtual HRESULT STDMETHODCALLTYPE GetContainerAssembly(
ICorDebugAssembly **ppAssembly) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE EnumerateContainedAssemblies(
+
+ virtual HRESULT STDMETHODCALLTYPE EnumerateContainedAssemblies(
ICorDebugAssemblyEnum **ppAssemblies) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugAssembly3Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugAssembly3 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugAssembly3 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugAssembly3 * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetContainerAssembly )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetContainerAssembly )(
ICorDebugAssembly3 * This,
ICorDebugAssembly **ppAssembly);
-
- HRESULT ( STDMETHODCALLTYPE *EnumerateContainedAssemblies )(
+
+ HRESULT ( STDMETHODCALLTYPE *EnumerateContainedAssemblies )(
ICorDebugAssembly3 * This,
ICorDebugAssemblyEnum **ppAssemblies);
-
+
END_INTERFACE
} ICorDebugAssembly3Vtbl;
@@ -6068,26 +6077,26 @@ EXTERN_C const IID IID_ICorDebugAssembly3;
CONST_VTBL struct ICorDebugAssembly3Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugAssembly3_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugAssembly3_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugAssembly3_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugAssembly3_GetContainerAssembly(This,ppAssembly) \
- ( (This)->lpVtbl -> GetContainerAssembly(This,ppAssembly) )
+ ( (This)->lpVtbl -> GetContainerAssembly(This,ppAssembly) )
#define ICorDebugAssembly3_EnumerateContainedAssemblies(This,ppAssemblies) \
- ( (This)->lpVtbl -> EnumerateContainedAssemblies(This,ppAssemblies) )
+ ( (This)->lpVtbl -> EnumerateContainedAssemblies(This,ppAssemblies) )
#endif /* COBJMACROS */
@@ -6101,7 +6110,7 @@ EXTERN_C const IID IID_ICorDebugAssembly3;
/* interface __MIDL_itf_cordebug_0000_0033 */
-/* [local] */
+/* [local] */
#ifndef _DEF_COR_TYPEID_
#define _DEF_COR_TYPEID_
@@ -6128,64 +6137,64 @@ extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0033_v0_0_s_ifspec;
#define __ICorDebugHeapEnum_INTERFACE_DEFINED__
/* interface ICorDebugHeapEnum */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugHeapEnum;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("76D7DAB8-D044-11DF-9A15-7E29DFD72085")
ICorDebugHeapEnum : public ICorDebugEnum
{
public:
- virtual HRESULT STDMETHODCALLTYPE Next(
+ virtual HRESULT STDMETHODCALLTYPE Next(
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ COR_HEAPOBJECT objects[ ],
/* [out] */ ULONG *pceltFetched) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugHeapEnumVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugHeapEnum * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugHeapEnum * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugHeapEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Skip )(
+
+ HRESULT ( STDMETHODCALLTYPE *Skip )(
ICorDebugHeapEnum * This,
/* [in] */ ULONG celt);
-
- HRESULT ( STDMETHODCALLTYPE *Reset )(
+
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
ICorDebugHeapEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Clone )(
+
+ HRESULT ( STDMETHODCALLTYPE *Clone )(
ICorDebugHeapEnum * This,
/* [out] */ ICorDebugEnum **ppEnum);
-
- HRESULT ( STDMETHODCALLTYPE *GetCount )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCount )(
ICorDebugHeapEnum * This,
/* [out] */ ULONG *pcelt);
-
- HRESULT ( STDMETHODCALLTYPE *Next )(
+
+ HRESULT ( STDMETHODCALLTYPE *Next )(
ICorDebugHeapEnum * This,
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ COR_HEAPOBJECT objects[ ],
/* [out] */ ULONG *pceltFetched);
-
+
END_INTERFACE
} ICorDebugHeapEnumVtbl;
@@ -6194,36 +6203,36 @@ EXTERN_C const IID IID_ICorDebugHeapEnum;
CONST_VTBL struct ICorDebugHeapEnumVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugHeapEnum_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugHeapEnum_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugHeapEnum_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugHeapEnum_Skip(This,celt) \
- ( (This)->lpVtbl -> Skip(This,celt) )
+ ( (This)->lpVtbl -> Skip(This,celt) )
#define ICorDebugHeapEnum_Reset(This) \
- ( (This)->lpVtbl -> Reset(This) )
+ ( (This)->lpVtbl -> Reset(This) )
#define ICorDebugHeapEnum_Clone(This,ppEnum) \
- ( (This)->lpVtbl -> Clone(This,ppEnum) )
+ ( (This)->lpVtbl -> Clone(This,ppEnum) )
#define ICorDebugHeapEnum_GetCount(This,pcelt) \
- ( (This)->lpVtbl -> GetCount(This,pcelt) )
+ ( (This)->lpVtbl -> GetCount(This,pcelt) )
#define ICorDebugHeapEnum_Next(This,celt,objects,pceltFetched) \
- ( (This)->lpVtbl -> Next(This,celt,objects,pceltFetched) )
+ ( (This)->lpVtbl -> Next(This,celt,objects,pceltFetched) )
#endif /* COBJMACROS */
@@ -6237,9 +6246,9 @@ EXTERN_C const IID IID_ICorDebugHeapEnum;
/* interface __MIDL_itf_cordebug_0000_0034 */
-/* [local] */
+/* [local] */
-typedef
+typedef
enum CorDebugGenerationTypes
{
CorDebug_Gen0 = 0,
@@ -6257,11 +6266,11 @@ typedef struct _COR_SEGMENT
ULONG heap;
} COR_SEGMENT;
-typedef
+typedef
enum CorDebugGCType
{
CorDebugWorkstationGC = 0,
- CorDebugServerGC = ( CorDebugWorkstationGC + 1 )
+ CorDebugServerGC = ( CorDebugWorkstationGC + 1 )
} CorDebugGCType;
typedef struct _COR_HEAPINFO
@@ -6282,64 +6291,64 @@ extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0034_v0_0_s_ifspec;
#define __ICorDebugHeapSegmentEnum_INTERFACE_DEFINED__
/* interface ICorDebugHeapSegmentEnum */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugHeapSegmentEnum;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("A2FA0F8E-D045-11DF-AC8E-CE2ADFD72085")
ICorDebugHeapSegmentEnum : public ICorDebugEnum
{
public:
- virtual HRESULT STDMETHODCALLTYPE Next(
+ virtual HRESULT STDMETHODCALLTYPE Next(
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ COR_SEGMENT segments[ ],
/* [out] */ ULONG *pceltFetched) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugHeapSegmentEnumVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugHeapSegmentEnum * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugHeapSegmentEnum * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugHeapSegmentEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Skip )(
+
+ HRESULT ( STDMETHODCALLTYPE *Skip )(
ICorDebugHeapSegmentEnum * This,
/* [in] */ ULONG celt);
-
- HRESULT ( STDMETHODCALLTYPE *Reset )(
+
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
ICorDebugHeapSegmentEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Clone )(
+
+ HRESULT ( STDMETHODCALLTYPE *Clone )(
ICorDebugHeapSegmentEnum * This,
/* [out] */ ICorDebugEnum **ppEnum);
-
- HRESULT ( STDMETHODCALLTYPE *GetCount )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCount )(
ICorDebugHeapSegmentEnum * This,
/* [out] */ ULONG *pcelt);
-
- HRESULT ( STDMETHODCALLTYPE *Next )(
+
+ HRESULT ( STDMETHODCALLTYPE *Next )(
ICorDebugHeapSegmentEnum * This,
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ COR_SEGMENT segments[ ],
/* [out] */ ULONG *pceltFetched);
-
+
END_INTERFACE
} ICorDebugHeapSegmentEnumVtbl;
@@ -6348,36 +6357,36 @@ EXTERN_C const IID IID_ICorDebugHeapSegmentEnum;
CONST_VTBL struct ICorDebugHeapSegmentEnumVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugHeapSegmentEnum_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugHeapSegmentEnum_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugHeapSegmentEnum_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugHeapSegmentEnum_Skip(This,celt) \
- ( (This)->lpVtbl -> Skip(This,celt) )
+ ( (This)->lpVtbl -> Skip(This,celt) )
#define ICorDebugHeapSegmentEnum_Reset(This) \
- ( (This)->lpVtbl -> Reset(This) )
+ ( (This)->lpVtbl -> Reset(This) )
#define ICorDebugHeapSegmentEnum_Clone(This,ppEnum) \
- ( (This)->lpVtbl -> Clone(This,ppEnum) )
+ ( (This)->lpVtbl -> Clone(This,ppEnum) )
#define ICorDebugHeapSegmentEnum_GetCount(This,pcelt) \
- ( (This)->lpVtbl -> GetCount(This,pcelt) )
+ ( (This)->lpVtbl -> GetCount(This,pcelt) )
#define ICorDebugHeapSegmentEnum_Next(This,celt,segments,pceltFetched) \
- ( (This)->lpVtbl -> Next(This,celt,segments,pceltFetched) )
+ ( (This)->lpVtbl -> Next(This,celt,segments,pceltFetched) )
#endif /* COBJMACROS */
@@ -6391,9 +6400,9 @@ EXTERN_C const IID IID_ICorDebugHeapSegmentEnum;
/* interface __MIDL_itf_cordebug_0000_0035 */
-/* [local] */
+/* [local] */
-typedef
+typedef
enum CorGCReferenceType
{
CorHandleStrong = ( 1 << 0 ) ,
@@ -6434,64 +6443,64 @@ extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0035_v0_0_s_ifspec;
#define __ICorDebugGCReferenceEnum_INTERFACE_DEFINED__
/* interface ICorDebugGCReferenceEnum */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugGCReferenceEnum;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("7F3C24D3-7E1D-4245-AC3A-F72F8859C80C")
ICorDebugGCReferenceEnum : public ICorDebugEnum
{
public:
- virtual HRESULT STDMETHODCALLTYPE Next(
+ virtual HRESULT STDMETHODCALLTYPE Next(
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ COR_GC_REFERENCE roots[ ],
/* [out] */ ULONG *pceltFetched) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugGCReferenceEnumVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugGCReferenceEnum * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugGCReferenceEnum * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugGCReferenceEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Skip )(
+
+ HRESULT ( STDMETHODCALLTYPE *Skip )(
ICorDebugGCReferenceEnum * This,
/* [in] */ ULONG celt);
-
- HRESULT ( STDMETHODCALLTYPE *Reset )(
+
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
ICorDebugGCReferenceEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Clone )(
+
+ HRESULT ( STDMETHODCALLTYPE *Clone )(
ICorDebugGCReferenceEnum * This,
/* [out] */ ICorDebugEnum **ppEnum);
-
- HRESULT ( STDMETHODCALLTYPE *GetCount )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCount )(
ICorDebugGCReferenceEnum * This,
/* [out] */ ULONG *pcelt);
-
- HRESULT ( STDMETHODCALLTYPE *Next )(
+
+ HRESULT ( STDMETHODCALLTYPE *Next )(
ICorDebugGCReferenceEnum * This,
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ COR_GC_REFERENCE roots[ ],
/* [out] */ ULONG *pceltFetched);
-
+
END_INTERFACE
} ICorDebugGCReferenceEnumVtbl;
@@ -6500,36 +6509,36 @@ EXTERN_C const IID IID_ICorDebugGCReferenceEnum;
CONST_VTBL struct ICorDebugGCReferenceEnumVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugGCReferenceEnum_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugGCReferenceEnum_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugGCReferenceEnum_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugGCReferenceEnum_Skip(This,celt) \
- ( (This)->lpVtbl -> Skip(This,celt) )
+ ( (This)->lpVtbl -> Skip(This,celt) )
#define ICorDebugGCReferenceEnum_Reset(This) \
- ( (This)->lpVtbl -> Reset(This) )
+ ( (This)->lpVtbl -> Reset(This) )
#define ICorDebugGCReferenceEnum_Clone(This,ppEnum) \
- ( (This)->lpVtbl -> Clone(This,ppEnum) )
+ ( (This)->lpVtbl -> Clone(This,ppEnum) )
#define ICorDebugGCReferenceEnum_GetCount(This,pcelt) \
- ( (This)->lpVtbl -> GetCount(This,pcelt) )
+ ( (This)->lpVtbl -> GetCount(This,pcelt) )
#define ICorDebugGCReferenceEnum_Next(This,celt,roots,pceltFetched) \
- ( (This)->lpVtbl -> Next(This,celt,roots,pceltFetched) )
+ ( (This)->lpVtbl -> Next(This,celt,roots,pceltFetched) )
#endif /* COBJMACROS */
@@ -6543,7 +6552,7 @@ EXTERN_C const IID IID_ICorDebugGCReferenceEnum;
/* interface __MIDL_itf_cordebug_0000_0036 */
-/* [local] */
+/* [local] */
#ifndef _DEF_COR_ARRAY_LAYOUT_
#define _DEF_COR_ARRAY_LAYOUT_
@@ -6584,7 +6593,7 @@ typedef struct COR_FIELD
#endif // _DEF_COR_FIELD_
#pragma warning(push)
-#pragma warning(disable:28718)
+#pragma warning(disable:28718)
extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0036_v0_0_c_ifspec;
@@ -6594,234 +6603,234 @@ extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0036_v0_0_s_ifspec;
#define __ICorDebugProcess_INTERFACE_DEFINED__
/* interface ICorDebugProcess */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugProcess;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("3d6f5f64-7538-11d3-8d5b-00104b35e7ef")
ICorDebugProcess : public ICorDebugController
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetID(
+ virtual HRESULT STDMETHODCALLTYPE GetID(
/* [out] */ DWORD *pdwProcessId) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetHandle(
+
+ virtual HRESULT STDMETHODCALLTYPE GetHandle(
/* [out] */ HPROCESS *phProcessHandle) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetThread(
+
+ virtual HRESULT STDMETHODCALLTYPE GetThread(
/* [in] */ DWORD dwThreadId,
/* [out] */ ICorDebugThread **ppThread) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE EnumerateObjects(
+
+ virtual HRESULT STDMETHODCALLTYPE EnumerateObjects(
/* [out] */ ICorDebugObjectEnum **ppObjects) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE IsTransitionStub(
+
+ virtual HRESULT STDMETHODCALLTYPE IsTransitionStub(
/* [in] */ CORDB_ADDRESS address,
/* [out] */ BOOL *pbTransitionStub) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE IsOSSuspended(
+
+ virtual HRESULT STDMETHODCALLTYPE IsOSSuspended(
/* [in] */ DWORD threadID,
/* [out] */ BOOL *pbSuspended) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetThreadContext(
+
+ virtual HRESULT STDMETHODCALLTYPE GetThreadContext(
/* [in] */ DWORD threadID,
/* [in] */ ULONG32 contextSize,
/* [size_is][length_is][out][in] */ BYTE context[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE SetThreadContext(
+
+ virtual HRESULT STDMETHODCALLTYPE SetThreadContext(
/* [in] */ DWORD threadID,
/* [in] */ ULONG32 contextSize,
/* [size_is][length_is][in] */ BYTE context[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE ReadMemory(
+
+ virtual HRESULT STDMETHODCALLTYPE ReadMemory(
/* [in] */ CORDB_ADDRESS address,
/* [in] */ DWORD size,
/* [length_is][size_is][out] */ BYTE buffer[ ],
/* [out] */ SIZE_T *read) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE WriteMemory(
+
+ virtual HRESULT STDMETHODCALLTYPE WriteMemory(
/* [in] */ CORDB_ADDRESS address,
/* [in] */ DWORD size,
/* [size_is][in] */ BYTE buffer[ ],
/* [out] */ SIZE_T *written) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE ClearCurrentException(
+
+ virtual HRESULT STDMETHODCALLTYPE ClearCurrentException(
/* [in] */ DWORD threadID) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE EnableLogMessages(
+
+ virtual HRESULT STDMETHODCALLTYPE EnableLogMessages(
/* [in] */ BOOL fOnOff) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE ModifyLogSwitch(
- /* [annotation][in] */
+
+ virtual HRESULT STDMETHODCALLTYPE ModifyLogSwitch(
+ /* [annotation][in] */
_In_ WCHAR *pLogSwitchName,
/* [in] */ LONG lLevel) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE EnumerateAppDomains(
+
+ virtual HRESULT STDMETHODCALLTYPE EnumerateAppDomains(
/* [out] */ ICorDebugAppDomainEnum **ppAppDomains) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetObject(
+
+ virtual HRESULT STDMETHODCALLTYPE GetObject(
/* [out] */ ICorDebugValue **ppObject) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE ThreadForFiberCookie(
+
+ virtual HRESULT STDMETHODCALLTYPE ThreadForFiberCookie(
/* [in] */ DWORD fiberCookie,
/* [out] */ ICorDebugThread **ppThread) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetHelperThreadID(
+
+ virtual HRESULT STDMETHODCALLTYPE GetHelperThreadID(
/* [out] */ DWORD *pThreadID) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugProcessVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugProcess * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugProcess * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugProcess * This);
-
- HRESULT ( STDMETHODCALLTYPE *Stop )(
+
+ HRESULT ( STDMETHODCALLTYPE *Stop )(
ICorDebugProcess * This,
/* [in] */ DWORD dwTimeoutIgnored);
-
- HRESULT ( STDMETHODCALLTYPE *Continue )(
+
+ HRESULT ( STDMETHODCALLTYPE *Continue )(
ICorDebugProcess * This,
/* [in] */ BOOL fIsOutOfBand);
-
- HRESULT ( STDMETHODCALLTYPE *IsRunning )(
+
+ HRESULT ( STDMETHODCALLTYPE *IsRunning )(
ICorDebugProcess * This,
/* [out] */ BOOL *pbRunning);
-
- HRESULT ( STDMETHODCALLTYPE *HasQueuedCallbacks )(
+
+ HRESULT ( STDMETHODCALLTYPE *HasQueuedCallbacks )(
ICorDebugProcess * This,
/* [in] */ ICorDebugThread *pThread,
/* [out] */ BOOL *pbQueued);
-
- HRESULT ( STDMETHODCALLTYPE *EnumerateThreads )(
+
+ HRESULT ( STDMETHODCALLTYPE *EnumerateThreads )(
ICorDebugProcess * This,
/* [out] */ ICorDebugThreadEnum **ppThreads);
-
- HRESULT ( STDMETHODCALLTYPE *SetAllThreadsDebugState )(
+
+ HRESULT ( STDMETHODCALLTYPE *SetAllThreadsDebugState )(
ICorDebugProcess * This,
/* [in] */ CorDebugThreadState state,
/* [in] */ ICorDebugThread *pExceptThisThread);
-
- HRESULT ( STDMETHODCALLTYPE *Detach )(
+
+ HRESULT ( STDMETHODCALLTYPE *Detach )(
ICorDebugProcess * This);
-
- HRESULT ( STDMETHODCALLTYPE *Terminate )(
+
+ HRESULT ( STDMETHODCALLTYPE *Terminate )(
ICorDebugProcess * This,
/* [in] */ UINT exitCode);
-
- HRESULT ( STDMETHODCALLTYPE *CanCommitChanges )(
+
+ HRESULT ( STDMETHODCALLTYPE *CanCommitChanges )(
ICorDebugProcess * This,
/* [in] */ ULONG cSnapshots,
/* [size_is][in] */ ICorDebugEditAndContinueSnapshot *pSnapshots[ ],
/* [out] */ ICorDebugErrorInfoEnum **pError);
-
- HRESULT ( STDMETHODCALLTYPE *CommitChanges )(
+
+ HRESULT ( STDMETHODCALLTYPE *CommitChanges )(
ICorDebugProcess * This,
/* [in] */ ULONG cSnapshots,
/* [size_is][in] */ ICorDebugEditAndContinueSnapshot *pSnapshots[ ],
/* [out] */ ICorDebugErrorInfoEnum **pError);
-
- HRESULT ( STDMETHODCALLTYPE *GetID )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetID )(
ICorDebugProcess * This,
/* [out] */ DWORD *pdwProcessId);
-
- HRESULT ( STDMETHODCALLTYPE *GetHandle )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetHandle )(
ICorDebugProcess * This,
/* [out] */ HPROCESS *phProcessHandle);
-
- HRESULT ( STDMETHODCALLTYPE *GetThread )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetThread )(
ICorDebugProcess * This,
/* [in] */ DWORD dwThreadId,
/* [out] */ ICorDebugThread **ppThread);
-
- HRESULT ( STDMETHODCALLTYPE *EnumerateObjects )(
+
+ HRESULT ( STDMETHODCALLTYPE *EnumerateObjects )(
ICorDebugProcess * This,
/* [out] */ ICorDebugObjectEnum **ppObjects);
-
- HRESULT ( STDMETHODCALLTYPE *IsTransitionStub )(
+
+ HRESULT ( STDMETHODCALLTYPE *IsTransitionStub )(
ICorDebugProcess * This,
/* [in] */ CORDB_ADDRESS address,
/* [out] */ BOOL *pbTransitionStub);
-
- HRESULT ( STDMETHODCALLTYPE *IsOSSuspended )(
+
+ HRESULT ( STDMETHODCALLTYPE *IsOSSuspended )(
ICorDebugProcess * This,
/* [in] */ DWORD threadID,
/* [out] */ BOOL *pbSuspended);
-
- HRESULT ( STDMETHODCALLTYPE *GetThreadContext )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetThreadContext )(
ICorDebugProcess * This,
/* [in] */ DWORD threadID,
/* [in] */ ULONG32 contextSize,
/* [size_is][length_is][out][in] */ BYTE context[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *SetThreadContext )(
+
+ HRESULT ( STDMETHODCALLTYPE *SetThreadContext )(
ICorDebugProcess * This,
/* [in] */ DWORD threadID,
/* [in] */ ULONG32 contextSize,
/* [size_is][length_is][in] */ BYTE context[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *ReadMemory )(
+
+ HRESULT ( STDMETHODCALLTYPE *ReadMemory )(
ICorDebugProcess * This,
/* [in] */ CORDB_ADDRESS address,
/* [in] */ DWORD size,
/* [length_is][size_is][out] */ BYTE buffer[ ],
/* [out] */ SIZE_T *read);
-
- HRESULT ( STDMETHODCALLTYPE *WriteMemory )(
+
+ HRESULT ( STDMETHODCALLTYPE *WriteMemory )(
ICorDebugProcess * This,
/* [in] */ CORDB_ADDRESS address,
/* [in] */ DWORD size,
/* [size_is][in] */ BYTE buffer[ ],
/* [out] */ SIZE_T *written);
-
- HRESULT ( STDMETHODCALLTYPE *ClearCurrentException )(
+
+ HRESULT ( STDMETHODCALLTYPE *ClearCurrentException )(
ICorDebugProcess * This,
/* [in] */ DWORD threadID);
-
- HRESULT ( STDMETHODCALLTYPE *EnableLogMessages )(
+
+ HRESULT ( STDMETHODCALLTYPE *EnableLogMessages )(
ICorDebugProcess * This,
/* [in] */ BOOL fOnOff);
-
- HRESULT ( STDMETHODCALLTYPE *ModifyLogSwitch )(
+
+ HRESULT ( STDMETHODCALLTYPE *ModifyLogSwitch )(
ICorDebugProcess * This,
- /* [annotation][in] */
+ /* [annotation][in] */
_In_ WCHAR *pLogSwitchName,
/* [in] */ LONG lLevel);
-
- HRESULT ( STDMETHODCALLTYPE *EnumerateAppDomains )(
+
+ HRESULT ( STDMETHODCALLTYPE *EnumerateAppDomains )(
ICorDebugProcess * This,
/* [out] */ ICorDebugAppDomainEnum **ppAppDomains);
-
- HRESULT ( STDMETHODCALLTYPE *GetObject )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetObject )(
ICorDebugProcess * This,
/* [out] */ ICorDebugValue **ppObject);
-
- HRESULT ( STDMETHODCALLTYPE *ThreadForFiberCookie )(
+
+ HRESULT ( STDMETHODCALLTYPE *ThreadForFiberCookie )(
ICorDebugProcess * This,
/* [in] */ DWORD fiberCookie,
/* [out] */ ICorDebugThread **ppThread);
-
- HRESULT ( STDMETHODCALLTYPE *GetHelperThreadID )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetHelperThreadID )(
ICorDebugProcess * This,
/* [out] */ DWORD *pThreadID);
-
+
END_INTERFACE
} ICorDebugProcessVtbl;
@@ -6830,102 +6839,102 @@ EXTERN_C const IID IID_ICorDebugProcess;
CONST_VTBL struct ICorDebugProcessVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugProcess_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugProcess_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugProcess_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugProcess_Stop(This,dwTimeoutIgnored) \
- ( (This)->lpVtbl -> Stop(This,dwTimeoutIgnored) )
+ ( (This)->lpVtbl -> Stop(This,dwTimeoutIgnored) )
#define ICorDebugProcess_Continue(This,fIsOutOfBand) \
- ( (This)->lpVtbl -> Continue(This,fIsOutOfBand) )
+ ( (This)->lpVtbl -> Continue(This,fIsOutOfBand) )
#define ICorDebugProcess_IsRunning(This,pbRunning) \
- ( (This)->lpVtbl -> IsRunning(This,pbRunning) )
+ ( (This)->lpVtbl -> IsRunning(This,pbRunning) )
#define ICorDebugProcess_HasQueuedCallbacks(This,pThread,pbQueued) \
- ( (This)->lpVtbl -> HasQueuedCallbacks(This,pThread,pbQueued) )
+ ( (This)->lpVtbl -> HasQueuedCallbacks(This,pThread,pbQueued) )
#define ICorDebugProcess_EnumerateThreads(This,ppThreads) \
- ( (This)->lpVtbl -> EnumerateThreads(This,ppThreads) )
+ ( (This)->lpVtbl -> EnumerateThreads(This,ppThreads) )
#define ICorDebugProcess_SetAllThreadsDebugState(This,state,pExceptThisThread) \
- ( (This)->lpVtbl -> SetAllThreadsDebugState(This,state,pExceptThisThread) )
+ ( (This)->lpVtbl -> SetAllThreadsDebugState(This,state,pExceptThisThread) )
#define ICorDebugProcess_Detach(This) \
- ( (This)->lpVtbl -> Detach(This) )
+ ( (This)->lpVtbl -> Detach(This) )
#define ICorDebugProcess_Terminate(This,exitCode) \
- ( (This)->lpVtbl -> Terminate(This,exitCode) )
+ ( (This)->lpVtbl -> Terminate(This,exitCode) )
#define ICorDebugProcess_CanCommitChanges(This,cSnapshots,pSnapshots,pError) \
- ( (This)->lpVtbl -> CanCommitChanges(This,cSnapshots,pSnapshots,pError) )
+ ( (This)->lpVtbl -> CanCommitChanges(This,cSnapshots,pSnapshots,pError) )
#define ICorDebugProcess_CommitChanges(This,cSnapshots,pSnapshots,pError) \
- ( (This)->lpVtbl -> CommitChanges(This,cSnapshots,pSnapshots,pError) )
+ ( (This)->lpVtbl -> CommitChanges(This,cSnapshots,pSnapshots,pError) )
#define ICorDebugProcess_GetID(This,pdwProcessId) \
- ( (This)->lpVtbl -> GetID(This,pdwProcessId) )
+ ( (This)->lpVtbl -> GetID(This,pdwProcessId) )
#define ICorDebugProcess_GetHandle(This,phProcessHandle) \
- ( (This)->lpVtbl -> GetHandle(This,phProcessHandle) )
+ ( (This)->lpVtbl -> GetHandle(This,phProcessHandle) )
#define ICorDebugProcess_GetThread(This,dwThreadId,ppThread) \
- ( (This)->lpVtbl -> GetThread(This,dwThreadId,ppThread) )
+ ( (This)->lpVtbl -> GetThread(This,dwThreadId,ppThread) )
#define ICorDebugProcess_EnumerateObjects(This,ppObjects) \
- ( (This)->lpVtbl -> EnumerateObjects(This,ppObjects) )
+ ( (This)->lpVtbl -> EnumerateObjects(This,ppObjects) )
#define ICorDebugProcess_IsTransitionStub(This,address,pbTransitionStub) \
- ( (This)->lpVtbl -> IsTransitionStub(This,address,pbTransitionStub) )
+ ( (This)->lpVtbl -> IsTransitionStub(This,address,pbTransitionStub) )
#define ICorDebugProcess_IsOSSuspended(This,threadID,pbSuspended) \
- ( (This)->lpVtbl -> IsOSSuspended(This,threadID,pbSuspended) )
+ ( (This)->lpVtbl -> IsOSSuspended(This,threadID,pbSuspended) )
#define ICorDebugProcess_GetThreadContext(This,threadID,contextSize,context) \
- ( (This)->lpVtbl -> GetThreadContext(This,threadID,contextSize,context) )
+ ( (This)->lpVtbl -> GetThreadContext(This,threadID,contextSize,context) )
#define ICorDebugProcess_SetThreadContext(This,threadID,contextSize,context) \
- ( (This)->lpVtbl -> SetThreadContext(This,threadID,contextSize,context) )
+ ( (This)->lpVtbl -> SetThreadContext(This,threadID,contextSize,context) )
#define ICorDebugProcess_ReadMemory(This,address,size,buffer,read) \
- ( (This)->lpVtbl -> ReadMemory(This,address,size,buffer,read) )
+ ( (This)->lpVtbl -> ReadMemory(This,address,size,buffer,read) )
#define ICorDebugProcess_WriteMemory(This,address,size,buffer,written) \
- ( (This)->lpVtbl -> WriteMemory(This,address,size,buffer,written) )
+ ( (This)->lpVtbl -> WriteMemory(This,address,size,buffer,written) )
#define ICorDebugProcess_ClearCurrentException(This,threadID) \
- ( (This)->lpVtbl -> ClearCurrentException(This,threadID) )
+ ( (This)->lpVtbl -> ClearCurrentException(This,threadID) )
#define ICorDebugProcess_EnableLogMessages(This,fOnOff) \
- ( (This)->lpVtbl -> EnableLogMessages(This,fOnOff) )
+ ( (This)->lpVtbl -> EnableLogMessages(This,fOnOff) )
#define ICorDebugProcess_ModifyLogSwitch(This,pLogSwitchName,lLevel) \
- ( (This)->lpVtbl -> ModifyLogSwitch(This,pLogSwitchName,lLevel) )
+ ( (This)->lpVtbl -> ModifyLogSwitch(This,pLogSwitchName,lLevel) )
#define ICorDebugProcess_EnumerateAppDomains(This,ppAppDomains) \
- ( (This)->lpVtbl -> EnumerateAppDomains(This,ppAppDomains) )
+ ( (This)->lpVtbl -> EnumerateAppDomains(This,ppAppDomains) )
#define ICorDebugProcess_GetObject(This,ppObject) \
- ( (This)->lpVtbl -> GetObject(This,ppObject) )
+ ( (This)->lpVtbl -> GetObject(This,ppObject) )
#define ICorDebugProcess_ThreadForFiberCookie(This,fiberCookie,ppThread) \
- ( (This)->lpVtbl -> ThreadForFiberCookie(This,fiberCookie,ppThread) )
+ ( (This)->lpVtbl -> ThreadForFiberCookie(This,fiberCookie,ppThread) )
#define ICorDebugProcess_GetHelperThreadID(This,pThreadID) \
- ( (This)->lpVtbl -> GetHelperThreadID(This,pThreadID) )
+ ( (This)->lpVtbl -> GetHelperThreadID(This,pThreadID) )
#endif /* COBJMACROS */
@@ -6939,7 +6948,7 @@ EXTERN_C const IID IID_ICorDebugProcess;
/* interface __MIDL_itf_cordebug_0000_0037 */
-/* [local] */
+/* [local] */
#pragma warning(pop)
@@ -6951,97 +6960,97 @@ extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0037_v0_0_s_ifspec;
#define __ICorDebugProcess2_INTERFACE_DEFINED__
/* interface ICorDebugProcess2 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugProcess2;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("AD1B3588-0EF0-4744-A496-AA09A9F80371")
ICorDebugProcess2 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetThreadForTaskID(
+ virtual HRESULT STDMETHODCALLTYPE GetThreadForTaskID(
/* [in] */ TASKID taskid,
/* [out] */ ICorDebugThread2 **ppThread) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetVersion(
+
+ virtual HRESULT STDMETHODCALLTYPE GetVersion(
/* [out] */ COR_VERSION *version) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE SetUnmanagedBreakpoint(
+
+ virtual HRESULT STDMETHODCALLTYPE SetUnmanagedBreakpoint(
/* [in] */ CORDB_ADDRESS address,
/* [in] */ ULONG32 bufsize,
/* [length_is][size_is][out] */ BYTE buffer[ ],
/* [out] */ ULONG32 *bufLen) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE ClearUnmanagedBreakpoint(
+
+ virtual HRESULT STDMETHODCALLTYPE ClearUnmanagedBreakpoint(
/* [in] */ CORDB_ADDRESS address) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE SetDesiredNGENCompilerFlags(
+
+ virtual HRESULT STDMETHODCALLTYPE SetDesiredNGENCompilerFlags(
/* [in] */ DWORD pdwFlags) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetDesiredNGENCompilerFlags(
+
+ virtual HRESULT STDMETHODCALLTYPE GetDesiredNGENCompilerFlags(
/* [out] */ DWORD *pdwFlags) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetReferenceValueFromGCHandle(
+
+ virtual HRESULT STDMETHODCALLTYPE GetReferenceValueFromGCHandle(
/* [in] */ UINT_PTR handle,
/* [out] */ ICorDebugReferenceValue **pOutValue) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugProcess2Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugProcess2 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugProcess2 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugProcess2 * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetThreadForTaskID )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetThreadForTaskID )(
ICorDebugProcess2 * This,
/* [in] */ TASKID taskid,
/* [out] */ ICorDebugThread2 **ppThread);
-
- HRESULT ( STDMETHODCALLTYPE *GetVersion )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetVersion )(
ICorDebugProcess2 * This,
/* [out] */ COR_VERSION *version);
-
- HRESULT ( STDMETHODCALLTYPE *SetUnmanagedBreakpoint )(
+
+ HRESULT ( STDMETHODCALLTYPE *SetUnmanagedBreakpoint )(
ICorDebugProcess2 * This,
/* [in] */ CORDB_ADDRESS address,
/* [in] */ ULONG32 bufsize,
/* [length_is][size_is][out] */ BYTE buffer[ ],
/* [out] */ ULONG32 *bufLen);
-
- HRESULT ( STDMETHODCALLTYPE *ClearUnmanagedBreakpoint )(
+
+ HRESULT ( STDMETHODCALLTYPE *ClearUnmanagedBreakpoint )(
ICorDebugProcess2 * This,
/* [in] */ CORDB_ADDRESS address);
-
- HRESULT ( STDMETHODCALLTYPE *SetDesiredNGENCompilerFlags )(
+
+ HRESULT ( STDMETHODCALLTYPE *SetDesiredNGENCompilerFlags )(
ICorDebugProcess2 * This,
/* [in] */ DWORD pdwFlags);
-
- HRESULT ( STDMETHODCALLTYPE *GetDesiredNGENCompilerFlags )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetDesiredNGENCompilerFlags )(
ICorDebugProcess2 * This,
/* [out] */ DWORD *pdwFlags);
-
- HRESULT ( STDMETHODCALLTYPE *GetReferenceValueFromGCHandle )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetReferenceValueFromGCHandle )(
ICorDebugProcess2 * This,
/* [in] */ UINT_PTR handle,
/* [out] */ ICorDebugReferenceValue **pOutValue);
-
+
END_INTERFACE
} ICorDebugProcess2Vtbl;
@@ -7050,41 +7059,41 @@ EXTERN_C const IID IID_ICorDebugProcess2;
CONST_VTBL struct ICorDebugProcess2Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugProcess2_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugProcess2_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugProcess2_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugProcess2_GetThreadForTaskID(This,taskid,ppThread) \
- ( (This)->lpVtbl -> GetThreadForTaskID(This,taskid,ppThread) )
+ ( (This)->lpVtbl -> GetThreadForTaskID(This,taskid,ppThread) )
#define ICorDebugProcess2_GetVersion(This,version) \
- ( (This)->lpVtbl -> GetVersion(This,version) )
+ ( (This)->lpVtbl -> GetVersion(This,version) )
#define ICorDebugProcess2_SetUnmanagedBreakpoint(This,address,bufsize,buffer,bufLen) \
- ( (This)->lpVtbl -> SetUnmanagedBreakpoint(This,address,bufsize,buffer,bufLen) )
+ ( (This)->lpVtbl -> SetUnmanagedBreakpoint(This,address,bufsize,buffer,bufLen) )
#define ICorDebugProcess2_ClearUnmanagedBreakpoint(This,address) \
- ( (This)->lpVtbl -> ClearUnmanagedBreakpoint(This,address) )
+ ( (This)->lpVtbl -> ClearUnmanagedBreakpoint(This,address) )
#define ICorDebugProcess2_SetDesiredNGENCompilerFlags(This,pdwFlags) \
- ( (This)->lpVtbl -> SetDesiredNGENCompilerFlags(This,pdwFlags) )
+ ( (This)->lpVtbl -> SetDesiredNGENCompilerFlags(This,pdwFlags) )
#define ICorDebugProcess2_GetDesiredNGENCompilerFlags(This,pdwFlags) \
- ( (This)->lpVtbl -> GetDesiredNGENCompilerFlags(This,pdwFlags) )
+ ( (This)->lpVtbl -> GetDesiredNGENCompilerFlags(This,pdwFlags) )
#define ICorDebugProcess2_GetReferenceValueFromGCHandle(This,handle,pOutValue) \
- ( (This)->lpVtbl -> GetReferenceValueFromGCHandle(This,handle,pOutValue) )
+ ( (This)->lpVtbl -> GetReferenceValueFromGCHandle(This,handle,pOutValue) )
#endif /* COBJMACROS */
@@ -7101,47 +7110,47 @@ EXTERN_C const IID IID_ICorDebugProcess2;
#define __ICorDebugProcess3_INTERFACE_DEFINED__
/* interface ICorDebugProcess3 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugProcess3;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("2EE06488-C0D4-42B1-B26D-F3795EF606FB")
ICorDebugProcess3 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE SetEnableCustomNotification(
+ virtual HRESULT STDMETHODCALLTYPE SetEnableCustomNotification(
ICorDebugClass *pClass,
BOOL fEnable) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugProcess3Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugProcess3 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugProcess3 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugProcess3 * This);
-
- HRESULT ( STDMETHODCALLTYPE *SetEnableCustomNotification )(
+
+ HRESULT ( STDMETHODCALLTYPE *SetEnableCustomNotification )(
ICorDebugProcess3 * This,
ICorDebugClass *pClass,
BOOL fEnable);
-
+
END_INTERFACE
} ICorDebugProcess3Vtbl;
@@ -7150,23 +7159,23 @@ EXTERN_C const IID IID_ICorDebugProcess3;
CONST_VTBL struct ICorDebugProcess3Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugProcess3_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugProcess3_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugProcess3_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugProcess3_SetEnableCustomNotification(This,pClass,fEnable) \
- ( (This)->lpVtbl -> SetEnableCustomNotification(This,pClass,fEnable) )
+ ( (This)->lpVtbl -> SetEnableCustomNotification(This,pClass,fEnable) )
#endif /* COBJMACROS */
@@ -7183,142 +7192,142 @@ EXTERN_C const IID IID_ICorDebugProcess3;
#define __ICorDebugProcess5_INTERFACE_DEFINED__
/* interface ICorDebugProcess5 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugProcess5;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("21e9d9c0-fcb8-11df-8cff-0800200c9a66")
ICorDebugProcess5 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetGCHeapInformation(
+ virtual HRESULT STDMETHODCALLTYPE GetGCHeapInformation(
/* [out] */ COR_HEAPINFO *pHeapInfo) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE EnumerateHeap(
+
+ virtual HRESULT STDMETHODCALLTYPE EnumerateHeap(
/* [out] */ ICorDebugHeapEnum **ppObjects) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE EnumerateHeapRegions(
+
+ virtual HRESULT STDMETHODCALLTYPE EnumerateHeapRegions(
/* [out] */ ICorDebugHeapSegmentEnum **ppRegions) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetObject(
+
+ virtual HRESULT STDMETHODCALLTYPE GetObject(
/* [in] */ CORDB_ADDRESS addr,
/* [out] */ ICorDebugObjectValue **pObject) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE EnumerateGCReferences(
+
+ virtual HRESULT STDMETHODCALLTYPE EnumerateGCReferences(
/* [in] */ BOOL enumerateWeakReferences,
/* [out] */ ICorDebugGCReferenceEnum **ppEnum) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE EnumerateHandles(
+
+ virtual HRESULT STDMETHODCALLTYPE EnumerateHandles(
/* [in] */ CorGCReferenceType types,
/* [out] */ ICorDebugGCReferenceEnum **ppEnum) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetTypeID(
+
+ virtual HRESULT STDMETHODCALLTYPE GetTypeID(
/* [in] */ CORDB_ADDRESS obj,
/* [out] */ COR_TYPEID *pId) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetTypeForTypeID(
+
+ virtual HRESULT STDMETHODCALLTYPE GetTypeForTypeID(
/* [in] */ COR_TYPEID id,
/* [out] */ ICorDebugType **ppType) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetArrayLayout(
+
+ virtual HRESULT STDMETHODCALLTYPE GetArrayLayout(
/* [in] */ COR_TYPEID id,
/* [out] */ COR_ARRAY_LAYOUT *pLayout) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetTypeLayout(
+
+ virtual HRESULT STDMETHODCALLTYPE GetTypeLayout(
/* [in] */ COR_TYPEID id,
/* [out] */ COR_TYPE_LAYOUT *pLayout) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetTypeFields(
+
+ virtual HRESULT STDMETHODCALLTYPE GetTypeFields(
/* [in] */ COR_TYPEID id,
ULONG32 celt,
COR_FIELD fields[ ],
ULONG32 *pceltNeeded) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE EnableNGENPolicy(
+
+ virtual HRESULT STDMETHODCALLTYPE EnableNGENPolicy(
/* [in] */ CorDebugNGENPolicy ePolicy) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugProcess5Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugProcess5 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugProcess5 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugProcess5 * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetGCHeapInformation )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetGCHeapInformation )(
ICorDebugProcess5 * This,
/* [out] */ COR_HEAPINFO *pHeapInfo);
-
- HRESULT ( STDMETHODCALLTYPE *EnumerateHeap )(
+
+ HRESULT ( STDMETHODCALLTYPE *EnumerateHeap )(
ICorDebugProcess5 * This,
/* [out] */ ICorDebugHeapEnum **ppObjects);
-
- HRESULT ( STDMETHODCALLTYPE *EnumerateHeapRegions )(
+
+ HRESULT ( STDMETHODCALLTYPE *EnumerateHeapRegions )(
ICorDebugProcess5 * This,
/* [out] */ ICorDebugHeapSegmentEnum **ppRegions);
-
- HRESULT ( STDMETHODCALLTYPE *GetObject )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetObject )(
ICorDebugProcess5 * This,
/* [in] */ CORDB_ADDRESS addr,
/* [out] */ ICorDebugObjectValue **pObject);
-
- HRESULT ( STDMETHODCALLTYPE *EnumerateGCReferences )(
+
+ HRESULT ( STDMETHODCALLTYPE *EnumerateGCReferences )(
ICorDebugProcess5 * This,
/* [in] */ BOOL enumerateWeakReferences,
/* [out] */ ICorDebugGCReferenceEnum **ppEnum);
-
- HRESULT ( STDMETHODCALLTYPE *EnumerateHandles )(
+
+ HRESULT ( STDMETHODCALLTYPE *EnumerateHandles )(
ICorDebugProcess5 * This,
/* [in] */ CorGCReferenceType types,
/* [out] */ ICorDebugGCReferenceEnum **ppEnum);
-
- HRESULT ( STDMETHODCALLTYPE *GetTypeID )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeID )(
ICorDebugProcess5 * This,
/* [in] */ CORDB_ADDRESS obj,
/* [out] */ COR_TYPEID *pId);
-
- HRESULT ( STDMETHODCALLTYPE *GetTypeForTypeID )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeForTypeID )(
ICorDebugProcess5 * This,
/* [in] */ COR_TYPEID id,
/* [out] */ ICorDebugType **ppType);
-
- HRESULT ( STDMETHODCALLTYPE *GetArrayLayout )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetArrayLayout )(
ICorDebugProcess5 * This,
/* [in] */ COR_TYPEID id,
/* [out] */ COR_ARRAY_LAYOUT *pLayout);
-
- HRESULT ( STDMETHODCALLTYPE *GetTypeLayout )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeLayout )(
ICorDebugProcess5 * This,
/* [in] */ COR_TYPEID id,
/* [out] */ COR_TYPE_LAYOUT *pLayout);
-
- HRESULT ( STDMETHODCALLTYPE *GetTypeFields )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeFields )(
ICorDebugProcess5 * This,
/* [in] */ COR_TYPEID id,
ULONG32 celt,
COR_FIELD fields[ ],
ULONG32 *pceltNeeded);
-
- HRESULT ( STDMETHODCALLTYPE *EnableNGENPolicy )(
+
+ HRESULT ( STDMETHODCALLTYPE *EnableNGENPolicy )(
ICorDebugProcess5 * This,
/* [in] */ CorDebugNGENPolicy ePolicy);
-
+
END_INTERFACE
} ICorDebugProcess5Vtbl;
@@ -7327,56 +7336,56 @@ EXTERN_C const IID IID_ICorDebugProcess5;
CONST_VTBL struct ICorDebugProcess5Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugProcess5_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugProcess5_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugProcess5_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugProcess5_GetGCHeapInformation(This,pHeapInfo) \
- ( (This)->lpVtbl -> GetGCHeapInformation(This,pHeapInfo) )
+ ( (This)->lpVtbl -> GetGCHeapInformation(This,pHeapInfo) )
#define ICorDebugProcess5_EnumerateHeap(This,ppObjects) \
- ( (This)->lpVtbl -> EnumerateHeap(This,ppObjects) )
+ ( (This)->lpVtbl -> EnumerateHeap(This,ppObjects) )
#define ICorDebugProcess5_EnumerateHeapRegions(This,ppRegions) \
- ( (This)->lpVtbl -> EnumerateHeapRegions(This,ppRegions) )
+ ( (This)->lpVtbl -> EnumerateHeapRegions(This,ppRegions) )
#define ICorDebugProcess5_GetObject(This,addr,pObject) \
- ( (This)->lpVtbl -> GetObject(This,addr,pObject) )
+ ( (This)->lpVtbl -> GetObject(This,addr,pObject) )
#define ICorDebugProcess5_EnumerateGCReferences(This,enumerateWeakReferences,ppEnum) \
- ( (This)->lpVtbl -> EnumerateGCReferences(This,enumerateWeakReferences,ppEnum) )
+ ( (This)->lpVtbl -> EnumerateGCReferences(This,enumerateWeakReferences,ppEnum) )
#define ICorDebugProcess5_EnumerateHandles(This,types,ppEnum) \
- ( (This)->lpVtbl -> EnumerateHandles(This,types,ppEnum) )
+ ( (This)->lpVtbl -> EnumerateHandles(This,types,ppEnum) )
#define ICorDebugProcess5_GetTypeID(This,obj,pId) \
- ( (This)->lpVtbl -> GetTypeID(This,obj,pId) )
+ ( (This)->lpVtbl -> GetTypeID(This,obj,pId) )
#define ICorDebugProcess5_GetTypeForTypeID(This,id,ppType) \
- ( (This)->lpVtbl -> GetTypeForTypeID(This,id,ppType) )
+ ( (This)->lpVtbl -> GetTypeForTypeID(This,id,ppType) )
#define ICorDebugProcess5_GetArrayLayout(This,id,pLayout) \
- ( (This)->lpVtbl -> GetArrayLayout(This,id,pLayout) )
+ ( (This)->lpVtbl -> GetArrayLayout(This,id,pLayout) )
#define ICorDebugProcess5_GetTypeLayout(This,id,pLayout) \
- ( (This)->lpVtbl -> GetTypeLayout(This,id,pLayout) )
+ ( (This)->lpVtbl -> GetTypeLayout(This,id,pLayout) )
#define ICorDebugProcess5_GetTypeFields(This,id,celt,fields,pceltNeeded) \
- ( (This)->lpVtbl -> GetTypeFields(This,id,celt,fields,pceltNeeded) )
+ ( (This)->lpVtbl -> GetTypeFields(This,id,celt,fields,pceltNeeded) )
#define ICorDebugProcess5_EnableNGENPolicy(This,ePolicy) \
- ( (This)->lpVtbl -> EnableNGENPolicy(This,ePolicy) )
+ ( (This)->lpVtbl -> EnableNGENPolicy(This,ePolicy) )
#endif /* COBJMACROS */
@@ -7390,22 +7399,22 @@ EXTERN_C const IID IID_ICorDebugProcess5;
/* interface __MIDL_itf_cordebug_0000_0040 */
-/* [local] */
+/* [local] */
-typedef
+typedef
enum CorDebugRecordFormat
{
FORMAT_WINDOWS_EXCEPTIONRECORD32 = 1,
FORMAT_WINDOWS_EXCEPTIONRECORD64 = 2
} CorDebugRecordFormat;
-typedef
+typedef
enum CorDebugDecodeEventFlagsWindows
{
IS_FIRST_CHANCE = 1
} CorDebugDecodeEventFlagsWindows;
-typedef
+typedef
enum CorDebugDebugEventKind
{
DEBUG_EVENT_KIND_MODULE_LOADED = 1,
@@ -7416,7 +7425,7 @@ enum CorDebugDebugEventKind
DEBUG_EVENT_KIND_MANAGED_EXCEPTION_UNHANDLED = 6
} CorDebugDebugEventKind;
-typedef
+typedef
enum CorDebugStateChange
{
PROCESS_RUNNING = 0x1,
@@ -7432,52 +7441,52 @@ extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0040_v0_0_s_ifspec;
#define __ICorDebugDebugEvent_INTERFACE_DEFINED__
/* interface ICorDebugDebugEvent */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugDebugEvent;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("41BD395D-DE99-48F1-BF7A-CC0F44A6D281")
ICorDebugDebugEvent : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetEventKind(
+ virtual HRESULT STDMETHODCALLTYPE GetEventKind(
/* [out] */ CorDebugDebugEventKind *pDebugEventKind) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetThread(
+
+ virtual HRESULT STDMETHODCALLTYPE GetThread(
/* [out] */ ICorDebugThread **ppThread) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugDebugEventVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugDebugEvent * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugDebugEvent * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugDebugEvent * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetEventKind )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetEventKind )(
ICorDebugDebugEvent * This,
/* [out] */ CorDebugDebugEventKind *pDebugEventKind);
-
- HRESULT ( STDMETHODCALLTYPE *GetThread )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetThread )(
ICorDebugDebugEvent * This,
/* [out] */ ICorDebugThread **ppThread);
-
+
END_INTERFACE
} ICorDebugDebugEventVtbl;
@@ -7486,26 +7495,26 @@ EXTERN_C const IID IID_ICorDebugDebugEvent;
CONST_VTBL struct ICorDebugDebugEventVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugDebugEvent_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugDebugEvent_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugDebugEvent_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugDebugEvent_GetEventKind(This,pDebugEventKind) \
- ( (This)->lpVtbl -> GetEventKind(This,pDebugEventKind) )
+ ( (This)->lpVtbl -> GetEventKind(This,pDebugEventKind) )
#define ICorDebugDebugEvent_GetThread(This,ppThread) \
- ( (This)->lpVtbl -> GetThread(This,ppThread) )
+ ( (This)->lpVtbl -> GetThread(This,ppThread) )
#endif /* COBJMACROS */
@@ -7519,23 +7528,23 @@ EXTERN_C const IID IID_ICorDebugDebugEvent;
/* interface __MIDL_itf_cordebug_0000_0041 */
-/* [local] */
+/* [local] */
-typedef
+typedef
enum CorDebugCodeInvokeKind
{
CODE_INVOKE_KIND_NONE = 0,
CODE_INVOKE_KIND_RETURN = ( CODE_INVOKE_KIND_NONE + 1 ) ,
- CODE_INVOKE_KIND_TAILCALL = ( CODE_INVOKE_KIND_RETURN + 1 )
+ CODE_INVOKE_KIND_TAILCALL = ( CODE_INVOKE_KIND_RETURN + 1 )
} CorDebugCodeInvokeKind;
-typedef
+typedef
enum CorDebugCodeInvokePurpose
{
CODE_INVOKE_PURPOSE_NONE = 0,
CODE_INVOKE_PURPOSE_NATIVE_TO_MANAGED_TRANSITION = ( CODE_INVOKE_PURPOSE_NONE + 1 ) ,
CODE_INVOKE_PURPOSE_CLASS_INIT = ( CODE_INVOKE_PURPOSE_NATIVE_TO_MANAGED_TRANSITION + 1 ) ,
- CODE_INVOKE_PURPOSE_INTERFACE_DISPATCH = ( CODE_INVOKE_PURPOSE_CLASS_INIT + 1 )
+ CODE_INVOKE_PURPOSE_INTERFACE_DISPATCH = ( CODE_INVOKE_PURPOSE_CLASS_INIT + 1 )
} CorDebugCodeInvokePurpose;
@@ -7547,65 +7556,65 @@ extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0041_v0_0_s_ifspec;
#define __ICorDebugProcess6_INTERFACE_DEFINED__
/* interface ICorDebugProcess6 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugProcess6;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("11588775-7205-4CEB-A41A-93753C3153E9")
ICorDebugProcess6 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE DecodeEvent(
+ virtual HRESULT STDMETHODCALLTYPE DecodeEvent(
/* [size_is][length_is][in] */ const BYTE pRecord[ ],
/* [in] */ DWORD countBytes,
/* [in] */ CorDebugRecordFormat format,
/* [in] */ DWORD dwFlags,
/* [in] */ DWORD dwThreadId,
/* [out] */ ICorDebugDebugEvent **ppEvent) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE ProcessStateChanged(
+
+ virtual HRESULT STDMETHODCALLTYPE ProcessStateChanged(
/* [in] */ CorDebugStateChange change) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetCode(
+
+ virtual HRESULT STDMETHODCALLTYPE GetCode(
/* [in] */ CORDB_ADDRESS codeAddress,
/* [out] */ ICorDebugCode **ppCode) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE EnableVirtualModuleSplitting(
+
+ virtual HRESULT STDMETHODCALLTYPE EnableVirtualModuleSplitting(
BOOL enableSplitting) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE MarkDebuggerAttached(
+
+ virtual HRESULT STDMETHODCALLTYPE MarkDebuggerAttached(
BOOL fIsAttached) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetExportStepInfo(
+
+ virtual HRESULT STDMETHODCALLTYPE GetExportStepInfo(
/* [in] */ LPCWSTR pszExportName,
/* [out] */ CorDebugCodeInvokeKind *pInvokeKind,
/* [out] */ CorDebugCodeInvokePurpose *pInvokePurpose) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugProcess6Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugProcess6 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugProcess6 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugProcess6 * This);
-
- HRESULT ( STDMETHODCALLTYPE *DecodeEvent )(
+
+ HRESULT ( STDMETHODCALLTYPE *DecodeEvent )(
ICorDebugProcess6 * This,
/* [size_is][length_is][in] */ const BYTE pRecord[ ],
/* [in] */ DWORD countBytes,
@@ -7613,30 +7622,30 @@ EXTERN_C const IID IID_ICorDebugProcess6;
/* [in] */ DWORD dwFlags,
/* [in] */ DWORD dwThreadId,
/* [out] */ ICorDebugDebugEvent **ppEvent);
-
- HRESULT ( STDMETHODCALLTYPE *ProcessStateChanged )(
+
+ HRESULT ( STDMETHODCALLTYPE *ProcessStateChanged )(
ICorDebugProcess6 * This,
/* [in] */ CorDebugStateChange change);
-
- HRESULT ( STDMETHODCALLTYPE *GetCode )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCode )(
ICorDebugProcess6 * This,
/* [in] */ CORDB_ADDRESS codeAddress,
/* [out] */ ICorDebugCode **ppCode);
-
- HRESULT ( STDMETHODCALLTYPE *EnableVirtualModuleSplitting )(
+
+ HRESULT ( STDMETHODCALLTYPE *EnableVirtualModuleSplitting )(
ICorDebugProcess6 * This,
BOOL enableSplitting);
-
- HRESULT ( STDMETHODCALLTYPE *MarkDebuggerAttached )(
+
+ HRESULT ( STDMETHODCALLTYPE *MarkDebuggerAttached )(
ICorDebugProcess6 * This,
BOOL fIsAttached);
-
- HRESULT ( STDMETHODCALLTYPE *GetExportStepInfo )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetExportStepInfo )(
ICorDebugProcess6 * This,
/* [in] */ LPCWSTR pszExportName,
/* [out] */ CorDebugCodeInvokeKind *pInvokeKind,
/* [out] */ CorDebugCodeInvokePurpose *pInvokePurpose);
-
+
END_INTERFACE
} ICorDebugProcess6Vtbl;
@@ -7645,38 +7654,38 @@ EXTERN_C const IID IID_ICorDebugProcess6;
CONST_VTBL struct ICorDebugProcess6Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugProcess6_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugProcess6_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugProcess6_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugProcess6_DecodeEvent(This,pRecord,countBytes,format,dwFlags,dwThreadId,ppEvent) \
- ( (This)->lpVtbl -> DecodeEvent(This,pRecord,countBytes,format,dwFlags,dwThreadId,ppEvent) )
+ ( (This)->lpVtbl -> DecodeEvent(This,pRecord,countBytes,format,dwFlags,dwThreadId,ppEvent) )
#define ICorDebugProcess6_ProcessStateChanged(This,change) \
- ( (This)->lpVtbl -> ProcessStateChanged(This,change) )
+ ( (This)->lpVtbl -> ProcessStateChanged(This,change) )
#define ICorDebugProcess6_GetCode(This,codeAddress,ppCode) \
- ( (This)->lpVtbl -> GetCode(This,codeAddress,ppCode) )
+ ( (This)->lpVtbl -> GetCode(This,codeAddress,ppCode) )
#define ICorDebugProcess6_EnableVirtualModuleSplitting(This,enableSplitting) \
- ( (This)->lpVtbl -> EnableVirtualModuleSplitting(This,enableSplitting) )
+ ( (This)->lpVtbl -> EnableVirtualModuleSplitting(This,enableSplitting) )
#define ICorDebugProcess6_MarkDebuggerAttached(This,fIsAttached) \
- ( (This)->lpVtbl -> MarkDebuggerAttached(This,fIsAttached) )
+ ( (This)->lpVtbl -> MarkDebuggerAttached(This,fIsAttached) )
#define ICorDebugProcess6_GetExportStepInfo(This,pszExportName,pInvokeKind,pInvokePurpose) \
- ( (This)->lpVtbl -> GetExportStepInfo(This,pszExportName,pInvokeKind,pInvokePurpose) )
+ ( (This)->lpVtbl -> GetExportStepInfo(This,pszExportName,pInvokeKind,pInvokePurpose) )
#endif /* COBJMACROS */
@@ -7690,13 +7699,13 @@ EXTERN_C const IID IID_ICorDebugProcess6;
/* interface __MIDL_itf_cordebug_0000_0042 */
-/* [local] */
+/* [local] */
-typedef
+typedef
enum WriteableMetadataUpdateMode
{
LegacyCompatPolicy = 0,
- AlwaysShowUpdates = ( LegacyCompatPolicy + 1 )
+ AlwaysShowUpdates = ( LegacyCompatPolicy + 1 )
} WriteableMetadataUpdateMode;
@@ -7708,45 +7717,45 @@ extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0042_v0_0_s_ifspec;
#define __ICorDebugProcess7_INTERFACE_DEFINED__
/* interface ICorDebugProcess7 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugProcess7;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("9B2C54E4-119F-4D6F-B402-527603266D69")
ICorDebugProcess7 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE SetWriteableMetadataUpdateMode(
+ virtual HRESULT STDMETHODCALLTYPE SetWriteableMetadataUpdateMode(
WriteableMetadataUpdateMode flags) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugProcess7Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugProcess7 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugProcess7 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugProcess7 * This);
-
- HRESULT ( STDMETHODCALLTYPE *SetWriteableMetadataUpdateMode )(
+
+ HRESULT ( STDMETHODCALLTYPE *SetWriteableMetadataUpdateMode )(
ICorDebugProcess7 * This,
WriteableMetadataUpdateMode flags);
-
+
END_INTERFACE
} ICorDebugProcess7Vtbl;
@@ -7755,23 +7764,23 @@ EXTERN_C const IID IID_ICorDebugProcess7;
CONST_VTBL struct ICorDebugProcess7Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugProcess7_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugProcess7_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugProcess7_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugProcess7_SetWriteableMetadataUpdateMode(This,flags) \
- ( (This)->lpVtbl -> SetWriteableMetadataUpdateMode(This,flags) )
+ ( (This)->lpVtbl -> SetWriteableMetadataUpdateMode(This,flags) )
#endif /* COBJMACROS */
@@ -7788,45 +7797,45 @@ EXTERN_C const IID IID_ICorDebugProcess7;
#define __ICorDebugProcess8_INTERFACE_DEFINED__
/* interface ICorDebugProcess8 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugProcess8;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("2E6F28C1-85EB-4141-80AD-0A90944B9639")
ICorDebugProcess8 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE EnableExceptionCallbacksOutsideOfMyCode(
+ virtual HRESULT STDMETHODCALLTYPE EnableExceptionCallbacksOutsideOfMyCode(
/* [in] */ BOOL enableExceptionsOutsideOfJMC) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugProcess8Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugProcess8 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugProcess8 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugProcess8 * This);
-
- HRESULT ( STDMETHODCALLTYPE *EnableExceptionCallbacksOutsideOfMyCode )(
+
+ HRESULT ( STDMETHODCALLTYPE *EnableExceptionCallbacksOutsideOfMyCode )(
ICorDebugProcess8 * This,
/* [in] */ BOOL enableExceptionsOutsideOfJMC);
-
+
END_INTERFACE
} ICorDebugProcess8Vtbl;
@@ -7835,23 +7844,23 @@ EXTERN_C const IID IID_ICorDebugProcess8;
CONST_VTBL struct ICorDebugProcess8Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugProcess8_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugProcess8_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugProcess8_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugProcess8_EnableExceptionCallbacksOutsideOfMyCode(This,enableExceptionsOutsideOfJMC) \
- ( (This)->lpVtbl -> EnableExceptionCallbacksOutsideOfMyCode(This,enableExceptionsOutsideOfJMC) )
+ ( (This)->lpVtbl -> EnableExceptionCallbacksOutsideOfMyCode(This,enableExceptionsOutsideOfJMC) )
#endif /* COBJMACROS */
@@ -7868,45 +7877,45 @@ EXTERN_C const IID IID_ICorDebugProcess8;
#define __ICorDebugProcess10_INTERFACE_DEFINED__
/* interface ICorDebugProcess10 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugProcess10;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("8F378F6F-1017-4461-9890-ECF64C54079F")
ICorDebugProcess10 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE EnableGCNotificationEvents(
+ virtual HRESULT STDMETHODCALLTYPE EnableGCNotificationEvents(
BOOL fEnable) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugProcess10Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugProcess10 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugProcess10 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugProcess10 * This);
-
- HRESULT ( STDMETHODCALLTYPE *EnableGCNotificationEvents )(
+
+ HRESULT ( STDMETHODCALLTYPE *EnableGCNotificationEvents )(
ICorDebugProcess10 * This,
BOOL fEnable);
-
+
END_INTERFACE
} ICorDebugProcess10Vtbl;
@@ -7915,23 +7924,23 @@ EXTERN_C const IID IID_ICorDebugProcess10;
CONST_VTBL struct ICorDebugProcess10Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugProcess10_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugProcess10_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugProcess10_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugProcess10_EnableGCNotificationEvents(This,fEnable) \
- ( (This)->lpVtbl -> EnableGCNotificationEvents(This,fEnable) )
+ ( (This)->lpVtbl -> EnableGCNotificationEvents(This,fEnable) )
#endif /* COBJMACROS */
@@ -7945,7 +7954,7 @@ EXTERN_C const IID IID_ICorDebugProcess10;
/* interface __MIDL_itf_cordebug_0000_0045 */
-/* [local] */
+/* [local] */
typedef struct _COR_MEMORY_RANGE
{
@@ -7962,64 +7971,64 @@ extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0045_v0_0_s_ifspec;
#define __ICorDebugMemoryRangeEnum_INTERFACE_DEFINED__
/* interface ICorDebugMemoryRangeEnum */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugMemoryRangeEnum;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("D1A0BCFC-5865-4437-BE3F-36F022951F8A")
ICorDebugMemoryRangeEnum : public ICorDebugEnum
{
public:
- virtual HRESULT STDMETHODCALLTYPE Next(
+ virtual HRESULT STDMETHODCALLTYPE Next(
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ COR_MEMORY_RANGE objects[ ],
/* [out] */ ULONG *pceltFetched) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugMemoryRangeEnumVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugMemoryRangeEnum * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugMemoryRangeEnum * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugMemoryRangeEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Skip )(
+
+ HRESULT ( STDMETHODCALLTYPE *Skip )(
ICorDebugMemoryRangeEnum * This,
/* [in] */ ULONG celt);
-
- HRESULT ( STDMETHODCALLTYPE *Reset )(
+
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
ICorDebugMemoryRangeEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Clone )(
+
+ HRESULT ( STDMETHODCALLTYPE *Clone )(
ICorDebugMemoryRangeEnum * This,
/* [out] */ ICorDebugEnum **ppEnum);
-
- HRESULT ( STDMETHODCALLTYPE *GetCount )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCount )(
ICorDebugMemoryRangeEnum * This,
/* [out] */ ULONG *pcelt);
-
- HRESULT ( STDMETHODCALLTYPE *Next )(
+
+ HRESULT ( STDMETHODCALLTYPE *Next )(
ICorDebugMemoryRangeEnum * This,
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ COR_MEMORY_RANGE objects[ ],
/* [out] */ ULONG *pceltFetched);
-
+
END_INTERFACE
} ICorDebugMemoryRangeEnumVtbl;
@@ -8028,36 +8037,36 @@ EXTERN_C const IID IID_ICorDebugMemoryRangeEnum;
CONST_VTBL struct ICorDebugMemoryRangeEnumVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugMemoryRangeEnum_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugMemoryRangeEnum_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugMemoryRangeEnum_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugMemoryRangeEnum_Skip(This,celt) \
- ( (This)->lpVtbl -> Skip(This,celt) )
+ ( (This)->lpVtbl -> Skip(This,celt) )
#define ICorDebugMemoryRangeEnum_Reset(This) \
- ( (This)->lpVtbl -> Reset(This) )
+ ( (This)->lpVtbl -> Reset(This) )
#define ICorDebugMemoryRangeEnum_Clone(This,ppEnum) \
- ( (This)->lpVtbl -> Clone(This,ppEnum) )
+ ( (This)->lpVtbl -> Clone(This,ppEnum) )
#define ICorDebugMemoryRangeEnum_GetCount(This,pcelt) \
- ( (This)->lpVtbl -> GetCount(This,pcelt) )
+ ( (This)->lpVtbl -> GetCount(This,pcelt) )
#define ICorDebugMemoryRangeEnum_Next(This,celt,objects,pceltFetched) \
- ( (This)->lpVtbl -> Next(This,celt,objects,pceltFetched) )
+ ( (This)->lpVtbl -> Next(This,celt,objects,pceltFetched) )
#endif /* COBJMACROS */
@@ -8074,45 +8083,45 @@ EXTERN_C const IID IID_ICorDebugMemoryRangeEnum;
#define __ICorDebugProcess11_INTERFACE_DEFINED__
/* interface ICorDebugProcess11 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugProcess11;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("344B37AA-F2C0-4D3B-9909-91CCF787DA8C")
ICorDebugProcess11 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE EnumerateLoaderHeapMemoryRegions(
+ virtual HRESULT STDMETHODCALLTYPE EnumerateLoaderHeapMemoryRegions(
/* [out] */ ICorDebugMemoryRangeEnum **ppRanges) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugProcess11Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugProcess11 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugProcess11 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugProcess11 * This);
-
- HRESULT ( STDMETHODCALLTYPE *EnumerateLoaderHeapMemoryRegions )(
+
+ HRESULT ( STDMETHODCALLTYPE *EnumerateLoaderHeapMemoryRegions )(
ICorDebugProcess11 * This,
/* [out] */ ICorDebugMemoryRangeEnum **ppRanges);
-
+
END_INTERFACE
} ICorDebugProcess11Vtbl;
@@ -8121,23 +8130,23 @@ EXTERN_C const IID IID_ICorDebugProcess11;
CONST_VTBL struct ICorDebugProcess11Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugProcess11_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugProcess11_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugProcess11_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugProcess11_EnumerateLoaderHeapMemoryRegions(This,ppRanges) \
- ( (This)->lpVtbl -> EnumerateLoaderHeapMemoryRegions(This,ppRanges) )
+ ( (This)->lpVtbl -> EnumerateLoaderHeapMemoryRegions(This,ppRanges) )
#endif /* COBJMACROS */
@@ -8154,53 +8163,53 @@ EXTERN_C const IID IID_ICorDebugProcess11;
#define __ICorDebugModuleDebugEvent_INTERFACE_DEFINED__
/* interface ICorDebugModuleDebugEvent */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugModuleDebugEvent;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("51A15E8D-9FFF-4864-9B87-F4FBDEA747A2")
ICorDebugModuleDebugEvent : public ICorDebugDebugEvent
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetModule(
+ virtual HRESULT STDMETHODCALLTYPE GetModule(
/* [out] */ ICorDebugModule **ppModule) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugModuleDebugEventVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugModuleDebugEvent * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugModuleDebugEvent * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugModuleDebugEvent * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetEventKind )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetEventKind )(
ICorDebugModuleDebugEvent * This,
/* [out] */ CorDebugDebugEventKind *pDebugEventKind);
-
- HRESULT ( STDMETHODCALLTYPE *GetThread )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetThread )(
ICorDebugModuleDebugEvent * This,
/* [out] */ ICorDebugThread **ppThread);
-
- HRESULT ( STDMETHODCALLTYPE *GetModule )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetModule )(
ICorDebugModuleDebugEvent * This,
/* [out] */ ICorDebugModule **ppModule);
-
+
END_INTERFACE
} ICorDebugModuleDebugEventVtbl;
@@ -8209,30 +8218,30 @@ EXTERN_C const IID IID_ICorDebugModuleDebugEvent;
CONST_VTBL struct ICorDebugModuleDebugEventVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugModuleDebugEvent_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugModuleDebugEvent_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugModuleDebugEvent_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugModuleDebugEvent_GetEventKind(This,pDebugEventKind) \
- ( (This)->lpVtbl -> GetEventKind(This,pDebugEventKind) )
+ ( (This)->lpVtbl -> GetEventKind(This,pDebugEventKind) )
#define ICorDebugModuleDebugEvent_GetThread(This,ppThread) \
- ( (This)->lpVtbl -> GetThread(This,ppThread) )
+ ( (This)->lpVtbl -> GetThread(This,ppThread) )
#define ICorDebugModuleDebugEvent_GetModule(This,ppModule) \
- ( (This)->lpVtbl -> GetModule(This,ppModule) )
+ ( (This)->lpVtbl -> GetModule(This,ppModule) )
#endif /* COBJMACROS */
@@ -8249,67 +8258,67 @@ EXTERN_C const IID IID_ICorDebugModuleDebugEvent;
#define __ICorDebugExceptionDebugEvent_INTERFACE_DEFINED__
/* interface ICorDebugExceptionDebugEvent */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugExceptionDebugEvent;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("AF79EC94-4752-419C-A626-5FB1CC1A5AB7")
ICorDebugExceptionDebugEvent : public ICorDebugDebugEvent
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetStackPointer(
+ virtual HRESULT STDMETHODCALLTYPE GetStackPointer(
/* [out] */ CORDB_ADDRESS *pStackPointer) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetNativeIP(
+
+ virtual HRESULT STDMETHODCALLTYPE GetNativeIP(
/* [out] */ CORDB_ADDRESS *pIP) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetFlags(
+
+ virtual HRESULT STDMETHODCALLTYPE GetFlags(
/* [out] */ CorDebugExceptionFlags *pdwFlags) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugExceptionDebugEventVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugExceptionDebugEvent * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugExceptionDebugEvent * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugExceptionDebugEvent * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetEventKind )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetEventKind )(
ICorDebugExceptionDebugEvent * This,
/* [out] */ CorDebugDebugEventKind *pDebugEventKind);
-
- HRESULT ( STDMETHODCALLTYPE *GetThread )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetThread )(
ICorDebugExceptionDebugEvent * This,
/* [out] */ ICorDebugThread **ppThread);
-
- HRESULT ( STDMETHODCALLTYPE *GetStackPointer )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetStackPointer )(
ICorDebugExceptionDebugEvent * This,
/* [out] */ CORDB_ADDRESS *pStackPointer);
-
- HRESULT ( STDMETHODCALLTYPE *GetNativeIP )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetNativeIP )(
ICorDebugExceptionDebugEvent * This,
/* [out] */ CORDB_ADDRESS *pIP);
-
- HRESULT ( STDMETHODCALLTYPE *GetFlags )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetFlags )(
ICorDebugExceptionDebugEvent * This,
/* [out] */ CorDebugExceptionFlags *pdwFlags);
-
+
END_INTERFACE
} ICorDebugExceptionDebugEventVtbl;
@@ -8318,36 +8327,36 @@ EXTERN_C const IID IID_ICorDebugExceptionDebugEvent;
CONST_VTBL struct ICorDebugExceptionDebugEventVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugExceptionDebugEvent_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugExceptionDebugEvent_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugExceptionDebugEvent_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugExceptionDebugEvent_GetEventKind(This,pDebugEventKind) \
- ( (This)->lpVtbl -> GetEventKind(This,pDebugEventKind) )
+ ( (This)->lpVtbl -> GetEventKind(This,pDebugEventKind) )
#define ICorDebugExceptionDebugEvent_GetThread(This,ppThread) \
- ( (This)->lpVtbl -> GetThread(This,ppThread) )
+ ( (This)->lpVtbl -> GetThread(This,ppThread) )
#define ICorDebugExceptionDebugEvent_GetStackPointer(This,pStackPointer) \
- ( (This)->lpVtbl -> GetStackPointer(This,pStackPointer) )
+ ( (This)->lpVtbl -> GetStackPointer(This,pStackPointer) )
#define ICorDebugExceptionDebugEvent_GetNativeIP(This,pIP) \
- ( (This)->lpVtbl -> GetNativeIP(This,pIP) )
+ ( (This)->lpVtbl -> GetNativeIP(This,pIP) )
#define ICorDebugExceptionDebugEvent_GetFlags(This,pdwFlags) \
- ( (This)->lpVtbl -> GetFlags(This,pdwFlags) )
+ ( (This)->lpVtbl -> GetFlags(This,pdwFlags) )
#endif /* COBJMACROS */
@@ -8364,52 +8373,52 @@ EXTERN_C const IID IID_ICorDebugExceptionDebugEvent;
#define __ICorDebugBreakpoint_INTERFACE_DEFINED__
/* interface ICorDebugBreakpoint */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugBreakpoint;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("CC7BCAE8-8A68-11d2-983C-0000F808342D")
ICorDebugBreakpoint : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE Activate(
+ virtual HRESULT STDMETHODCALLTYPE Activate(
/* [in] */ BOOL bActive) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE IsActive(
+
+ virtual HRESULT STDMETHODCALLTYPE IsActive(
/* [out] */ BOOL *pbActive) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugBreakpointVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugBreakpoint * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugBreakpoint * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugBreakpoint * This);
-
- HRESULT ( STDMETHODCALLTYPE *Activate )(
+
+ HRESULT ( STDMETHODCALLTYPE *Activate )(
ICorDebugBreakpoint * This,
/* [in] */ BOOL bActive);
-
- HRESULT ( STDMETHODCALLTYPE *IsActive )(
+
+ HRESULT ( STDMETHODCALLTYPE *IsActive )(
ICorDebugBreakpoint * This,
/* [out] */ BOOL *pbActive);
-
+
END_INTERFACE
} ICorDebugBreakpointVtbl;
@@ -8418,26 +8427,26 @@ EXTERN_C const IID IID_ICorDebugBreakpoint;
CONST_VTBL struct ICorDebugBreakpointVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugBreakpoint_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugBreakpoint_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugBreakpoint_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugBreakpoint_Activate(This,bActive) \
- ( (This)->lpVtbl -> Activate(This,bActive) )
+ ( (This)->lpVtbl -> Activate(This,bActive) )
#define ICorDebugBreakpoint_IsActive(This,pbActive) \
- ( (This)->lpVtbl -> IsActive(This,pbActive) )
+ ( (This)->lpVtbl -> IsActive(This,pbActive) )
#endif /* COBJMACROS */
@@ -8454,60 +8463,60 @@ EXTERN_C const IID IID_ICorDebugBreakpoint;
#define __ICorDebugFunctionBreakpoint_INTERFACE_DEFINED__
/* interface ICorDebugFunctionBreakpoint */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugFunctionBreakpoint;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("CC7BCAE9-8A68-11d2-983C-0000F808342D")
ICorDebugFunctionBreakpoint : public ICorDebugBreakpoint
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetFunction(
+ virtual HRESULT STDMETHODCALLTYPE GetFunction(
/* [out] */ ICorDebugFunction **ppFunction) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetOffset(
+
+ virtual HRESULT STDMETHODCALLTYPE GetOffset(
/* [out] */ ULONG32 *pnOffset) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugFunctionBreakpointVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugFunctionBreakpoint * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugFunctionBreakpoint * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugFunctionBreakpoint * This);
-
- HRESULT ( STDMETHODCALLTYPE *Activate )(
+
+ HRESULT ( STDMETHODCALLTYPE *Activate )(
ICorDebugFunctionBreakpoint * This,
/* [in] */ BOOL bActive);
-
- HRESULT ( STDMETHODCALLTYPE *IsActive )(
+
+ HRESULT ( STDMETHODCALLTYPE *IsActive )(
ICorDebugFunctionBreakpoint * This,
/* [out] */ BOOL *pbActive);
-
- HRESULT ( STDMETHODCALLTYPE *GetFunction )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetFunction )(
ICorDebugFunctionBreakpoint * This,
/* [out] */ ICorDebugFunction **ppFunction);
-
- HRESULT ( STDMETHODCALLTYPE *GetOffset )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetOffset )(
ICorDebugFunctionBreakpoint * This,
/* [out] */ ULONG32 *pnOffset);
-
+
END_INTERFACE
} ICorDebugFunctionBreakpointVtbl;
@@ -8516,33 +8525,33 @@ EXTERN_C const IID IID_ICorDebugFunctionBreakpoint;
CONST_VTBL struct ICorDebugFunctionBreakpointVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugFunctionBreakpoint_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugFunctionBreakpoint_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugFunctionBreakpoint_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugFunctionBreakpoint_Activate(This,bActive) \
- ( (This)->lpVtbl -> Activate(This,bActive) )
+ ( (This)->lpVtbl -> Activate(This,bActive) )
#define ICorDebugFunctionBreakpoint_IsActive(This,pbActive) \
- ( (This)->lpVtbl -> IsActive(This,pbActive) )
+ ( (This)->lpVtbl -> IsActive(This,pbActive) )
#define ICorDebugFunctionBreakpoint_GetFunction(This,ppFunction) \
- ( (This)->lpVtbl -> GetFunction(This,ppFunction) )
+ ( (This)->lpVtbl -> GetFunction(This,ppFunction) )
#define ICorDebugFunctionBreakpoint_GetOffset(This,pnOffset) \
- ( (This)->lpVtbl -> GetOffset(This,pnOffset) )
+ ( (This)->lpVtbl -> GetOffset(This,pnOffset) )
#endif /* COBJMACROS */
@@ -8559,53 +8568,53 @@ EXTERN_C const IID IID_ICorDebugFunctionBreakpoint;
#define __ICorDebugModuleBreakpoint_INTERFACE_DEFINED__
/* interface ICorDebugModuleBreakpoint */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugModuleBreakpoint;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("CC7BCAEA-8A68-11d2-983C-0000F808342D")
ICorDebugModuleBreakpoint : public ICorDebugBreakpoint
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetModule(
+ virtual HRESULT STDMETHODCALLTYPE GetModule(
/* [out] */ ICorDebugModule **ppModule) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugModuleBreakpointVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugModuleBreakpoint * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugModuleBreakpoint * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugModuleBreakpoint * This);
-
- HRESULT ( STDMETHODCALLTYPE *Activate )(
+
+ HRESULT ( STDMETHODCALLTYPE *Activate )(
ICorDebugModuleBreakpoint * This,
/* [in] */ BOOL bActive);
-
- HRESULT ( STDMETHODCALLTYPE *IsActive )(
+
+ HRESULT ( STDMETHODCALLTYPE *IsActive )(
ICorDebugModuleBreakpoint * This,
/* [out] */ BOOL *pbActive);
-
- HRESULT ( STDMETHODCALLTYPE *GetModule )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetModule )(
ICorDebugModuleBreakpoint * This,
/* [out] */ ICorDebugModule **ppModule);
-
+
END_INTERFACE
} ICorDebugModuleBreakpointVtbl;
@@ -8614,30 +8623,30 @@ EXTERN_C const IID IID_ICorDebugModuleBreakpoint;
CONST_VTBL struct ICorDebugModuleBreakpointVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugModuleBreakpoint_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugModuleBreakpoint_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugModuleBreakpoint_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugModuleBreakpoint_Activate(This,bActive) \
- ( (This)->lpVtbl -> Activate(This,bActive) )
+ ( (This)->lpVtbl -> Activate(This,bActive) )
#define ICorDebugModuleBreakpoint_IsActive(This,pbActive) \
- ( (This)->lpVtbl -> IsActive(This,pbActive) )
+ ( (This)->lpVtbl -> IsActive(This,pbActive) )
#define ICorDebugModuleBreakpoint_GetModule(This,ppModule) \
- ( (This)->lpVtbl -> GetModule(This,ppModule) )
+ ( (This)->lpVtbl -> GetModule(This,ppModule) )
#endif /* COBJMACROS */
@@ -8654,53 +8663,53 @@ EXTERN_C const IID IID_ICorDebugModuleBreakpoint;
#define __ICorDebugValueBreakpoint_INTERFACE_DEFINED__
/* interface ICorDebugValueBreakpoint */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugValueBreakpoint;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("CC7BCAEB-8A68-11d2-983C-0000F808342D")
ICorDebugValueBreakpoint : public ICorDebugBreakpoint
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetValue(
+ virtual HRESULT STDMETHODCALLTYPE GetValue(
/* [out] */ ICorDebugValue **ppValue) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugValueBreakpointVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugValueBreakpoint * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugValueBreakpoint * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugValueBreakpoint * This);
-
- HRESULT ( STDMETHODCALLTYPE *Activate )(
+
+ HRESULT ( STDMETHODCALLTYPE *Activate )(
ICorDebugValueBreakpoint * This,
/* [in] */ BOOL bActive);
-
- HRESULT ( STDMETHODCALLTYPE *IsActive )(
+
+ HRESULT ( STDMETHODCALLTYPE *IsActive )(
ICorDebugValueBreakpoint * This,
/* [out] */ BOOL *pbActive);
-
- HRESULT ( STDMETHODCALLTYPE *GetValue )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetValue )(
ICorDebugValueBreakpoint * This,
/* [out] */ ICorDebugValue **ppValue);
-
+
END_INTERFACE
} ICorDebugValueBreakpointVtbl;
@@ -8709,30 +8718,30 @@ EXTERN_C const IID IID_ICorDebugValueBreakpoint;
CONST_VTBL struct ICorDebugValueBreakpointVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugValueBreakpoint_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugValueBreakpoint_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugValueBreakpoint_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugValueBreakpoint_Activate(This,bActive) \
- ( (This)->lpVtbl -> Activate(This,bActive) )
+ ( (This)->lpVtbl -> Activate(This,bActive) )
#define ICorDebugValueBreakpoint_IsActive(This,pbActive) \
- ( (This)->lpVtbl -> IsActive(This,pbActive) )
+ ( (This)->lpVtbl -> IsActive(This,pbActive) )
#define ICorDebugValueBreakpoint_GetValue(This,ppValue) \
- ( (This)->lpVtbl -> GetValue(This,ppValue) )
+ ( (This)->lpVtbl -> GetValue(This,ppValue) )
#endif /* COBJMACROS */
@@ -8749,9 +8758,9 @@ EXTERN_C const IID IID_ICorDebugValueBreakpoint;
#define __ICorDebugStepper_INTERFACE_DEFINED__
/* interface ICorDebugStepper */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
-typedef
+typedef
enum CorDebugIntercept
{
INTERCEPT_NONE = 0,
@@ -8763,7 +8772,7 @@ enum CorDebugIntercept
INTERCEPT_ALL = 0xffff
} CorDebugIntercept;
-typedef
+typedef
enum CorDebugUnmappedStop
{
STOP_NONE = 0,
@@ -8785,88 +8794,88 @@ typedef struct COR_DEBUG_STEP_RANGE
EXTERN_C const IID IID_ICorDebugStepper;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("CC7BCAEC-8A68-11d2-983C-0000F808342D")
ICorDebugStepper : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE IsActive(
+ virtual HRESULT STDMETHODCALLTYPE IsActive(
/* [out] */ BOOL *pbActive) = 0;
-
+
virtual HRESULT STDMETHODCALLTYPE Deactivate( void) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE SetInterceptMask(
+
+ virtual HRESULT STDMETHODCALLTYPE SetInterceptMask(
/* [in] */ CorDebugIntercept mask) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE SetUnmappedStopMask(
+
+ virtual HRESULT STDMETHODCALLTYPE SetUnmappedStopMask(
/* [in] */ CorDebugUnmappedStop mask) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE Step(
+
+ virtual HRESULT STDMETHODCALLTYPE Step(
/* [in] */ BOOL bStepIn) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE StepRange(
+
+ virtual HRESULT STDMETHODCALLTYPE StepRange(
/* [in] */ BOOL bStepIn,
/* [size_is][in] */ COR_DEBUG_STEP_RANGE ranges[ ],
/* [in] */ ULONG32 cRangeCount) = 0;
-
+
virtual HRESULT STDMETHODCALLTYPE StepOut( void) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE SetRangeIL(
+
+ virtual HRESULT STDMETHODCALLTYPE SetRangeIL(
/* [in] */ BOOL bIL) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugStepperVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugStepper * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugStepper * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugStepper * This);
-
- HRESULT ( STDMETHODCALLTYPE *IsActive )(
+
+ HRESULT ( STDMETHODCALLTYPE *IsActive )(
ICorDebugStepper * This,
/* [out] */ BOOL *pbActive);
-
- HRESULT ( STDMETHODCALLTYPE *Deactivate )(
+
+ HRESULT ( STDMETHODCALLTYPE *Deactivate )(
ICorDebugStepper * This);
-
- HRESULT ( STDMETHODCALLTYPE *SetInterceptMask )(
+
+ HRESULT ( STDMETHODCALLTYPE *SetInterceptMask )(
ICorDebugStepper * This,
/* [in] */ CorDebugIntercept mask);
-
- HRESULT ( STDMETHODCALLTYPE *SetUnmappedStopMask )(
+
+ HRESULT ( STDMETHODCALLTYPE *SetUnmappedStopMask )(
ICorDebugStepper * This,
/* [in] */ CorDebugUnmappedStop mask);
-
- HRESULT ( STDMETHODCALLTYPE *Step )(
+
+ HRESULT ( STDMETHODCALLTYPE *Step )(
ICorDebugStepper * This,
/* [in] */ BOOL bStepIn);
-
- HRESULT ( STDMETHODCALLTYPE *StepRange )(
+
+ HRESULT ( STDMETHODCALLTYPE *StepRange )(
ICorDebugStepper * This,
/* [in] */ BOOL bStepIn,
/* [size_is][in] */ COR_DEBUG_STEP_RANGE ranges[ ],
/* [in] */ ULONG32 cRangeCount);
-
- HRESULT ( STDMETHODCALLTYPE *StepOut )(
+
+ HRESULT ( STDMETHODCALLTYPE *StepOut )(
ICorDebugStepper * This);
-
- HRESULT ( STDMETHODCALLTYPE *SetRangeIL )(
+
+ HRESULT ( STDMETHODCALLTYPE *SetRangeIL )(
ICorDebugStepper * This,
/* [in] */ BOOL bIL);
-
+
END_INTERFACE
} ICorDebugStepperVtbl;
@@ -8875,44 +8884,44 @@ EXTERN_C const IID IID_ICorDebugStepper;
CONST_VTBL struct ICorDebugStepperVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugStepper_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugStepper_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugStepper_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugStepper_IsActive(This,pbActive) \
- ( (This)->lpVtbl -> IsActive(This,pbActive) )
+ ( (This)->lpVtbl -> IsActive(This,pbActive) )
#define ICorDebugStepper_Deactivate(This) \
- ( (This)->lpVtbl -> Deactivate(This) )
+ ( (This)->lpVtbl -> Deactivate(This) )
#define ICorDebugStepper_SetInterceptMask(This,mask) \
- ( (This)->lpVtbl -> SetInterceptMask(This,mask) )
+ ( (This)->lpVtbl -> SetInterceptMask(This,mask) )
#define ICorDebugStepper_SetUnmappedStopMask(This,mask) \
- ( (This)->lpVtbl -> SetUnmappedStopMask(This,mask) )
+ ( (This)->lpVtbl -> SetUnmappedStopMask(This,mask) )
#define ICorDebugStepper_Step(This,bStepIn) \
- ( (This)->lpVtbl -> Step(This,bStepIn) )
+ ( (This)->lpVtbl -> Step(This,bStepIn) )
#define ICorDebugStepper_StepRange(This,bStepIn,ranges,cRangeCount) \
- ( (This)->lpVtbl -> StepRange(This,bStepIn,ranges,cRangeCount) )
+ ( (This)->lpVtbl -> StepRange(This,bStepIn,ranges,cRangeCount) )
#define ICorDebugStepper_StepOut(This) \
- ( (This)->lpVtbl -> StepOut(This) )
+ ( (This)->lpVtbl -> StepOut(This) )
#define ICorDebugStepper_SetRangeIL(This,bIL) \
- ( (This)->lpVtbl -> SetRangeIL(This,bIL) )
+ ( (This)->lpVtbl -> SetRangeIL(This,bIL) )
#endif /* COBJMACROS */
@@ -8929,45 +8938,45 @@ EXTERN_C const IID IID_ICorDebugStepper;
#define __ICorDebugStepper2_INTERFACE_DEFINED__
/* interface ICorDebugStepper2 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugStepper2;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("C5B6E9C3-E7D1-4a8e-873B-7F047F0706F7")
ICorDebugStepper2 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE SetJMC(
+ virtual HRESULT STDMETHODCALLTYPE SetJMC(
/* [in] */ BOOL fIsJMCStepper) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugStepper2Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugStepper2 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugStepper2 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugStepper2 * This);
-
- HRESULT ( STDMETHODCALLTYPE *SetJMC )(
+
+ HRESULT ( STDMETHODCALLTYPE *SetJMC )(
ICorDebugStepper2 * This,
/* [in] */ BOOL fIsJMCStepper);
-
+
END_INTERFACE
} ICorDebugStepper2Vtbl;
@@ -8976,23 +8985,23 @@ EXTERN_C const IID IID_ICorDebugStepper2;
CONST_VTBL struct ICorDebugStepper2Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugStepper2_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugStepper2_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugStepper2_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugStepper2_SetJMC(This,fIsJMCStepper) \
- ( (This)->lpVtbl -> SetJMC(This,fIsJMCStepper) )
+ ( (This)->lpVtbl -> SetJMC(This,fIsJMCStepper) )
#endif /* COBJMACROS */
@@ -9009,9 +9018,9 @@ EXTERN_C const IID IID_ICorDebugStepper2;
#define __ICorDebugRegisterSet_INTERFACE_DEFINED__
/* interface ICorDebugRegisterSet */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
-typedef
+typedef
enum CorDebugRegister
{
REGISTER_INSTRUCTION_POINTER = 0,
@@ -9182,86 +9191,86 @@ enum CorDebugRegister
REGISTER_ARM64_V28 = ( REGISTER_ARM64_V27 + 1 ) ,
REGISTER_ARM64_V29 = ( REGISTER_ARM64_V28 + 1 ) ,
REGISTER_ARM64_V30 = ( REGISTER_ARM64_V29 + 1 ) ,
- REGISTER_ARM64_V31 = ( REGISTER_ARM64_V30 + 1 )
+ REGISTER_ARM64_V31 = ( REGISTER_ARM64_V30 + 1 )
} CorDebugRegister;
EXTERN_C const IID IID_ICorDebugRegisterSet;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("CC7BCB0B-8A68-11d2-983C-0000F808342D")
ICorDebugRegisterSet : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetRegistersAvailable(
+ virtual HRESULT STDMETHODCALLTYPE GetRegistersAvailable(
/* [out] */ ULONG64 *pAvailable) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetRegisters(
+
+ virtual HRESULT STDMETHODCALLTYPE GetRegisters(
/* [in] */ ULONG64 mask,
/* [in] */ ULONG32 regCount,
/* [length_is][size_is][out] */ CORDB_REGISTER regBuffer[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE SetRegisters(
+
+ virtual HRESULT STDMETHODCALLTYPE SetRegisters(
/* [in] */ ULONG64 mask,
/* [in] */ ULONG32 regCount,
/* [size_is][in] */ CORDB_REGISTER regBuffer[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetThreadContext(
+
+ virtual HRESULT STDMETHODCALLTYPE GetThreadContext(
/* [in] */ ULONG32 contextSize,
/* [size_is][length_is][out][in] */ BYTE context[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE SetThreadContext(
+
+ virtual HRESULT STDMETHODCALLTYPE SetThreadContext(
/* [in] */ ULONG32 contextSize,
/* [size_is][length_is][in] */ BYTE context[ ]) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugRegisterSetVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugRegisterSet * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugRegisterSet * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugRegisterSet * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetRegistersAvailable )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetRegistersAvailable )(
ICorDebugRegisterSet * This,
/* [out] */ ULONG64 *pAvailable);
-
- HRESULT ( STDMETHODCALLTYPE *GetRegisters )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetRegisters )(
ICorDebugRegisterSet * This,
/* [in] */ ULONG64 mask,
/* [in] */ ULONG32 regCount,
/* [length_is][size_is][out] */ CORDB_REGISTER regBuffer[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *SetRegisters )(
+
+ HRESULT ( STDMETHODCALLTYPE *SetRegisters )(
ICorDebugRegisterSet * This,
/* [in] */ ULONG64 mask,
/* [in] */ ULONG32 regCount,
/* [size_is][in] */ CORDB_REGISTER regBuffer[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetThreadContext )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetThreadContext )(
ICorDebugRegisterSet * This,
/* [in] */ ULONG32 contextSize,
/* [size_is][length_is][out][in] */ BYTE context[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *SetThreadContext )(
+
+ HRESULT ( STDMETHODCALLTYPE *SetThreadContext )(
ICorDebugRegisterSet * This,
/* [in] */ ULONG32 contextSize,
/* [size_is][length_is][in] */ BYTE context[ ]);
-
+
END_INTERFACE
} ICorDebugRegisterSetVtbl;
@@ -9270,35 +9279,35 @@ EXTERN_C const IID IID_ICorDebugRegisterSet;
CONST_VTBL struct ICorDebugRegisterSetVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugRegisterSet_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugRegisterSet_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugRegisterSet_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugRegisterSet_GetRegistersAvailable(This,pAvailable) \
- ( (This)->lpVtbl -> GetRegistersAvailable(This,pAvailable) )
+ ( (This)->lpVtbl -> GetRegistersAvailable(This,pAvailable) )
#define ICorDebugRegisterSet_GetRegisters(This,mask,regCount,regBuffer) \
- ( (This)->lpVtbl -> GetRegisters(This,mask,regCount,regBuffer) )
+ ( (This)->lpVtbl -> GetRegisters(This,mask,regCount,regBuffer) )
#define ICorDebugRegisterSet_SetRegisters(This,mask,regCount,regBuffer) \
- ( (This)->lpVtbl -> SetRegisters(This,mask,regCount,regBuffer) )
+ ( (This)->lpVtbl -> SetRegisters(This,mask,regCount,regBuffer) )
#define ICorDebugRegisterSet_GetThreadContext(This,contextSize,context) \
- ( (This)->lpVtbl -> GetThreadContext(This,contextSize,context) )
+ ( (This)->lpVtbl -> GetThreadContext(This,contextSize,context) )
#define ICorDebugRegisterSet_SetThreadContext(This,contextSize,context) \
- ( (This)->lpVtbl -> SetThreadContext(This,contextSize,context) )
+ ( (This)->lpVtbl -> SetThreadContext(This,contextSize,context) )
#endif /* COBJMACROS */
@@ -9315,73 +9324,73 @@ EXTERN_C const IID IID_ICorDebugRegisterSet;
#define __ICorDebugRegisterSet2_INTERFACE_DEFINED__
/* interface ICorDebugRegisterSet2 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugRegisterSet2;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("6DC7BA3F-89BA-4459-9EC1-9D60937B468D")
ICorDebugRegisterSet2 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetRegistersAvailable(
+ virtual HRESULT STDMETHODCALLTYPE GetRegistersAvailable(
/* [in] */ ULONG32 numChunks,
/* [size_is][out] */ BYTE availableRegChunks[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetRegisters(
+
+ virtual HRESULT STDMETHODCALLTYPE GetRegisters(
/* [in] */ ULONG32 maskCount,
/* [size_is][in] */ BYTE mask[ ],
/* [in] */ ULONG32 regCount,
/* [size_is][out] */ CORDB_REGISTER regBuffer[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE SetRegisters(
+
+ virtual HRESULT STDMETHODCALLTYPE SetRegisters(
/* [in] */ ULONG32 maskCount,
/* [size_is][in] */ BYTE mask[ ],
/* [in] */ ULONG32 regCount,
/* [size_is][in] */ CORDB_REGISTER regBuffer[ ]) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugRegisterSet2Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugRegisterSet2 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugRegisterSet2 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugRegisterSet2 * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetRegistersAvailable )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetRegistersAvailable )(
ICorDebugRegisterSet2 * This,
/* [in] */ ULONG32 numChunks,
/* [size_is][out] */ BYTE availableRegChunks[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetRegisters )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetRegisters )(
ICorDebugRegisterSet2 * This,
/* [in] */ ULONG32 maskCount,
/* [size_is][in] */ BYTE mask[ ],
/* [in] */ ULONG32 regCount,
/* [size_is][out] */ CORDB_REGISTER regBuffer[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *SetRegisters )(
+
+ HRESULT ( STDMETHODCALLTYPE *SetRegisters )(
ICorDebugRegisterSet2 * This,
/* [in] */ ULONG32 maskCount,
/* [size_is][in] */ BYTE mask[ ],
/* [in] */ ULONG32 regCount,
/* [size_is][in] */ CORDB_REGISTER regBuffer[ ]);
-
+
END_INTERFACE
} ICorDebugRegisterSet2Vtbl;
@@ -9390,29 +9399,29 @@ EXTERN_C const IID IID_ICorDebugRegisterSet2;
CONST_VTBL struct ICorDebugRegisterSet2Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugRegisterSet2_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugRegisterSet2_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugRegisterSet2_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugRegisterSet2_GetRegistersAvailable(This,numChunks,availableRegChunks) \
- ( (This)->lpVtbl -> GetRegistersAvailable(This,numChunks,availableRegChunks) )
+ ( (This)->lpVtbl -> GetRegistersAvailable(This,numChunks,availableRegChunks) )
#define ICorDebugRegisterSet2_GetRegisters(This,maskCount,mask,regCount,regBuffer) \
- ( (This)->lpVtbl -> GetRegisters(This,maskCount,mask,regCount,regBuffer) )
+ ( (This)->lpVtbl -> GetRegisters(This,maskCount,mask,regCount,regBuffer) )
#define ICorDebugRegisterSet2_SetRegisters(This,maskCount,mask,regCount,regBuffer) \
- ( (This)->lpVtbl -> SetRegisters(This,maskCount,mask,regCount,regBuffer) )
+ ( (This)->lpVtbl -> SetRegisters(This,maskCount,mask,regCount,regBuffer) )
#endif /* COBJMACROS */
@@ -9429,9 +9438,9 @@ EXTERN_C const IID IID_ICorDebugRegisterSet2;
#define __ICorDebugThread_INTERFACE_DEFINED__
/* interface ICorDebugThread */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
-typedef
+typedef
enum CorDebugUserState
{
USER_STOP_REQUESTED = 0x1,
@@ -9449,142 +9458,142 @@ enum CorDebugUserState
EXTERN_C const IID IID_ICorDebugThread;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("938c6d66-7fb6-4f69-b389-425b8987329b")
ICorDebugThread : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetProcess(
+ virtual HRESULT STDMETHODCALLTYPE GetProcess(
/* [out] */ ICorDebugProcess **ppProcess) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetID(
+
+ virtual HRESULT STDMETHODCALLTYPE GetID(
/* [out] */ DWORD *pdwThreadId) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetHandle(
+
+ virtual HRESULT STDMETHODCALLTYPE GetHandle(
/* [out] */ HTHREAD *phThreadHandle) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetAppDomain(
+
+ virtual HRESULT STDMETHODCALLTYPE GetAppDomain(
/* [out] */ ICorDebugAppDomain **ppAppDomain) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE SetDebugState(
+
+ virtual HRESULT STDMETHODCALLTYPE SetDebugState(
/* [in] */ CorDebugThreadState state) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetDebugState(
+
+ virtual HRESULT STDMETHODCALLTYPE GetDebugState(
/* [out] */ CorDebugThreadState *pState) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetUserState(
+
+ virtual HRESULT STDMETHODCALLTYPE GetUserState(
/* [out] */ CorDebugUserState *pState) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetCurrentException(
+
+ virtual HRESULT STDMETHODCALLTYPE GetCurrentException(
/* [out] */ ICorDebugValue **ppExceptionObject) = 0;
-
+
virtual HRESULT STDMETHODCALLTYPE ClearCurrentException( void) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE CreateStepper(
+
+ virtual HRESULT STDMETHODCALLTYPE CreateStepper(
/* [out] */ ICorDebugStepper **ppStepper) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE EnumerateChains(
+
+ virtual HRESULT STDMETHODCALLTYPE EnumerateChains(
/* [out] */ ICorDebugChainEnum **ppChains) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetActiveChain(
+
+ virtual HRESULT STDMETHODCALLTYPE GetActiveChain(
/* [out] */ ICorDebugChain **ppChain) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetActiveFrame(
+
+ virtual HRESULT STDMETHODCALLTYPE GetActiveFrame(
/* [out] */ ICorDebugFrame **ppFrame) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetRegisterSet(
+
+ virtual HRESULT STDMETHODCALLTYPE GetRegisterSet(
/* [out] */ ICorDebugRegisterSet **ppRegisters) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE CreateEval(
+
+ virtual HRESULT STDMETHODCALLTYPE CreateEval(
/* [out] */ ICorDebugEval **ppEval) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetObject(
+
+ virtual HRESULT STDMETHODCALLTYPE GetObject(
/* [out] */ ICorDebugValue **ppObject) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugThreadVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugThread * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugThread * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugThread * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetProcess )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetProcess )(
ICorDebugThread * This,
/* [out] */ ICorDebugProcess **ppProcess);
-
- HRESULT ( STDMETHODCALLTYPE *GetID )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetID )(
ICorDebugThread * This,
/* [out] */ DWORD *pdwThreadId);
-
- HRESULT ( STDMETHODCALLTYPE *GetHandle )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetHandle )(
ICorDebugThread * This,
/* [out] */ HTHREAD *phThreadHandle);
-
- HRESULT ( STDMETHODCALLTYPE *GetAppDomain )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetAppDomain )(
ICorDebugThread * This,
/* [out] */ ICorDebugAppDomain **ppAppDomain);
-
- HRESULT ( STDMETHODCALLTYPE *SetDebugState )(
+
+ HRESULT ( STDMETHODCALLTYPE *SetDebugState )(
ICorDebugThread * This,
/* [in] */ CorDebugThreadState state);
-
- HRESULT ( STDMETHODCALLTYPE *GetDebugState )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetDebugState )(
ICorDebugThread * This,
/* [out] */ CorDebugThreadState *pState);
-
- HRESULT ( STDMETHODCALLTYPE *GetUserState )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetUserState )(
ICorDebugThread * This,
/* [out] */ CorDebugUserState *pState);
-
- HRESULT ( STDMETHODCALLTYPE *GetCurrentException )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCurrentException )(
ICorDebugThread * This,
/* [out] */ ICorDebugValue **ppExceptionObject);
-
- HRESULT ( STDMETHODCALLTYPE *ClearCurrentException )(
+
+ HRESULT ( STDMETHODCALLTYPE *ClearCurrentException )(
ICorDebugThread * This);
-
- HRESULT ( STDMETHODCALLTYPE *CreateStepper )(
+
+ HRESULT ( STDMETHODCALLTYPE *CreateStepper )(
ICorDebugThread * This,
/* [out] */ ICorDebugStepper **ppStepper);
-
- HRESULT ( STDMETHODCALLTYPE *EnumerateChains )(
+
+ HRESULT ( STDMETHODCALLTYPE *EnumerateChains )(
ICorDebugThread * This,
/* [out] */ ICorDebugChainEnum **ppChains);
-
- HRESULT ( STDMETHODCALLTYPE *GetActiveChain )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetActiveChain )(
ICorDebugThread * This,
/* [out] */ ICorDebugChain **ppChain);
-
- HRESULT ( STDMETHODCALLTYPE *GetActiveFrame )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetActiveFrame )(
ICorDebugThread * This,
/* [out] */ ICorDebugFrame **ppFrame);
-
- HRESULT ( STDMETHODCALLTYPE *GetRegisterSet )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetRegisterSet )(
ICorDebugThread * This,
/* [out] */ ICorDebugRegisterSet **ppRegisters);
-
- HRESULT ( STDMETHODCALLTYPE *CreateEval )(
+
+ HRESULT ( STDMETHODCALLTYPE *CreateEval )(
ICorDebugThread * This,
/* [out] */ ICorDebugEval **ppEval);
-
- HRESULT ( STDMETHODCALLTYPE *GetObject )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetObject )(
ICorDebugThread * This,
/* [out] */ ICorDebugValue **ppObject);
-
+
END_INTERFACE
} ICorDebugThreadVtbl;
@@ -9593,68 +9602,68 @@ EXTERN_C const IID IID_ICorDebugThread;
CONST_VTBL struct ICorDebugThreadVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugThread_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugThread_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugThread_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugThread_GetProcess(This,ppProcess) \
- ( (This)->lpVtbl -> GetProcess(This,ppProcess) )
+ ( (This)->lpVtbl -> GetProcess(This,ppProcess) )
#define ICorDebugThread_GetID(This,pdwThreadId) \
- ( (This)->lpVtbl -> GetID(This,pdwThreadId) )
+ ( (This)->lpVtbl -> GetID(This,pdwThreadId) )
#define ICorDebugThread_GetHandle(This,phThreadHandle) \
- ( (This)->lpVtbl -> GetHandle(This,phThreadHandle) )
+ ( (This)->lpVtbl -> GetHandle(This,phThreadHandle) )
#define ICorDebugThread_GetAppDomain(This,ppAppDomain) \
- ( (This)->lpVtbl -> GetAppDomain(This,ppAppDomain) )
+ ( (This)->lpVtbl -> GetAppDomain(This,ppAppDomain) )
#define ICorDebugThread_SetDebugState(This,state) \
- ( (This)->lpVtbl -> SetDebugState(This,state) )
+ ( (This)->lpVtbl -> SetDebugState(This,state) )
#define ICorDebugThread_GetDebugState(This,pState) \
- ( (This)->lpVtbl -> GetDebugState(This,pState) )
+ ( (This)->lpVtbl -> GetDebugState(This,pState) )
#define ICorDebugThread_GetUserState(This,pState) \
- ( (This)->lpVtbl -> GetUserState(This,pState) )
+ ( (This)->lpVtbl -> GetUserState(This,pState) )
#define ICorDebugThread_GetCurrentException(This,ppExceptionObject) \
- ( (This)->lpVtbl -> GetCurrentException(This,ppExceptionObject) )
+ ( (This)->lpVtbl -> GetCurrentException(This,ppExceptionObject) )
#define ICorDebugThread_ClearCurrentException(This) \
- ( (This)->lpVtbl -> ClearCurrentException(This) )
+ ( (This)->lpVtbl -> ClearCurrentException(This) )
#define ICorDebugThread_CreateStepper(This,ppStepper) \
- ( (This)->lpVtbl -> CreateStepper(This,ppStepper) )
+ ( (This)->lpVtbl -> CreateStepper(This,ppStepper) )
#define ICorDebugThread_EnumerateChains(This,ppChains) \
- ( (This)->lpVtbl -> EnumerateChains(This,ppChains) )
+ ( (This)->lpVtbl -> EnumerateChains(This,ppChains) )
#define ICorDebugThread_GetActiveChain(This,ppChain) \
- ( (This)->lpVtbl -> GetActiveChain(This,ppChain) )
+ ( (This)->lpVtbl -> GetActiveChain(This,ppChain) )
#define ICorDebugThread_GetActiveFrame(This,ppFrame) \
- ( (This)->lpVtbl -> GetActiveFrame(This,ppFrame) )
+ ( (This)->lpVtbl -> GetActiveFrame(This,ppFrame) )
#define ICorDebugThread_GetRegisterSet(This,ppRegisters) \
- ( (This)->lpVtbl -> GetRegisterSet(This,ppRegisters) )
+ ( (This)->lpVtbl -> GetRegisterSet(This,ppRegisters) )
#define ICorDebugThread_CreateEval(This,ppEval) \
- ( (This)->lpVtbl -> CreateEval(This,ppEval) )
+ ( (This)->lpVtbl -> CreateEval(This,ppEval) )
#define ICorDebugThread_GetObject(This,ppObject) \
- ( (This)->lpVtbl -> GetObject(This,ppObject) )
+ ( (This)->lpVtbl -> GetObject(This,ppObject) )
#endif /* COBJMACROS */
@@ -9671,7 +9680,7 @@ EXTERN_C const IID IID_ICorDebugThread;
#define __ICorDebugThread2_INTERFACE_DEFINED__
/* interface ICorDebugThread2 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
typedef struct _COR_ACTIVE_FUNCTION
{
@@ -9686,71 +9695,71 @@ typedef struct _COR_ACTIVE_FUNCTION
EXTERN_C const IID IID_ICorDebugThread2;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("2BD956D9-7B07-4bef-8A98-12AA862417C5")
ICorDebugThread2 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetActiveFunctions(
+ virtual HRESULT STDMETHODCALLTYPE GetActiveFunctions(
/* [in] */ ULONG32 cFunctions,
/* [out] */ ULONG32 *pcFunctions,
/* [length_is][size_is][out][in] */ COR_ACTIVE_FUNCTION pFunctions[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetConnectionID(
+
+ virtual HRESULT STDMETHODCALLTYPE GetConnectionID(
/* [out] */ CONNID *pdwConnectionId) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetTaskID(
+
+ virtual HRESULT STDMETHODCALLTYPE GetTaskID(
/* [out] */ TASKID *pTaskId) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetVolatileOSThreadID(
+
+ virtual HRESULT STDMETHODCALLTYPE GetVolatileOSThreadID(
/* [out] */ DWORD *pdwTid) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE InterceptCurrentException(
+
+ virtual HRESULT STDMETHODCALLTYPE InterceptCurrentException(
/* [in] */ ICorDebugFrame *pFrame) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugThread2Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugThread2 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugThread2 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugThread2 * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetActiveFunctions )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetActiveFunctions )(
ICorDebugThread2 * This,
/* [in] */ ULONG32 cFunctions,
/* [out] */ ULONG32 *pcFunctions,
/* [length_is][size_is][out][in] */ COR_ACTIVE_FUNCTION pFunctions[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetConnectionID )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetConnectionID )(
ICorDebugThread2 * This,
/* [out] */ CONNID *pdwConnectionId);
-
- HRESULT ( STDMETHODCALLTYPE *GetTaskID )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetTaskID )(
ICorDebugThread2 * This,
/* [out] */ TASKID *pTaskId);
-
- HRESULT ( STDMETHODCALLTYPE *GetVolatileOSThreadID )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetVolatileOSThreadID )(
ICorDebugThread2 * This,
/* [out] */ DWORD *pdwTid);
-
- HRESULT ( STDMETHODCALLTYPE *InterceptCurrentException )(
+
+ HRESULT ( STDMETHODCALLTYPE *InterceptCurrentException )(
ICorDebugThread2 * This,
/* [in] */ ICorDebugFrame *pFrame);
-
+
END_INTERFACE
} ICorDebugThread2Vtbl;
@@ -9759,35 +9768,35 @@ EXTERN_C const IID IID_ICorDebugThread2;
CONST_VTBL struct ICorDebugThread2Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugThread2_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugThread2_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugThread2_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugThread2_GetActiveFunctions(This,cFunctions,pcFunctions,pFunctions) \
- ( (This)->lpVtbl -> GetActiveFunctions(This,cFunctions,pcFunctions,pFunctions) )
+ ( (This)->lpVtbl -> GetActiveFunctions(This,cFunctions,pcFunctions,pFunctions) )
#define ICorDebugThread2_GetConnectionID(This,pdwConnectionId) \
- ( (This)->lpVtbl -> GetConnectionID(This,pdwConnectionId) )
+ ( (This)->lpVtbl -> GetConnectionID(This,pdwConnectionId) )
#define ICorDebugThread2_GetTaskID(This,pTaskId) \
- ( (This)->lpVtbl -> GetTaskID(This,pTaskId) )
+ ( (This)->lpVtbl -> GetTaskID(This,pTaskId) )
#define ICorDebugThread2_GetVolatileOSThreadID(This,pdwTid) \
- ( (This)->lpVtbl -> GetVolatileOSThreadID(This,pdwTid) )
+ ( (This)->lpVtbl -> GetVolatileOSThreadID(This,pdwTid) )
#define ICorDebugThread2_InterceptCurrentException(This,pFrame) \
- ( (This)->lpVtbl -> InterceptCurrentException(This,pFrame) )
+ ( (This)->lpVtbl -> InterceptCurrentException(This,pFrame) )
#endif /* COBJMACROS */
@@ -9804,56 +9813,56 @@ EXTERN_C const IID IID_ICorDebugThread2;
#define __ICorDebugThread3_INTERFACE_DEFINED__
/* interface ICorDebugThread3 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugThread3;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("F8544EC3-5E4E-46c7-8D3E-A52B8405B1F5")
ICorDebugThread3 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE CreateStackWalk(
+ virtual HRESULT STDMETHODCALLTYPE CreateStackWalk(
/* [out] */ ICorDebugStackWalk **ppStackWalk) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetActiveInternalFrames(
+
+ virtual HRESULT STDMETHODCALLTYPE GetActiveInternalFrames(
/* [in] */ ULONG32 cInternalFrames,
/* [out] */ ULONG32 *pcInternalFrames,
/* [length_is][size_is][out][in] */ ICorDebugInternalFrame2 *ppInternalFrames[ ]) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugThread3Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugThread3 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugThread3 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugThread3 * This);
-
- HRESULT ( STDMETHODCALLTYPE *CreateStackWalk )(
+
+ HRESULT ( STDMETHODCALLTYPE *CreateStackWalk )(
ICorDebugThread3 * This,
/* [out] */ ICorDebugStackWalk **ppStackWalk);
-
- HRESULT ( STDMETHODCALLTYPE *GetActiveInternalFrames )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetActiveInternalFrames )(
ICorDebugThread3 * This,
/* [in] */ ULONG32 cInternalFrames,
/* [out] */ ULONG32 *pcInternalFrames,
/* [length_is][size_is][out][in] */ ICorDebugInternalFrame2 *ppInternalFrames[ ]);
-
+
END_INTERFACE
} ICorDebugThread3Vtbl;
@@ -9862,26 +9871,26 @@ EXTERN_C const IID IID_ICorDebugThread3;
CONST_VTBL struct ICorDebugThread3Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugThread3_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugThread3_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugThread3_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugThread3_CreateStackWalk(This,ppStackWalk) \
- ( (This)->lpVtbl -> CreateStackWalk(This,ppStackWalk) )
+ ( (This)->lpVtbl -> CreateStackWalk(This,ppStackWalk) )
#define ICorDebugThread3_GetActiveInternalFrames(This,cInternalFrames,pcInternalFrames,ppInternalFrames) \
- ( (This)->lpVtbl -> GetActiveInternalFrames(This,cInternalFrames,pcInternalFrames,ppInternalFrames) )
+ ( (This)->lpVtbl -> GetActiveInternalFrames(This,cInternalFrames,pcInternalFrames,ppInternalFrames) )
#endif /* COBJMACROS */
@@ -9898,57 +9907,57 @@ EXTERN_C const IID IID_ICorDebugThread3;
#define __ICorDebugThread4_INTERFACE_DEFINED__
/* interface ICorDebugThread4 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugThread4;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("1A1F204B-1C66-4637-823F-3EE6C744A69C")
ICorDebugThread4 : public IUnknown
{
public:
virtual HRESULT STDMETHODCALLTYPE HasUnhandledException( void) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetBlockingObjects(
+
+ virtual HRESULT STDMETHODCALLTYPE GetBlockingObjects(
/* [out] */ ICorDebugBlockingObjectEnum **ppBlockingObjectEnum) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetCurrentCustomDebuggerNotification(
+
+ virtual HRESULT STDMETHODCALLTYPE GetCurrentCustomDebuggerNotification(
/* [out] */ ICorDebugValue **ppNotificationObject) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugThread4Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugThread4 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugThread4 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugThread4 * This);
-
- HRESULT ( STDMETHODCALLTYPE *HasUnhandledException )(
+
+ HRESULT ( STDMETHODCALLTYPE *HasUnhandledException )(
ICorDebugThread4 * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetBlockingObjects )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetBlockingObjects )(
ICorDebugThread4 * This,
/* [out] */ ICorDebugBlockingObjectEnum **ppBlockingObjectEnum);
-
- HRESULT ( STDMETHODCALLTYPE *GetCurrentCustomDebuggerNotification )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCurrentCustomDebuggerNotification )(
ICorDebugThread4 * This,
/* [out] */ ICorDebugValue **ppNotificationObject);
-
+
END_INTERFACE
} ICorDebugThread4Vtbl;
@@ -9957,29 +9966,29 @@ EXTERN_C const IID IID_ICorDebugThread4;
CONST_VTBL struct ICorDebugThread4Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugThread4_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugThread4_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugThread4_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugThread4_HasUnhandledException(This) \
- ( (This)->lpVtbl -> HasUnhandledException(This) )
+ ( (This)->lpVtbl -> HasUnhandledException(This) )
#define ICorDebugThread4_GetBlockingObjects(This,ppBlockingObjectEnum) \
- ( (This)->lpVtbl -> GetBlockingObjects(This,ppBlockingObjectEnum) )
+ ( (This)->lpVtbl -> GetBlockingObjects(This,ppBlockingObjectEnum) )
#define ICorDebugThread4_GetCurrentCustomDebuggerNotification(This,ppNotificationObject) \
- ( (This)->lpVtbl -> GetCurrentCustomDebuggerNotification(This,ppNotificationObject) )
+ ( (This)->lpVtbl -> GetCurrentCustomDebuggerNotification(This,ppNotificationObject) )
#endif /* COBJMACROS */
@@ -9992,13 +10001,95 @@ EXTERN_C const IID IID_ICorDebugThread4;
#endif /* __ICorDebugThread4_INTERFACE_DEFINED__ */
+#ifndef __ICorDebugThread5_INTERFACE_DEFINED__
+#define __ICorDebugThread5_INTERFACE_DEFINED__
+
+/* interface ICorDebugThread5 */
+/* [unique][uuid][local][object] */
+
+
+EXTERN_C const IID IID_ICorDebugThread5;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+
+ MIDL_INTERFACE("F98421C4-E506-4D24-916F-0237EE853EC6")
+ ICorDebugThread5 : public IUnknown
+ {
+ public:
+ virtual HRESULT STDMETHODCALLTYPE GetBytesAllocated(
+ /* [out] */ ULONG64 *pSohAllocatedBytes,
+ /* [out] */ ULONG64 *pUohAllocatedBytes) = 0;
+
+ };
+
+
+#else /* C style interface */
+
+ typedef struct ICorDebugThread5Vtbl
+ {
+ BEGIN_INTERFACE
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+ ICorDebugThread5 * This,
+ /* [in] */ REFIID riid,
+ /* [annotation][iid_is][out] */
+ _COM_Outptr_ void **ppvObject);
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
+ ICorDebugThread5 * This);
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
+ ICorDebugThread5 * This);
+
+ HRESULT ( STDMETHODCALLTYPE *GetBytesAllocated )(
+ ICorDebugThread5 * This,
+ /* [out] */ ULONG64 *pSohAllocatedBytes,
+ /* [out] */ ULONG64 *pUohAllocatedBytes);
+
+ END_INTERFACE
+ } ICorDebugThread5Vtbl;
+
+ interface ICorDebugThread5
+ {
+ CONST_VTBL struct ICorDebugThread5Vtbl *lpVtbl;
+ };
+
+
+
+#ifdef COBJMACROS
+
+
+#define ICorDebugThread5_QueryInterface(This,riid,ppvObject) \
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+
+#define ICorDebugThread5_AddRef(This) \
+ ( (This)->lpVtbl -> AddRef(This) )
+
+#define ICorDebugThread5_Release(This) \
+ ( (This)->lpVtbl -> Release(This) )
+
+
+#define ICorDebugThread5_GetBytesAllocated(This,pSohAllocatedBytes,pUohAllocatedBytes) \
+ ( (This)->lpVtbl -> GetBytesAllocated(This,pSohAllocatedBytes,pUohAllocatedBytes) )
+
+#endif /* COBJMACROS */
+
+
+#endif /* C style interface */
+
+
+
+
+#endif /* __ICorDebugThread5_INTERFACE_DEFINED__ */
+
+
#ifndef __ICorDebugStackWalk_INTERFACE_DEFINED__
#define __ICorDebugStackWalk_INTERFACE_DEFINED__
/* interface ICorDebugStackWalk */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
-typedef
+typedef
enum CorDebugSetContextFlag
{
SET_CONTEXT_FLAG_ACTIVE_FRAME = 0x1,
@@ -10009,68 +10100,68 @@ enum CorDebugSetContextFlag
EXTERN_C const IID IID_ICorDebugStackWalk;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("A0647DE9-55DE-4816-929C-385271C64CF7")
ICorDebugStackWalk : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetContext(
+ virtual HRESULT STDMETHODCALLTYPE GetContext(
/* [in] */ ULONG32 contextFlags,
/* [in] */ ULONG32 contextBufSize,
/* [out] */ ULONG32 *contextSize,
/* [size_is][out] */ BYTE contextBuf[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE SetContext(
+
+ virtual HRESULT STDMETHODCALLTYPE SetContext(
/* [in] */ CorDebugSetContextFlag flag,
/* [in] */ ULONG32 contextSize,
/* [size_is][in] */ BYTE context[ ]) = 0;
-
+
virtual HRESULT STDMETHODCALLTYPE Next( void) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetFrame(
+
+ virtual HRESULT STDMETHODCALLTYPE GetFrame(
/* [out] */ ICorDebugFrame **pFrame) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugStackWalkVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugStackWalk * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugStackWalk * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugStackWalk * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetContext )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetContext )(
ICorDebugStackWalk * This,
/* [in] */ ULONG32 contextFlags,
/* [in] */ ULONG32 contextBufSize,
/* [out] */ ULONG32 *contextSize,
/* [size_is][out] */ BYTE contextBuf[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *SetContext )(
+
+ HRESULT ( STDMETHODCALLTYPE *SetContext )(
ICorDebugStackWalk * This,
/* [in] */ CorDebugSetContextFlag flag,
/* [in] */ ULONG32 contextSize,
/* [size_is][in] */ BYTE context[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *Next )(
+
+ HRESULT ( STDMETHODCALLTYPE *Next )(
ICorDebugStackWalk * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetFrame )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetFrame )(
ICorDebugStackWalk * This,
/* [out] */ ICorDebugFrame **pFrame);
-
+
END_INTERFACE
} ICorDebugStackWalkVtbl;
@@ -10079,32 +10170,32 @@ EXTERN_C const IID IID_ICorDebugStackWalk;
CONST_VTBL struct ICorDebugStackWalkVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugStackWalk_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugStackWalk_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugStackWalk_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugStackWalk_GetContext(This,contextFlags,contextBufSize,contextSize,contextBuf) \
- ( (This)->lpVtbl -> GetContext(This,contextFlags,contextBufSize,contextSize,contextBuf) )
+ ( (This)->lpVtbl -> GetContext(This,contextFlags,contextBufSize,contextSize,contextBuf) )
#define ICorDebugStackWalk_SetContext(This,flag,contextSize,context) \
- ( (This)->lpVtbl -> SetContext(This,flag,contextSize,context) )
+ ( (This)->lpVtbl -> SetContext(This,flag,contextSize,context) )
#define ICorDebugStackWalk_Next(This) \
- ( (This)->lpVtbl -> Next(This) )
+ ( (This)->lpVtbl -> Next(This) )
#define ICorDebugStackWalk_GetFrame(This,pFrame) \
- ( (This)->lpVtbl -> GetFrame(This,pFrame) )
+ ( (This)->lpVtbl -> GetFrame(This,pFrame) )
#endif /* COBJMACROS */
@@ -10121,9 +10212,9 @@ EXTERN_C const IID IID_ICorDebugStackWalk;
#define __ICorDebugChain_INTERFACE_DEFINED__
/* interface ICorDebugChain */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
-typedef
+typedef
enum CorDebugChainReason
{
CHAIN_NONE = 0,
@@ -10145,118 +10236,118 @@ enum CorDebugChainReason
EXTERN_C const IID IID_ICorDebugChain;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("CC7BCAEE-8A68-11d2-983C-0000F808342D")
ICorDebugChain : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetThread(
+ virtual HRESULT STDMETHODCALLTYPE GetThread(
/* [out] */ ICorDebugThread **ppThread) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetStackRange(
+
+ virtual HRESULT STDMETHODCALLTYPE GetStackRange(
/* [out] */ CORDB_ADDRESS *pStart,
/* [out] */ CORDB_ADDRESS *pEnd) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetContext(
+
+ virtual HRESULT STDMETHODCALLTYPE GetContext(
/* [out] */ ICorDebugContext **ppContext) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetCaller(
+
+ virtual HRESULT STDMETHODCALLTYPE GetCaller(
/* [out] */ ICorDebugChain **ppChain) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetCallee(
+
+ virtual HRESULT STDMETHODCALLTYPE GetCallee(
/* [out] */ ICorDebugChain **ppChain) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetPrevious(
+
+ virtual HRESULT STDMETHODCALLTYPE GetPrevious(
/* [out] */ ICorDebugChain **ppChain) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetNext(
+
+ virtual HRESULT STDMETHODCALLTYPE GetNext(
/* [out] */ ICorDebugChain **ppChain) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE IsManaged(
+
+ virtual HRESULT STDMETHODCALLTYPE IsManaged(
/* [out] */ BOOL *pManaged) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE EnumerateFrames(
+
+ virtual HRESULT STDMETHODCALLTYPE EnumerateFrames(
/* [out] */ ICorDebugFrameEnum **ppFrames) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetActiveFrame(
+
+ virtual HRESULT STDMETHODCALLTYPE GetActiveFrame(
/* [out] */ ICorDebugFrame **ppFrame) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetRegisterSet(
+
+ virtual HRESULT STDMETHODCALLTYPE GetRegisterSet(
/* [out] */ ICorDebugRegisterSet **ppRegisters) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetReason(
+
+ virtual HRESULT STDMETHODCALLTYPE GetReason(
/* [out] */ CorDebugChainReason *pReason) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugChainVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugChain * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugChain * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugChain * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetThread )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetThread )(
ICorDebugChain * This,
/* [out] */ ICorDebugThread **ppThread);
-
- HRESULT ( STDMETHODCALLTYPE *GetStackRange )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetStackRange )(
ICorDebugChain * This,
/* [out] */ CORDB_ADDRESS *pStart,
/* [out] */ CORDB_ADDRESS *pEnd);
-
- HRESULT ( STDMETHODCALLTYPE *GetContext )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetContext )(
ICorDebugChain * This,
/* [out] */ ICorDebugContext **ppContext);
-
- HRESULT ( STDMETHODCALLTYPE *GetCaller )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCaller )(
ICorDebugChain * This,
/* [out] */ ICorDebugChain **ppChain);
-
- HRESULT ( STDMETHODCALLTYPE *GetCallee )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCallee )(
ICorDebugChain * This,
/* [out] */ ICorDebugChain **ppChain);
-
- HRESULT ( STDMETHODCALLTYPE *GetPrevious )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetPrevious )(
ICorDebugChain * This,
/* [out] */ ICorDebugChain **ppChain);
-
- HRESULT ( STDMETHODCALLTYPE *GetNext )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetNext )(
ICorDebugChain * This,
/* [out] */ ICorDebugChain **ppChain);
-
- HRESULT ( STDMETHODCALLTYPE *IsManaged )(
+
+ HRESULT ( STDMETHODCALLTYPE *IsManaged )(
ICorDebugChain * This,
/* [out] */ BOOL *pManaged);
-
- HRESULT ( STDMETHODCALLTYPE *EnumerateFrames )(
+
+ HRESULT ( STDMETHODCALLTYPE *EnumerateFrames )(
ICorDebugChain * This,
/* [out] */ ICorDebugFrameEnum **ppFrames);
-
- HRESULT ( STDMETHODCALLTYPE *GetActiveFrame )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetActiveFrame )(
ICorDebugChain * This,
/* [out] */ ICorDebugFrame **ppFrame);
-
- HRESULT ( STDMETHODCALLTYPE *GetRegisterSet )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetRegisterSet )(
ICorDebugChain * This,
/* [out] */ ICorDebugRegisterSet **ppRegisters);
-
- HRESULT ( STDMETHODCALLTYPE *GetReason )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetReason )(
ICorDebugChain * This,
/* [out] */ CorDebugChainReason *pReason);
-
+
END_INTERFACE
} ICorDebugChainVtbl;
@@ -10265,56 +10356,56 @@ EXTERN_C const IID IID_ICorDebugChain;
CONST_VTBL struct ICorDebugChainVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugChain_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugChain_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugChain_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugChain_GetThread(This,ppThread) \
- ( (This)->lpVtbl -> GetThread(This,ppThread) )
+ ( (This)->lpVtbl -> GetThread(This,ppThread) )
#define ICorDebugChain_GetStackRange(This,pStart,pEnd) \
- ( (This)->lpVtbl -> GetStackRange(This,pStart,pEnd) )
+ ( (This)->lpVtbl -> GetStackRange(This,pStart,pEnd) )
#define ICorDebugChain_GetContext(This,ppContext) \
- ( (This)->lpVtbl -> GetContext(This,ppContext) )
+ ( (This)->lpVtbl -> GetContext(This,ppContext) )
#define ICorDebugChain_GetCaller(This,ppChain) \
- ( (This)->lpVtbl -> GetCaller(This,ppChain) )
+ ( (This)->lpVtbl -> GetCaller(This,ppChain) )
#define ICorDebugChain_GetCallee(This,ppChain) \
- ( (This)->lpVtbl -> GetCallee(This,ppChain) )
+ ( (This)->lpVtbl -> GetCallee(This,ppChain) )
#define ICorDebugChain_GetPrevious(This,ppChain) \
- ( (This)->lpVtbl -> GetPrevious(This,ppChain) )
+ ( (This)->lpVtbl -> GetPrevious(This,ppChain) )
#define ICorDebugChain_GetNext(This,ppChain) \
- ( (This)->lpVtbl -> GetNext(This,ppChain) )
+ ( (This)->lpVtbl -> GetNext(This,ppChain) )
#define ICorDebugChain_IsManaged(This,pManaged) \
- ( (This)->lpVtbl -> IsManaged(This,pManaged) )
+ ( (This)->lpVtbl -> IsManaged(This,pManaged) )
#define ICorDebugChain_EnumerateFrames(This,ppFrames) \
- ( (This)->lpVtbl -> EnumerateFrames(This,ppFrames) )
+ ( (This)->lpVtbl -> EnumerateFrames(This,ppFrames) )
#define ICorDebugChain_GetActiveFrame(This,ppFrame) \
- ( (This)->lpVtbl -> GetActiveFrame(This,ppFrame) )
+ ( (This)->lpVtbl -> GetActiveFrame(This,ppFrame) )
#define ICorDebugChain_GetRegisterSet(This,ppRegisters) \
- ( (This)->lpVtbl -> GetRegisterSet(This,ppRegisters) )
+ ( (This)->lpVtbl -> GetRegisterSet(This,ppRegisters) )
#define ICorDebugChain_GetReason(This,pReason) \
- ( (This)->lpVtbl -> GetReason(This,pReason) )
+ ( (This)->lpVtbl -> GetReason(This,pReason) )
#endif /* COBJMACROS */
@@ -10331,96 +10422,96 @@ EXTERN_C const IID IID_ICorDebugChain;
#define __ICorDebugFrame_INTERFACE_DEFINED__
/* interface ICorDebugFrame */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugFrame;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("CC7BCAEF-8A68-11d2-983C-0000F808342D")
ICorDebugFrame : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetChain(
+ virtual HRESULT STDMETHODCALLTYPE GetChain(
/* [out] */ ICorDebugChain **ppChain) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetCode(
+
+ virtual HRESULT STDMETHODCALLTYPE GetCode(
/* [out] */ ICorDebugCode **ppCode) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetFunction(
+
+ virtual HRESULT STDMETHODCALLTYPE GetFunction(
/* [out] */ ICorDebugFunction **ppFunction) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetFunctionToken(
+
+ virtual HRESULT STDMETHODCALLTYPE GetFunctionToken(
/* [out] */ mdMethodDef *pToken) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetStackRange(
+
+ virtual HRESULT STDMETHODCALLTYPE GetStackRange(
/* [out] */ CORDB_ADDRESS *pStart,
/* [out] */ CORDB_ADDRESS *pEnd) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetCaller(
+
+ virtual HRESULT STDMETHODCALLTYPE GetCaller(
/* [out] */ ICorDebugFrame **ppFrame) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetCallee(
+
+ virtual HRESULT STDMETHODCALLTYPE GetCallee(
/* [out] */ ICorDebugFrame **ppFrame) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE CreateStepper(
+
+ virtual HRESULT STDMETHODCALLTYPE CreateStepper(
/* [out] */ ICorDebugStepper **ppStepper) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugFrameVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugFrame * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugFrame * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugFrame * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetChain )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetChain )(
ICorDebugFrame * This,
/* [out] */ ICorDebugChain **ppChain);
-
- HRESULT ( STDMETHODCALLTYPE *GetCode )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCode )(
ICorDebugFrame * This,
/* [out] */ ICorDebugCode **ppCode);
-
- HRESULT ( STDMETHODCALLTYPE *GetFunction )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetFunction )(
ICorDebugFrame * This,
/* [out] */ ICorDebugFunction **ppFunction);
-
- HRESULT ( STDMETHODCALLTYPE *GetFunctionToken )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetFunctionToken )(
ICorDebugFrame * This,
/* [out] */ mdMethodDef *pToken);
-
- HRESULT ( STDMETHODCALLTYPE *GetStackRange )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetStackRange )(
ICorDebugFrame * This,
/* [out] */ CORDB_ADDRESS *pStart,
/* [out] */ CORDB_ADDRESS *pEnd);
-
- HRESULT ( STDMETHODCALLTYPE *GetCaller )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCaller )(
ICorDebugFrame * This,
/* [out] */ ICorDebugFrame **ppFrame);
-
- HRESULT ( STDMETHODCALLTYPE *GetCallee )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCallee )(
ICorDebugFrame * This,
/* [out] */ ICorDebugFrame **ppFrame);
-
- HRESULT ( STDMETHODCALLTYPE *CreateStepper )(
+
+ HRESULT ( STDMETHODCALLTYPE *CreateStepper )(
ICorDebugFrame * This,
/* [out] */ ICorDebugStepper **ppStepper);
-
+
END_INTERFACE
} ICorDebugFrameVtbl;
@@ -10429,44 +10520,44 @@ EXTERN_C const IID IID_ICorDebugFrame;
CONST_VTBL struct ICorDebugFrameVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugFrame_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugFrame_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugFrame_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugFrame_GetChain(This,ppChain) \
- ( (This)->lpVtbl -> GetChain(This,ppChain) )
+ ( (This)->lpVtbl -> GetChain(This,ppChain) )
#define ICorDebugFrame_GetCode(This,ppCode) \
- ( (This)->lpVtbl -> GetCode(This,ppCode) )
+ ( (This)->lpVtbl -> GetCode(This,ppCode) )
#define ICorDebugFrame_GetFunction(This,ppFunction) \
- ( (This)->lpVtbl -> GetFunction(This,ppFunction) )
+ ( (This)->lpVtbl -> GetFunction(This,ppFunction) )
#define ICorDebugFrame_GetFunctionToken(This,pToken) \
- ( (This)->lpVtbl -> GetFunctionToken(This,pToken) )
+ ( (This)->lpVtbl -> GetFunctionToken(This,pToken) )
#define ICorDebugFrame_GetStackRange(This,pStart,pEnd) \
- ( (This)->lpVtbl -> GetStackRange(This,pStart,pEnd) )
+ ( (This)->lpVtbl -> GetStackRange(This,pStart,pEnd) )
#define ICorDebugFrame_GetCaller(This,ppFrame) \
- ( (This)->lpVtbl -> GetCaller(This,ppFrame) )
+ ( (This)->lpVtbl -> GetCaller(This,ppFrame) )
#define ICorDebugFrame_GetCallee(This,ppFrame) \
- ( (This)->lpVtbl -> GetCallee(This,ppFrame) )
+ ( (This)->lpVtbl -> GetCallee(This,ppFrame) )
#define ICorDebugFrame_CreateStepper(This,ppStepper) \
- ( (This)->lpVtbl -> CreateStepper(This,ppStepper) )
+ ( (This)->lpVtbl -> CreateStepper(This,ppStepper) )
#endif /* COBJMACROS */
@@ -10483,9 +10574,9 @@ EXTERN_C const IID IID_ICorDebugFrame;
#define __ICorDebugInternalFrame_INTERFACE_DEFINED__
/* interface ICorDebugInternalFrame */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
-typedef
+typedef
enum CorDebugInternalFrameType
{
STUBFRAME_NONE = 0,
@@ -10505,72 +10596,72 @@ enum CorDebugInternalFrameType
EXTERN_C const IID IID_ICorDebugInternalFrame;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("B92CC7F7-9D2D-45c4-BC2B-621FCC9DFBF4")
ICorDebugInternalFrame : public ICorDebugFrame
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetFrameType(
+ virtual HRESULT STDMETHODCALLTYPE GetFrameType(
/* [out] */ CorDebugInternalFrameType *pType) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugInternalFrameVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugInternalFrame * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugInternalFrame * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugInternalFrame * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetChain )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetChain )(
ICorDebugInternalFrame * This,
/* [out] */ ICorDebugChain **ppChain);
-
- HRESULT ( STDMETHODCALLTYPE *GetCode )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCode )(
ICorDebugInternalFrame * This,
/* [out] */ ICorDebugCode **ppCode);
-
- HRESULT ( STDMETHODCALLTYPE *GetFunction )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetFunction )(
ICorDebugInternalFrame * This,
/* [out] */ ICorDebugFunction **ppFunction);
-
- HRESULT ( STDMETHODCALLTYPE *GetFunctionToken )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetFunctionToken )(
ICorDebugInternalFrame * This,
/* [out] */ mdMethodDef *pToken);
-
- HRESULT ( STDMETHODCALLTYPE *GetStackRange )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetStackRange )(
ICorDebugInternalFrame * This,
/* [out] */ CORDB_ADDRESS *pStart,
/* [out] */ CORDB_ADDRESS *pEnd);
-
- HRESULT ( STDMETHODCALLTYPE *GetCaller )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCaller )(
ICorDebugInternalFrame * This,
/* [out] */ ICorDebugFrame **ppFrame);
-
- HRESULT ( STDMETHODCALLTYPE *GetCallee )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCallee )(
ICorDebugInternalFrame * This,
/* [out] */ ICorDebugFrame **ppFrame);
-
- HRESULT ( STDMETHODCALLTYPE *CreateStepper )(
+
+ HRESULT ( STDMETHODCALLTYPE *CreateStepper )(
ICorDebugInternalFrame * This,
/* [out] */ ICorDebugStepper **ppStepper);
-
- HRESULT ( STDMETHODCALLTYPE *GetFrameType )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetFrameType )(
ICorDebugInternalFrame * This,
/* [out] */ CorDebugInternalFrameType *pType);
-
+
END_INTERFACE
} ICorDebugInternalFrameVtbl;
@@ -10579,48 +10670,48 @@ EXTERN_C const IID IID_ICorDebugInternalFrame;
CONST_VTBL struct ICorDebugInternalFrameVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugInternalFrame_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugInternalFrame_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugInternalFrame_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugInternalFrame_GetChain(This,ppChain) \
- ( (This)->lpVtbl -> GetChain(This,ppChain) )
+ ( (This)->lpVtbl -> GetChain(This,ppChain) )
#define ICorDebugInternalFrame_GetCode(This,ppCode) \
- ( (This)->lpVtbl -> GetCode(This,ppCode) )
+ ( (This)->lpVtbl -> GetCode(This,ppCode) )
#define ICorDebugInternalFrame_GetFunction(This,ppFunction) \
- ( (This)->lpVtbl -> GetFunction(This,ppFunction) )
+ ( (This)->lpVtbl -> GetFunction(This,ppFunction) )
#define ICorDebugInternalFrame_GetFunctionToken(This,pToken) \
- ( (This)->lpVtbl -> GetFunctionToken(This,pToken) )
+ ( (This)->lpVtbl -> GetFunctionToken(This,pToken) )
#define ICorDebugInternalFrame_GetStackRange(This,pStart,pEnd) \
- ( (This)->lpVtbl -> GetStackRange(This,pStart,pEnd) )
+ ( (This)->lpVtbl -> GetStackRange(This,pStart,pEnd) )
#define ICorDebugInternalFrame_GetCaller(This,ppFrame) \
- ( (This)->lpVtbl -> GetCaller(This,ppFrame) )
+ ( (This)->lpVtbl -> GetCaller(This,ppFrame) )
#define ICorDebugInternalFrame_GetCallee(This,ppFrame) \
- ( (This)->lpVtbl -> GetCallee(This,ppFrame) )
+ ( (This)->lpVtbl -> GetCallee(This,ppFrame) )
#define ICorDebugInternalFrame_CreateStepper(This,ppStepper) \
- ( (This)->lpVtbl -> CreateStepper(This,ppStepper) )
+ ( (This)->lpVtbl -> CreateStepper(This,ppStepper) )
#define ICorDebugInternalFrame_GetFrameType(This,pType) \
- ( (This)->lpVtbl -> GetFrameType(This,pType) )
+ ( (This)->lpVtbl -> GetFrameType(This,pType) )
#endif /* COBJMACROS */
@@ -10637,54 +10728,54 @@ EXTERN_C const IID IID_ICorDebugInternalFrame;
#define __ICorDebugInternalFrame2_INTERFACE_DEFINED__
/* interface ICorDebugInternalFrame2 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugInternalFrame2;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("C0815BDC-CFAB-447e-A779-C116B454EB5B")
ICorDebugInternalFrame2 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetAddress(
+ virtual HRESULT STDMETHODCALLTYPE GetAddress(
/* [out] */ CORDB_ADDRESS *pAddress) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE IsCloserToLeaf(
+
+ virtual HRESULT STDMETHODCALLTYPE IsCloserToLeaf(
/* [in] */ ICorDebugFrame *pFrameToCompare,
/* [out] */ BOOL *pIsCloser) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugInternalFrame2Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugInternalFrame2 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugInternalFrame2 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugInternalFrame2 * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetAddress )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetAddress )(
ICorDebugInternalFrame2 * This,
/* [out] */ CORDB_ADDRESS *pAddress);
-
- HRESULT ( STDMETHODCALLTYPE *IsCloserToLeaf )(
+
+ HRESULT ( STDMETHODCALLTYPE *IsCloserToLeaf )(
ICorDebugInternalFrame2 * This,
/* [in] */ ICorDebugFrame *pFrameToCompare,
/* [out] */ BOOL *pIsCloser);
-
+
END_INTERFACE
} ICorDebugInternalFrame2Vtbl;
@@ -10693,26 +10784,26 @@ EXTERN_C const IID IID_ICorDebugInternalFrame2;
CONST_VTBL struct ICorDebugInternalFrame2Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugInternalFrame2_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugInternalFrame2_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugInternalFrame2_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugInternalFrame2_GetAddress(This,pAddress) \
- ( (This)->lpVtbl -> GetAddress(This,pAddress) )
+ ( (This)->lpVtbl -> GetAddress(This,pAddress) )
#define ICorDebugInternalFrame2_IsCloserToLeaf(This,pFrameToCompare,pIsCloser) \
- ( (This)->lpVtbl -> IsCloserToLeaf(This,pFrameToCompare,pIsCloser) )
+ ( (This)->lpVtbl -> IsCloserToLeaf(This,pFrameToCompare,pIsCloser) )
#endif /* COBJMACROS */
@@ -10729,9 +10820,9 @@ EXTERN_C const IID IID_ICorDebugInternalFrame2;
#define __ICorDebugILFrame_INTERFACE_DEFINED__
/* interface ICorDebugILFrame */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
-typedef
+typedef
enum CorDebugMappingResult
{
MAPPING_PROLOG = 0x1,
@@ -10746,136 +10837,136 @@ enum CorDebugMappingResult
EXTERN_C const IID IID_ICorDebugILFrame;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("03E26311-4F76-11d3-88C6-006097945418")
ICorDebugILFrame : public ICorDebugFrame
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetIP(
+ virtual HRESULT STDMETHODCALLTYPE GetIP(
/* [out] */ ULONG32 *pnOffset,
/* [out] */ CorDebugMappingResult *pMappingResult) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE SetIP(
+
+ virtual HRESULT STDMETHODCALLTYPE SetIP(
/* [in] */ ULONG32 nOffset) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE EnumerateLocalVariables(
+
+ virtual HRESULT STDMETHODCALLTYPE EnumerateLocalVariables(
/* [out] */ ICorDebugValueEnum **ppValueEnum) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetLocalVariable(
+
+ virtual HRESULT STDMETHODCALLTYPE GetLocalVariable(
/* [in] */ DWORD dwIndex,
/* [out] */ ICorDebugValue **ppValue) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE EnumerateArguments(
+
+ virtual HRESULT STDMETHODCALLTYPE EnumerateArguments(
/* [out] */ ICorDebugValueEnum **ppValueEnum) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetArgument(
+
+ virtual HRESULT STDMETHODCALLTYPE GetArgument(
/* [in] */ DWORD dwIndex,
/* [out] */ ICorDebugValue **ppValue) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetStackDepth(
+
+ virtual HRESULT STDMETHODCALLTYPE GetStackDepth(
/* [out] */ ULONG32 *pDepth) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetStackValue(
+
+ virtual HRESULT STDMETHODCALLTYPE GetStackValue(
/* [in] */ DWORD dwIndex,
/* [out] */ ICorDebugValue **ppValue) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE CanSetIP(
+
+ virtual HRESULT STDMETHODCALLTYPE CanSetIP(
/* [in] */ ULONG32 nOffset) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugILFrameVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugILFrame * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugILFrame * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugILFrame * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetChain )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetChain )(
ICorDebugILFrame * This,
/* [out] */ ICorDebugChain **ppChain);
-
- HRESULT ( STDMETHODCALLTYPE *GetCode )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCode )(
ICorDebugILFrame * This,
/* [out] */ ICorDebugCode **ppCode);
-
- HRESULT ( STDMETHODCALLTYPE *GetFunction )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetFunction )(
ICorDebugILFrame * This,
/* [out] */ ICorDebugFunction **ppFunction);
-
- HRESULT ( STDMETHODCALLTYPE *GetFunctionToken )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetFunctionToken )(
ICorDebugILFrame * This,
/* [out] */ mdMethodDef *pToken);
-
- HRESULT ( STDMETHODCALLTYPE *GetStackRange )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetStackRange )(
ICorDebugILFrame * This,
/* [out] */ CORDB_ADDRESS *pStart,
/* [out] */ CORDB_ADDRESS *pEnd);
-
- HRESULT ( STDMETHODCALLTYPE *GetCaller )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCaller )(
ICorDebugILFrame * This,
/* [out] */ ICorDebugFrame **ppFrame);
-
- HRESULT ( STDMETHODCALLTYPE *GetCallee )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCallee )(
ICorDebugILFrame * This,
/* [out] */ ICorDebugFrame **ppFrame);
-
- HRESULT ( STDMETHODCALLTYPE *CreateStepper )(
+
+ HRESULT ( STDMETHODCALLTYPE *CreateStepper )(
ICorDebugILFrame * This,
/* [out] */ ICorDebugStepper **ppStepper);
-
- HRESULT ( STDMETHODCALLTYPE *GetIP )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetIP )(
ICorDebugILFrame * This,
/* [out] */ ULONG32 *pnOffset,
/* [out] */ CorDebugMappingResult *pMappingResult);
-
- HRESULT ( STDMETHODCALLTYPE *SetIP )(
+
+ HRESULT ( STDMETHODCALLTYPE *SetIP )(
ICorDebugILFrame * This,
/* [in] */ ULONG32 nOffset);
-
- HRESULT ( STDMETHODCALLTYPE *EnumerateLocalVariables )(
+
+ HRESULT ( STDMETHODCALLTYPE *EnumerateLocalVariables )(
ICorDebugILFrame * This,
/* [out] */ ICorDebugValueEnum **ppValueEnum);
-
- HRESULT ( STDMETHODCALLTYPE *GetLocalVariable )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetLocalVariable )(
ICorDebugILFrame * This,
/* [in] */ DWORD dwIndex,
/* [out] */ ICorDebugValue **ppValue);
-
- HRESULT ( STDMETHODCALLTYPE *EnumerateArguments )(
+
+ HRESULT ( STDMETHODCALLTYPE *EnumerateArguments )(
ICorDebugILFrame * This,
/* [out] */ ICorDebugValueEnum **ppValueEnum);
-
- HRESULT ( STDMETHODCALLTYPE *GetArgument )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetArgument )(
ICorDebugILFrame * This,
/* [in] */ DWORD dwIndex,
/* [out] */ ICorDebugValue **ppValue);
-
- HRESULT ( STDMETHODCALLTYPE *GetStackDepth )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetStackDepth )(
ICorDebugILFrame * This,
/* [out] */ ULONG32 *pDepth);
-
- HRESULT ( STDMETHODCALLTYPE *GetStackValue )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetStackValue )(
ICorDebugILFrame * This,
/* [in] */ DWORD dwIndex,
/* [out] */ ICorDebugValue **ppValue);
-
- HRESULT ( STDMETHODCALLTYPE *CanSetIP )(
+
+ HRESULT ( STDMETHODCALLTYPE *CanSetIP )(
ICorDebugILFrame * This,
/* [in] */ ULONG32 nOffset);
-
+
END_INTERFACE
} ICorDebugILFrameVtbl;
@@ -10884,72 +10975,72 @@ EXTERN_C const IID IID_ICorDebugILFrame;
CONST_VTBL struct ICorDebugILFrameVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugILFrame_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugILFrame_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugILFrame_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugILFrame_GetChain(This,ppChain) \
- ( (This)->lpVtbl -> GetChain(This,ppChain) )
+ ( (This)->lpVtbl -> GetChain(This,ppChain) )
#define ICorDebugILFrame_GetCode(This,ppCode) \
- ( (This)->lpVtbl -> GetCode(This,ppCode) )
+ ( (This)->lpVtbl -> GetCode(This,ppCode) )
#define ICorDebugILFrame_GetFunction(This,ppFunction) \
- ( (This)->lpVtbl -> GetFunction(This,ppFunction) )
+ ( (This)->lpVtbl -> GetFunction(This,ppFunction) )
#define ICorDebugILFrame_GetFunctionToken(This,pToken) \
- ( (This)->lpVtbl -> GetFunctionToken(This,pToken) )
+ ( (This)->lpVtbl -> GetFunctionToken(This,pToken) )
#define ICorDebugILFrame_GetStackRange(This,pStart,pEnd) \
- ( (This)->lpVtbl -> GetStackRange(This,pStart,pEnd) )
+ ( (This)->lpVtbl -> GetStackRange(This,pStart,pEnd) )
#define ICorDebugILFrame_GetCaller(This,ppFrame) \
- ( (This)->lpVtbl -> GetCaller(This,ppFrame) )
+ ( (This)->lpVtbl -> GetCaller(This,ppFrame) )
#define ICorDebugILFrame_GetCallee(This,ppFrame) \
- ( (This)->lpVtbl -> GetCallee(This,ppFrame) )
+ ( (This)->lpVtbl -> GetCallee(This,ppFrame) )
#define ICorDebugILFrame_CreateStepper(This,ppStepper) \
- ( (This)->lpVtbl -> CreateStepper(This,ppStepper) )
+ ( (This)->lpVtbl -> CreateStepper(This,ppStepper) )
#define ICorDebugILFrame_GetIP(This,pnOffset,pMappingResult) \
- ( (This)->lpVtbl -> GetIP(This,pnOffset,pMappingResult) )
+ ( (This)->lpVtbl -> GetIP(This,pnOffset,pMappingResult) )
#define ICorDebugILFrame_SetIP(This,nOffset) \
- ( (This)->lpVtbl -> SetIP(This,nOffset) )
+ ( (This)->lpVtbl -> SetIP(This,nOffset) )
#define ICorDebugILFrame_EnumerateLocalVariables(This,ppValueEnum) \
- ( (This)->lpVtbl -> EnumerateLocalVariables(This,ppValueEnum) )
+ ( (This)->lpVtbl -> EnumerateLocalVariables(This,ppValueEnum) )
#define ICorDebugILFrame_GetLocalVariable(This,dwIndex,ppValue) \
- ( (This)->lpVtbl -> GetLocalVariable(This,dwIndex,ppValue) )
+ ( (This)->lpVtbl -> GetLocalVariable(This,dwIndex,ppValue) )
#define ICorDebugILFrame_EnumerateArguments(This,ppValueEnum) \
- ( (This)->lpVtbl -> EnumerateArguments(This,ppValueEnum) )
+ ( (This)->lpVtbl -> EnumerateArguments(This,ppValueEnum) )
#define ICorDebugILFrame_GetArgument(This,dwIndex,ppValue) \
- ( (This)->lpVtbl -> GetArgument(This,dwIndex,ppValue) )
+ ( (This)->lpVtbl -> GetArgument(This,dwIndex,ppValue) )
#define ICorDebugILFrame_GetStackDepth(This,pDepth) \
- ( (This)->lpVtbl -> GetStackDepth(This,pDepth) )
+ ( (This)->lpVtbl -> GetStackDepth(This,pDepth) )
#define ICorDebugILFrame_GetStackValue(This,dwIndex,ppValue) \
- ( (This)->lpVtbl -> GetStackValue(This,dwIndex,ppValue) )
+ ( (This)->lpVtbl -> GetStackValue(This,dwIndex,ppValue) )
#define ICorDebugILFrame_CanSetIP(This,nOffset) \
- ( (This)->lpVtbl -> CanSetIP(This,nOffset) )
+ ( (This)->lpVtbl -> CanSetIP(This,nOffset) )
#endif /* COBJMACROS */
@@ -10966,52 +11057,52 @@ EXTERN_C const IID IID_ICorDebugILFrame;
#define __ICorDebugILFrame2_INTERFACE_DEFINED__
/* interface ICorDebugILFrame2 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugILFrame2;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("5D88A994-6C30-479b-890F-BCEF88B129A5")
ICorDebugILFrame2 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE RemapFunction(
+ virtual HRESULT STDMETHODCALLTYPE RemapFunction(
/* [in] */ ULONG32 newILOffset) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE EnumerateTypeParameters(
+
+ virtual HRESULT STDMETHODCALLTYPE EnumerateTypeParameters(
/* [out] */ ICorDebugTypeEnum **ppTyParEnum) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugILFrame2Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugILFrame2 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugILFrame2 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugILFrame2 * This);
-
- HRESULT ( STDMETHODCALLTYPE *RemapFunction )(
+
+ HRESULT ( STDMETHODCALLTYPE *RemapFunction )(
ICorDebugILFrame2 * This,
/* [in] */ ULONG32 newILOffset);
-
- HRESULT ( STDMETHODCALLTYPE *EnumerateTypeParameters )(
+
+ HRESULT ( STDMETHODCALLTYPE *EnumerateTypeParameters )(
ICorDebugILFrame2 * This,
/* [out] */ ICorDebugTypeEnum **ppTyParEnum);
-
+
END_INTERFACE
} ICorDebugILFrame2Vtbl;
@@ -11020,26 +11111,26 @@ EXTERN_C const IID IID_ICorDebugILFrame2;
CONST_VTBL struct ICorDebugILFrame2Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugILFrame2_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugILFrame2_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugILFrame2_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugILFrame2_RemapFunction(This,newILOffset) \
- ( (This)->lpVtbl -> RemapFunction(This,newILOffset) )
+ ( (This)->lpVtbl -> RemapFunction(This,newILOffset) )
#define ICorDebugILFrame2_EnumerateTypeParameters(This,ppTyParEnum) \
- ( (This)->lpVtbl -> EnumerateTypeParameters(This,ppTyParEnum) )
+ ( (This)->lpVtbl -> EnumerateTypeParameters(This,ppTyParEnum) )
#endif /* COBJMACROS */
@@ -11056,47 +11147,47 @@ EXTERN_C const IID IID_ICorDebugILFrame2;
#define __ICorDebugILFrame3_INTERFACE_DEFINED__
/* interface ICorDebugILFrame3 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugILFrame3;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("9A9E2ED6-04DF-4FE0-BB50-CAB64126AD24")
ICorDebugILFrame3 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetReturnValueForILOffset(
+ virtual HRESULT STDMETHODCALLTYPE GetReturnValueForILOffset(
ULONG32 ILoffset,
/* [out] */ ICorDebugValue **ppReturnValue) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugILFrame3Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugILFrame3 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugILFrame3 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugILFrame3 * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetReturnValueForILOffset )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetReturnValueForILOffset )(
ICorDebugILFrame3 * This,
ULONG32 ILoffset,
/* [out] */ ICorDebugValue **ppReturnValue);
-
+
END_INTERFACE
} ICorDebugILFrame3Vtbl;
@@ -11105,23 +11196,23 @@ EXTERN_C const IID IID_ICorDebugILFrame3;
CONST_VTBL struct ICorDebugILFrame3Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugILFrame3_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugILFrame3_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugILFrame3_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugILFrame3_GetReturnValueForILOffset(This,ILoffset,ppReturnValue) \
- ( (This)->lpVtbl -> GetReturnValueForILOffset(This,ILoffset,ppReturnValue) )
+ ( (This)->lpVtbl -> GetReturnValueForILOffset(This,ILoffset,ppReturnValue) )
#endif /* COBJMACROS */
@@ -11134,10 +11225,10 @@ EXTERN_C const IID IID_ICorDebugILFrame3;
#endif /* __ICorDebugILFrame3_INTERFACE_DEFINED__ */
-/* interface __MIDL_itf_cordebug_0000_0069 */
-/* [local] */
+/* interface __MIDL_itf_cordebug_0000_0070 */
+/* [local] */
-typedef
+typedef
enum ILCodeKind
{
ILCODE_ORIGINAL_IL = 0x1,
@@ -11146,74 +11237,74 @@ enum ILCodeKind
-extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0069_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0069_v0_0_s_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0070_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0070_v0_0_s_ifspec;
#ifndef __ICorDebugILFrame4_INTERFACE_DEFINED__
#define __ICorDebugILFrame4_INTERFACE_DEFINED__
/* interface ICorDebugILFrame4 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugILFrame4;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("AD914A30-C6D1-4AC5-9C5E-577F3BAA8A45")
ICorDebugILFrame4 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE EnumerateLocalVariablesEx(
+ virtual HRESULT STDMETHODCALLTYPE EnumerateLocalVariablesEx(
/* [in] */ ILCodeKind flags,
/* [out] */ ICorDebugValueEnum **ppValueEnum) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetLocalVariableEx(
+
+ virtual HRESULT STDMETHODCALLTYPE GetLocalVariableEx(
/* [in] */ ILCodeKind flags,
/* [in] */ DWORD dwIndex,
/* [out] */ ICorDebugValue **ppValue) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetCodeEx(
+
+ virtual HRESULT STDMETHODCALLTYPE GetCodeEx(
/* [in] */ ILCodeKind flags,
/* [out] */ ICorDebugCode **ppCode) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugILFrame4Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugILFrame4 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugILFrame4 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugILFrame4 * This);
-
- HRESULT ( STDMETHODCALLTYPE *EnumerateLocalVariablesEx )(
+
+ HRESULT ( STDMETHODCALLTYPE *EnumerateLocalVariablesEx )(
ICorDebugILFrame4 * This,
/* [in] */ ILCodeKind flags,
/* [out] */ ICorDebugValueEnum **ppValueEnum);
-
- HRESULT ( STDMETHODCALLTYPE *GetLocalVariableEx )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetLocalVariableEx )(
ICorDebugILFrame4 * This,
/* [in] */ ILCodeKind flags,
/* [in] */ DWORD dwIndex,
/* [out] */ ICorDebugValue **ppValue);
-
- HRESULT ( STDMETHODCALLTYPE *GetCodeEx )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCodeEx )(
ICorDebugILFrame4 * This,
/* [in] */ ILCodeKind flags,
/* [out] */ ICorDebugCode **ppCode);
-
+
END_INTERFACE
} ICorDebugILFrame4Vtbl;
@@ -11222,29 +11313,29 @@ EXTERN_C const IID IID_ICorDebugILFrame4;
CONST_VTBL struct ICorDebugILFrame4Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugILFrame4_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugILFrame4_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugILFrame4_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugILFrame4_EnumerateLocalVariablesEx(This,flags,ppValueEnum) \
- ( (This)->lpVtbl -> EnumerateLocalVariablesEx(This,flags,ppValueEnum) )
+ ( (This)->lpVtbl -> EnumerateLocalVariablesEx(This,flags,ppValueEnum) )
#define ICorDebugILFrame4_GetLocalVariableEx(This,flags,dwIndex,ppValue) \
- ( (This)->lpVtbl -> GetLocalVariableEx(This,flags,dwIndex,ppValue) )
+ ( (This)->lpVtbl -> GetLocalVariableEx(This,flags,dwIndex,ppValue) )
#define ICorDebugILFrame4_GetCodeEx(This,flags,ppCode) \
- ( (This)->lpVtbl -> GetCodeEx(This,flags,ppCode) )
+ ( (This)->lpVtbl -> GetCodeEx(This,flags,ppCode) )
#endif /* COBJMACROS */
@@ -11261,170 +11352,170 @@ EXTERN_C const IID IID_ICorDebugILFrame4;
#define __ICorDebugNativeFrame_INTERFACE_DEFINED__
/* interface ICorDebugNativeFrame */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugNativeFrame;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("03E26314-4F76-11d3-88C6-006097945418")
ICorDebugNativeFrame : public ICorDebugFrame
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetIP(
+ virtual HRESULT STDMETHODCALLTYPE GetIP(
/* [out] */ ULONG32 *pnOffset) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE SetIP(
+
+ virtual HRESULT STDMETHODCALLTYPE SetIP(
/* [in] */ ULONG32 nOffset) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetRegisterSet(
+
+ virtual HRESULT STDMETHODCALLTYPE GetRegisterSet(
/* [out] */ ICorDebugRegisterSet **ppRegisters) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetLocalRegisterValue(
+
+ virtual HRESULT STDMETHODCALLTYPE GetLocalRegisterValue(
/* [in] */ CorDebugRegister reg,
/* [in] */ ULONG cbSigBlob,
/* [in] */ PCCOR_SIGNATURE pvSigBlob,
/* [out] */ ICorDebugValue **ppValue) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetLocalDoubleRegisterValue(
+
+ virtual HRESULT STDMETHODCALLTYPE GetLocalDoubleRegisterValue(
/* [in] */ CorDebugRegister highWordReg,
/* [in] */ CorDebugRegister lowWordReg,
/* [in] */ ULONG cbSigBlob,
/* [in] */ PCCOR_SIGNATURE pvSigBlob,
/* [out] */ ICorDebugValue **ppValue) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetLocalMemoryValue(
+
+ virtual HRESULT STDMETHODCALLTYPE GetLocalMemoryValue(
/* [in] */ CORDB_ADDRESS address,
/* [in] */ ULONG cbSigBlob,
/* [in] */ PCCOR_SIGNATURE pvSigBlob,
/* [out] */ ICorDebugValue **ppValue) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetLocalRegisterMemoryValue(
+
+ virtual HRESULT STDMETHODCALLTYPE GetLocalRegisterMemoryValue(
/* [in] */ CorDebugRegister highWordReg,
/* [in] */ CORDB_ADDRESS lowWordAddress,
/* [in] */ ULONG cbSigBlob,
/* [in] */ PCCOR_SIGNATURE pvSigBlob,
/* [out] */ ICorDebugValue **ppValue) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetLocalMemoryRegisterValue(
+
+ virtual HRESULT STDMETHODCALLTYPE GetLocalMemoryRegisterValue(
/* [in] */ CORDB_ADDRESS highWordAddress,
/* [in] */ CorDebugRegister lowWordRegister,
/* [in] */ ULONG cbSigBlob,
/* [in] */ PCCOR_SIGNATURE pvSigBlob,
/* [out] */ ICorDebugValue **ppValue) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE CanSetIP(
+
+ virtual HRESULT STDMETHODCALLTYPE CanSetIP(
/* [in] */ ULONG32 nOffset) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugNativeFrameVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugNativeFrame * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugNativeFrame * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugNativeFrame * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetChain )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetChain )(
ICorDebugNativeFrame * This,
/* [out] */ ICorDebugChain **ppChain);
-
- HRESULT ( STDMETHODCALLTYPE *GetCode )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCode )(
ICorDebugNativeFrame * This,
/* [out] */ ICorDebugCode **ppCode);
-
- HRESULT ( STDMETHODCALLTYPE *GetFunction )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetFunction )(
ICorDebugNativeFrame * This,
/* [out] */ ICorDebugFunction **ppFunction);
-
- HRESULT ( STDMETHODCALLTYPE *GetFunctionToken )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetFunctionToken )(
ICorDebugNativeFrame * This,
/* [out] */ mdMethodDef *pToken);
-
- HRESULT ( STDMETHODCALLTYPE *GetStackRange )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetStackRange )(
ICorDebugNativeFrame * This,
/* [out] */ CORDB_ADDRESS *pStart,
/* [out] */ CORDB_ADDRESS *pEnd);
-
- HRESULT ( STDMETHODCALLTYPE *GetCaller )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCaller )(
ICorDebugNativeFrame * This,
/* [out] */ ICorDebugFrame **ppFrame);
-
- HRESULT ( STDMETHODCALLTYPE *GetCallee )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCallee )(
ICorDebugNativeFrame * This,
/* [out] */ ICorDebugFrame **ppFrame);
-
- HRESULT ( STDMETHODCALLTYPE *CreateStepper )(
+
+ HRESULT ( STDMETHODCALLTYPE *CreateStepper )(
ICorDebugNativeFrame * This,
/* [out] */ ICorDebugStepper **ppStepper);
-
- HRESULT ( STDMETHODCALLTYPE *GetIP )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetIP )(
ICorDebugNativeFrame * This,
/* [out] */ ULONG32 *pnOffset);
-
- HRESULT ( STDMETHODCALLTYPE *SetIP )(
+
+ HRESULT ( STDMETHODCALLTYPE *SetIP )(
ICorDebugNativeFrame * This,
/* [in] */ ULONG32 nOffset);
-
- HRESULT ( STDMETHODCALLTYPE *GetRegisterSet )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetRegisterSet )(
ICorDebugNativeFrame * This,
/* [out] */ ICorDebugRegisterSet **ppRegisters);
-
- HRESULT ( STDMETHODCALLTYPE *GetLocalRegisterValue )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetLocalRegisterValue )(
ICorDebugNativeFrame * This,
/* [in] */ CorDebugRegister reg,
/* [in] */ ULONG cbSigBlob,
/* [in] */ PCCOR_SIGNATURE pvSigBlob,
/* [out] */ ICorDebugValue **ppValue);
-
- HRESULT ( STDMETHODCALLTYPE *GetLocalDoubleRegisterValue )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetLocalDoubleRegisterValue )(
ICorDebugNativeFrame * This,
/* [in] */ CorDebugRegister highWordReg,
/* [in] */ CorDebugRegister lowWordReg,
/* [in] */ ULONG cbSigBlob,
/* [in] */ PCCOR_SIGNATURE pvSigBlob,
/* [out] */ ICorDebugValue **ppValue);
-
- HRESULT ( STDMETHODCALLTYPE *GetLocalMemoryValue )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetLocalMemoryValue )(
ICorDebugNativeFrame * This,
/* [in] */ CORDB_ADDRESS address,
/* [in] */ ULONG cbSigBlob,
/* [in] */ PCCOR_SIGNATURE pvSigBlob,
/* [out] */ ICorDebugValue **ppValue);
-
- HRESULT ( STDMETHODCALLTYPE *GetLocalRegisterMemoryValue )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetLocalRegisterMemoryValue )(
ICorDebugNativeFrame * This,
/* [in] */ CorDebugRegister highWordReg,
/* [in] */ CORDB_ADDRESS lowWordAddress,
/* [in] */ ULONG cbSigBlob,
/* [in] */ PCCOR_SIGNATURE pvSigBlob,
/* [out] */ ICorDebugValue **ppValue);
-
- HRESULT ( STDMETHODCALLTYPE *GetLocalMemoryRegisterValue )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetLocalMemoryRegisterValue )(
ICorDebugNativeFrame * This,
/* [in] */ CORDB_ADDRESS highWordAddress,
/* [in] */ CorDebugRegister lowWordRegister,
/* [in] */ ULONG cbSigBlob,
/* [in] */ PCCOR_SIGNATURE pvSigBlob,
/* [out] */ ICorDebugValue **ppValue);
-
- HRESULT ( STDMETHODCALLTYPE *CanSetIP )(
+
+ HRESULT ( STDMETHODCALLTYPE *CanSetIP )(
ICorDebugNativeFrame * This,
/* [in] */ ULONG32 nOffset);
-
+
END_INTERFACE
} ICorDebugNativeFrameVtbl;
@@ -11433,72 +11524,72 @@ EXTERN_C const IID IID_ICorDebugNativeFrame;
CONST_VTBL struct ICorDebugNativeFrameVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugNativeFrame_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugNativeFrame_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugNativeFrame_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugNativeFrame_GetChain(This,ppChain) \
- ( (This)->lpVtbl -> GetChain(This,ppChain) )
+ ( (This)->lpVtbl -> GetChain(This,ppChain) )
#define ICorDebugNativeFrame_GetCode(This,ppCode) \
- ( (This)->lpVtbl -> GetCode(This,ppCode) )
+ ( (This)->lpVtbl -> GetCode(This,ppCode) )
#define ICorDebugNativeFrame_GetFunction(This,ppFunction) \
- ( (This)->lpVtbl -> GetFunction(This,ppFunction) )
+ ( (This)->lpVtbl -> GetFunction(This,ppFunction) )
#define ICorDebugNativeFrame_GetFunctionToken(This,pToken) \
- ( (This)->lpVtbl -> GetFunctionToken(This,pToken) )
+ ( (This)->lpVtbl -> GetFunctionToken(This,pToken) )
#define ICorDebugNativeFrame_GetStackRange(This,pStart,pEnd) \
- ( (This)->lpVtbl -> GetStackRange(This,pStart,pEnd) )
+ ( (This)->lpVtbl -> GetStackRange(This,pStart,pEnd) )
#define ICorDebugNativeFrame_GetCaller(This,ppFrame) \
- ( (This)->lpVtbl -> GetCaller(This,ppFrame) )
+ ( (This)->lpVtbl -> GetCaller(This,ppFrame) )
#define ICorDebugNativeFrame_GetCallee(This,ppFrame) \
- ( (This)->lpVtbl -> GetCallee(This,ppFrame) )
+ ( (This)->lpVtbl -> GetCallee(This,ppFrame) )
#define ICorDebugNativeFrame_CreateStepper(This,ppStepper) \
- ( (This)->lpVtbl -> CreateStepper(This,ppStepper) )
+ ( (This)->lpVtbl -> CreateStepper(This,ppStepper) )
#define ICorDebugNativeFrame_GetIP(This,pnOffset) \
- ( (This)->lpVtbl -> GetIP(This,pnOffset) )
+ ( (This)->lpVtbl -> GetIP(This,pnOffset) )
#define ICorDebugNativeFrame_SetIP(This,nOffset) \
- ( (This)->lpVtbl -> SetIP(This,nOffset) )
+ ( (This)->lpVtbl -> SetIP(This,nOffset) )
#define ICorDebugNativeFrame_GetRegisterSet(This,ppRegisters) \
- ( (This)->lpVtbl -> GetRegisterSet(This,ppRegisters) )
+ ( (This)->lpVtbl -> GetRegisterSet(This,ppRegisters) )
#define ICorDebugNativeFrame_GetLocalRegisterValue(This,reg,cbSigBlob,pvSigBlob,ppValue) \
- ( (This)->lpVtbl -> GetLocalRegisterValue(This,reg,cbSigBlob,pvSigBlob,ppValue) )
+ ( (This)->lpVtbl -> GetLocalRegisterValue(This,reg,cbSigBlob,pvSigBlob,ppValue) )
#define ICorDebugNativeFrame_GetLocalDoubleRegisterValue(This,highWordReg,lowWordReg,cbSigBlob,pvSigBlob,ppValue) \
- ( (This)->lpVtbl -> GetLocalDoubleRegisterValue(This,highWordReg,lowWordReg,cbSigBlob,pvSigBlob,ppValue) )
+ ( (This)->lpVtbl -> GetLocalDoubleRegisterValue(This,highWordReg,lowWordReg,cbSigBlob,pvSigBlob,ppValue) )
#define ICorDebugNativeFrame_GetLocalMemoryValue(This,address,cbSigBlob,pvSigBlob,ppValue) \
- ( (This)->lpVtbl -> GetLocalMemoryValue(This,address,cbSigBlob,pvSigBlob,ppValue) )
+ ( (This)->lpVtbl -> GetLocalMemoryValue(This,address,cbSigBlob,pvSigBlob,ppValue) )
#define ICorDebugNativeFrame_GetLocalRegisterMemoryValue(This,highWordReg,lowWordAddress,cbSigBlob,pvSigBlob,ppValue) \
- ( (This)->lpVtbl -> GetLocalRegisterMemoryValue(This,highWordReg,lowWordAddress,cbSigBlob,pvSigBlob,ppValue) )
+ ( (This)->lpVtbl -> GetLocalRegisterMemoryValue(This,highWordReg,lowWordAddress,cbSigBlob,pvSigBlob,ppValue) )
#define ICorDebugNativeFrame_GetLocalMemoryRegisterValue(This,highWordAddress,lowWordRegister,cbSigBlob,pvSigBlob,ppValue) \
- ( (This)->lpVtbl -> GetLocalMemoryRegisterValue(This,highWordAddress,lowWordRegister,cbSigBlob,pvSigBlob,ppValue) )
+ ( (This)->lpVtbl -> GetLocalMemoryRegisterValue(This,highWordAddress,lowWordRegister,cbSigBlob,pvSigBlob,ppValue) )
#define ICorDebugNativeFrame_CanSetIP(This,nOffset) \
- ( (This)->lpVtbl -> CanSetIP(This,nOffset) )
+ ( (This)->lpVtbl -> CanSetIP(This,nOffset) )
#endif /* COBJMACROS */
@@ -11511,75 +11602,75 @@ EXTERN_C const IID IID_ICorDebugNativeFrame;
#endif /* __ICorDebugNativeFrame_INTERFACE_DEFINED__ */
-/* interface __MIDL_itf_cordebug_0000_0071 */
-/* [local] */
+/* interface __MIDL_itf_cordebug_0000_0072 */
+/* [local] */
#pragma warning(push)
-#pragma warning(disable:28718)
+#pragma warning(disable:28718)
-extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0071_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0071_v0_0_s_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0072_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0072_v0_0_s_ifspec;
#ifndef __ICorDebugNativeFrame2_INTERFACE_DEFINED__
#define __ICorDebugNativeFrame2_INTERFACE_DEFINED__
/* interface ICorDebugNativeFrame2 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugNativeFrame2;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("35389FF1-3684-4c55-A2EE-210F26C60E5E")
ICorDebugNativeFrame2 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE IsChild(
+ virtual HRESULT STDMETHODCALLTYPE IsChild(
/* [out] */ BOOL *pIsChild) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE IsMatchingParentFrame(
+
+ virtual HRESULT STDMETHODCALLTYPE IsMatchingParentFrame(
/* [in] */ ICorDebugNativeFrame2 *pPotentialParentFrame,
/* [out] */ BOOL *pIsParent) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetStackParameterSize(
+
+ virtual HRESULT STDMETHODCALLTYPE GetStackParameterSize(
/* [out] */ ULONG32 *pSize) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugNativeFrame2Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugNativeFrame2 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugNativeFrame2 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugNativeFrame2 * This);
-
- HRESULT ( STDMETHODCALLTYPE *IsChild )(
+
+ HRESULT ( STDMETHODCALLTYPE *IsChild )(
ICorDebugNativeFrame2 * This,
/* [out] */ BOOL *pIsChild);
-
- HRESULT ( STDMETHODCALLTYPE *IsMatchingParentFrame )(
+
+ HRESULT ( STDMETHODCALLTYPE *IsMatchingParentFrame )(
ICorDebugNativeFrame2 * This,
/* [in] */ ICorDebugNativeFrame2 *pPotentialParentFrame,
/* [out] */ BOOL *pIsParent);
-
- HRESULT ( STDMETHODCALLTYPE *GetStackParameterSize )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetStackParameterSize )(
ICorDebugNativeFrame2 * This,
/* [out] */ ULONG32 *pSize);
-
+
END_INTERFACE
} ICorDebugNativeFrame2Vtbl;
@@ -11588,29 +11679,29 @@ EXTERN_C const IID IID_ICorDebugNativeFrame2;
CONST_VTBL struct ICorDebugNativeFrame2Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugNativeFrame2_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugNativeFrame2_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugNativeFrame2_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugNativeFrame2_IsChild(This,pIsChild) \
- ( (This)->lpVtbl -> IsChild(This,pIsChild) )
+ ( (This)->lpVtbl -> IsChild(This,pIsChild) )
#define ICorDebugNativeFrame2_IsMatchingParentFrame(This,pPotentialParentFrame,pIsParent) \
- ( (This)->lpVtbl -> IsMatchingParentFrame(This,pPotentialParentFrame,pIsParent) )
+ ( (This)->lpVtbl -> IsMatchingParentFrame(This,pPotentialParentFrame,pIsParent) )
#define ICorDebugNativeFrame2_GetStackParameterSize(This,pSize) \
- ( (This)->lpVtbl -> GetStackParameterSize(This,pSize) )
+ ( (This)->lpVtbl -> GetStackParameterSize(This,pSize) )
#endif /* COBJMACROS */
@@ -11627,47 +11718,47 @@ EXTERN_C const IID IID_ICorDebugNativeFrame2;
#define __ICorDebugModule3_INTERFACE_DEFINED__
/* interface ICorDebugModule3 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugModule3;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("86F012BF-FF15-4372-BD30-B6F11CAAE1DD")
ICorDebugModule3 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE CreateReaderForInMemorySymbols(
+ virtual HRESULT STDMETHODCALLTYPE CreateReaderForInMemorySymbols(
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppObj) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugModule3Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugModule3 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugModule3 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugModule3 * This);
-
- HRESULT ( STDMETHODCALLTYPE *CreateReaderForInMemorySymbols )(
+
+ HRESULT ( STDMETHODCALLTYPE *CreateReaderForInMemorySymbols )(
ICorDebugModule3 * This,
/* [in] */ REFIID riid,
/* [iid_is][out] */ void **ppObj);
-
+
END_INTERFACE
} ICorDebugModule3Vtbl;
@@ -11676,23 +11767,23 @@ EXTERN_C const IID IID_ICorDebugModule3;
CONST_VTBL struct ICorDebugModule3Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugModule3_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugModule3_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugModule3_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugModule3_CreateReaderForInMemorySymbols(This,riid,ppObj) \
- ( (This)->lpVtbl -> CreateReaderForInMemorySymbols(This,riid,ppObj) )
+ ( (This)->lpVtbl -> CreateReaderForInMemorySymbols(This,riid,ppObj) )
#endif /* COBJMACROS */
@@ -11709,45 +11800,45 @@ EXTERN_C const IID IID_ICorDebugModule3;
#define __ICorDebugModule4_INTERFACE_DEFINED__
/* interface ICorDebugModule4 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugModule4;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("FF8B8EAF-25CD-4316-8859-84416DE4402E")
ICorDebugModule4 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE IsMappedLayout(
+ virtual HRESULT STDMETHODCALLTYPE IsMappedLayout(
/* [out] */ BOOL *pIsMapped) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugModule4Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugModule4 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugModule4 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugModule4 * This);
-
- HRESULT ( STDMETHODCALLTYPE *IsMappedLayout )(
+
+ HRESULT ( STDMETHODCALLTYPE *IsMappedLayout )(
ICorDebugModule4 * This,
/* [out] */ BOOL *pIsMapped);
-
+
END_INTERFACE
} ICorDebugModule4Vtbl;
@@ -11756,23 +11847,23 @@ EXTERN_C const IID IID_ICorDebugModule4;
CONST_VTBL struct ICorDebugModule4Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugModule4_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugModule4_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugModule4_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugModule4_IsMappedLayout(This,pIsMapped) \
- ( (This)->lpVtbl -> IsMappedLayout(This,pIsMapped) )
+ ( (This)->lpVtbl -> IsMappedLayout(This,pIsMapped) )
#endif /* COBJMACROS */
@@ -11789,71 +11880,71 @@ EXTERN_C const IID IID_ICorDebugModule4;
#define __ICorDebugRuntimeUnwindableFrame_INTERFACE_DEFINED__
/* interface ICorDebugRuntimeUnwindableFrame */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugRuntimeUnwindableFrame;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("879CAC0A-4A53-4668-B8E3-CB8473CB187F")
ICorDebugRuntimeUnwindableFrame : public ICorDebugFrame
{
public:
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugRuntimeUnwindableFrameVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugRuntimeUnwindableFrame * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugRuntimeUnwindableFrame * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugRuntimeUnwindableFrame * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetChain )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetChain )(
ICorDebugRuntimeUnwindableFrame * This,
/* [out] */ ICorDebugChain **ppChain);
-
- HRESULT ( STDMETHODCALLTYPE *GetCode )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCode )(
ICorDebugRuntimeUnwindableFrame * This,
/* [out] */ ICorDebugCode **ppCode);
-
- HRESULT ( STDMETHODCALLTYPE *GetFunction )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetFunction )(
ICorDebugRuntimeUnwindableFrame * This,
/* [out] */ ICorDebugFunction **ppFunction);
-
- HRESULT ( STDMETHODCALLTYPE *GetFunctionToken )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetFunctionToken )(
ICorDebugRuntimeUnwindableFrame * This,
/* [out] */ mdMethodDef *pToken);
-
- HRESULT ( STDMETHODCALLTYPE *GetStackRange )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetStackRange )(
ICorDebugRuntimeUnwindableFrame * This,
/* [out] */ CORDB_ADDRESS *pStart,
/* [out] */ CORDB_ADDRESS *pEnd);
-
- HRESULT ( STDMETHODCALLTYPE *GetCaller )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCaller )(
ICorDebugRuntimeUnwindableFrame * This,
/* [out] */ ICorDebugFrame **ppFrame);
-
- HRESULT ( STDMETHODCALLTYPE *GetCallee )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCallee )(
ICorDebugRuntimeUnwindableFrame * This,
/* [out] */ ICorDebugFrame **ppFrame);
-
- HRESULT ( STDMETHODCALLTYPE *CreateStepper )(
+
+ HRESULT ( STDMETHODCALLTYPE *CreateStepper )(
ICorDebugRuntimeUnwindableFrame * This,
/* [out] */ ICorDebugStepper **ppStepper);
-
+
END_INTERFACE
} ICorDebugRuntimeUnwindableFrameVtbl;
@@ -11862,44 +11953,44 @@ EXTERN_C const IID IID_ICorDebugRuntimeUnwindableFrame;
CONST_VTBL struct ICorDebugRuntimeUnwindableFrameVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugRuntimeUnwindableFrame_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugRuntimeUnwindableFrame_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugRuntimeUnwindableFrame_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugRuntimeUnwindableFrame_GetChain(This,ppChain) \
- ( (This)->lpVtbl -> GetChain(This,ppChain) )
+ ( (This)->lpVtbl -> GetChain(This,ppChain) )
#define ICorDebugRuntimeUnwindableFrame_GetCode(This,ppCode) \
- ( (This)->lpVtbl -> GetCode(This,ppCode) )
+ ( (This)->lpVtbl -> GetCode(This,ppCode) )
#define ICorDebugRuntimeUnwindableFrame_GetFunction(This,ppFunction) \
- ( (This)->lpVtbl -> GetFunction(This,ppFunction) )
+ ( (This)->lpVtbl -> GetFunction(This,ppFunction) )
#define ICorDebugRuntimeUnwindableFrame_GetFunctionToken(This,pToken) \
- ( (This)->lpVtbl -> GetFunctionToken(This,pToken) )
+ ( (This)->lpVtbl -> GetFunctionToken(This,pToken) )
#define ICorDebugRuntimeUnwindableFrame_GetStackRange(This,pStart,pEnd) \
- ( (This)->lpVtbl -> GetStackRange(This,pStart,pEnd) )
+ ( (This)->lpVtbl -> GetStackRange(This,pStart,pEnd) )
#define ICorDebugRuntimeUnwindableFrame_GetCaller(This,ppFrame) \
- ( (This)->lpVtbl -> GetCaller(This,ppFrame) )
+ ( (This)->lpVtbl -> GetCaller(This,ppFrame) )
#define ICorDebugRuntimeUnwindableFrame_GetCallee(This,ppFrame) \
- ( (This)->lpVtbl -> GetCallee(This,ppFrame) )
+ ( (This)->lpVtbl -> GetCallee(This,ppFrame) )
#define ICorDebugRuntimeUnwindableFrame_CreateStepper(This,ppStepper) \
- ( (This)->lpVtbl -> CreateStepper(This,ppStepper) )
+ ( (This)->lpVtbl -> CreateStepper(This,ppStepper) )
#endif /* COBJMACROS */
@@ -11917,173 +12008,173 @@ EXTERN_C const IID IID_ICorDebugRuntimeUnwindableFrame;
#define __ICorDebugModule_INTERFACE_DEFINED__
/* interface ICorDebugModule */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugModule;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("dba2d8c1-e5c5-4069-8c13-10a7c6abf43d")
ICorDebugModule : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetProcess(
+ virtual HRESULT STDMETHODCALLTYPE GetProcess(
/* [out] */ ICorDebugProcess **ppProcess) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetBaseAddress(
+
+ virtual HRESULT STDMETHODCALLTYPE GetBaseAddress(
/* [out] */ CORDB_ADDRESS *pAddress) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetAssembly(
+
+ virtual HRESULT STDMETHODCALLTYPE GetAssembly(
/* [out] */ ICorDebugAssembly **ppAssembly) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetName(
+
+ virtual HRESULT STDMETHODCALLTYPE GetName(
/* [in] */ ULONG32 cchName,
/* [out] */ ULONG32 *pcchName,
/* [length_is][size_is][out] */ WCHAR szName[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE EnableJITDebugging(
+
+ virtual HRESULT STDMETHODCALLTYPE EnableJITDebugging(
/* [in] */ BOOL bTrackJITInfo,
/* [in] */ BOOL bAllowJitOpts) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE EnableClassLoadCallbacks(
+
+ virtual HRESULT STDMETHODCALLTYPE EnableClassLoadCallbacks(
/* [in] */ BOOL bClassLoadCallbacks) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetFunctionFromToken(
+
+ virtual HRESULT STDMETHODCALLTYPE GetFunctionFromToken(
/* [in] */ mdMethodDef methodDef,
/* [out] */ ICorDebugFunction **ppFunction) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetFunctionFromRVA(
+
+ virtual HRESULT STDMETHODCALLTYPE GetFunctionFromRVA(
/* [in] */ CORDB_ADDRESS rva,
/* [out] */ ICorDebugFunction **ppFunction) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetClassFromToken(
+
+ virtual HRESULT STDMETHODCALLTYPE GetClassFromToken(
/* [in] */ mdTypeDef typeDef,
/* [out] */ ICorDebugClass **ppClass) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE CreateBreakpoint(
+
+ virtual HRESULT STDMETHODCALLTYPE CreateBreakpoint(
/* [out] */ ICorDebugModuleBreakpoint **ppBreakpoint) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetEditAndContinueSnapshot(
+
+ virtual HRESULT STDMETHODCALLTYPE GetEditAndContinueSnapshot(
/* [out] */ ICorDebugEditAndContinueSnapshot **ppEditAndContinueSnapshot) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetMetaDataInterface(
+
+ virtual HRESULT STDMETHODCALLTYPE GetMetaDataInterface(
/* [in] */ REFIID riid,
/* [out] */ IUnknown **ppObj) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetToken(
+
+ virtual HRESULT STDMETHODCALLTYPE GetToken(
/* [out] */ mdModule *pToken) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE IsDynamic(
+
+ virtual HRESULT STDMETHODCALLTYPE IsDynamic(
/* [out] */ BOOL *pDynamic) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetGlobalVariableValue(
+
+ virtual HRESULT STDMETHODCALLTYPE GetGlobalVariableValue(
/* [in] */ mdFieldDef fieldDef,
/* [out] */ ICorDebugValue **ppValue) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetSize(
+
+ virtual HRESULT STDMETHODCALLTYPE GetSize(
/* [out] */ ULONG32 *pcBytes) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE IsInMemory(
+
+ virtual HRESULT STDMETHODCALLTYPE IsInMemory(
/* [out] */ BOOL *pInMemory) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugModuleVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugModule * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugModule * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugModule * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetProcess )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetProcess )(
ICorDebugModule * This,
/* [out] */ ICorDebugProcess **ppProcess);
-
- HRESULT ( STDMETHODCALLTYPE *GetBaseAddress )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetBaseAddress )(
ICorDebugModule * This,
/* [out] */ CORDB_ADDRESS *pAddress);
-
- HRESULT ( STDMETHODCALLTYPE *GetAssembly )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetAssembly )(
ICorDebugModule * This,
/* [out] */ ICorDebugAssembly **ppAssembly);
-
- HRESULT ( STDMETHODCALLTYPE *GetName )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetName )(
ICorDebugModule * This,
/* [in] */ ULONG32 cchName,
/* [out] */ ULONG32 *pcchName,
/* [length_is][size_is][out] */ WCHAR szName[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *EnableJITDebugging )(
+
+ HRESULT ( STDMETHODCALLTYPE *EnableJITDebugging )(
ICorDebugModule * This,
/* [in] */ BOOL bTrackJITInfo,
/* [in] */ BOOL bAllowJitOpts);
-
- HRESULT ( STDMETHODCALLTYPE *EnableClassLoadCallbacks )(
+
+ HRESULT ( STDMETHODCALLTYPE *EnableClassLoadCallbacks )(
ICorDebugModule * This,
/* [in] */ BOOL bClassLoadCallbacks);
-
- HRESULT ( STDMETHODCALLTYPE *GetFunctionFromToken )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetFunctionFromToken )(
ICorDebugModule * This,
/* [in] */ mdMethodDef methodDef,
/* [out] */ ICorDebugFunction **ppFunction);
-
- HRESULT ( STDMETHODCALLTYPE *GetFunctionFromRVA )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetFunctionFromRVA )(
ICorDebugModule * This,
/* [in] */ CORDB_ADDRESS rva,
/* [out] */ ICorDebugFunction **ppFunction);
-
- HRESULT ( STDMETHODCALLTYPE *GetClassFromToken )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetClassFromToken )(
ICorDebugModule * This,
/* [in] */ mdTypeDef typeDef,
/* [out] */ ICorDebugClass **ppClass);
-
- HRESULT ( STDMETHODCALLTYPE *CreateBreakpoint )(
+
+ HRESULT ( STDMETHODCALLTYPE *CreateBreakpoint )(
ICorDebugModule * This,
/* [out] */ ICorDebugModuleBreakpoint **ppBreakpoint);
-
- HRESULT ( STDMETHODCALLTYPE *GetEditAndContinueSnapshot )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetEditAndContinueSnapshot )(
ICorDebugModule * This,
/* [out] */ ICorDebugEditAndContinueSnapshot **ppEditAndContinueSnapshot);
-
- HRESULT ( STDMETHODCALLTYPE *GetMetaDataInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetMetaDataInterface )(
ICorDebugModule * This,
/* [in] */ REFIID riid,
/* [out] */ IUnknown **ppObj);
-
- HRESULT ( STDMETHODCALLTYPE *GetToken )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetToken )(
ICorDebugModule * This,
/* [out] */ mdModule *pToken);
-
- HRESULT ( STDMETHODCALLTYPE *IsDynamic )(
+
+ HRESULT ( STDMETHODCALLTYPE *IsDynamic )(
ICorDebugModule * This,
/* [out] */ BOOL *pDynamic);
-
- HRESULT ( STDMETHODCALLTYPE *GetGlobalVariableValue )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetGlobalVariableValue )(
ICorDebugModule * This,
/* [in] */ mdFieldDef fieldDef,
/* [out] */ ICorDebugValue **ppValue);
-
- HRESULT ( STDMETHODCALLTYPE *GetSize )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetSize )(
ICorDebugModule * This,
/* [out] */ ULONG32 *pcBytes);
-
- HRESULT ( STDMETHODCALLTYPE *IsInMemory )(
+
+ HRESULT ( STDMETHODCALLTYPE *IsInMemory )(
ICorDebugModule * This,
/* [out] */ BOOL *pInMemory);
-
+
END_INTERFACE
} ICorDebugModuleVtbl;
@@ -12092,71 +12183,71 @@ EXTERN_C const IID IID_ICorDebugModule;
CONST_VTBL struct ICorDebugModuleVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugModule_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugModule_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugModule_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugModule_GetProcess(This,ppProcess) \
- ( (This)->lpVtbl -> GetProcess(This,ppProcess) )
+ ( (This)->lpVtbl -> GetProcess(This,ppProcess) )
#define ICorDebugModule_GetBaseAddress(This,pAddress) \
- ( (This)->lpVtbl -> GetBaseAddress(This,pAddress) )
+ ( (This)->lpVtbl -> GetBaseAddress(This,pAddress) )
#define ICorDebugModule_GetAssembly(This,ppAssembly) \
- ( (This)->lpVtbl -> GetAssembly(This,ppAssembly) )
+ ( (This)->lpVtbl -> GetAssembly(This,ppAssembly) )
#define ICorDebugModule_GetName(This,cchName,pcchName,szName) \
- ( (This)->lpVtbl -> GetName(This,cchName,pcchName,szName) )
+ ( (This)->lpVtbl -> GetName(This,cchName,pcchName,szName) )
#define ICorDebugModule_EnableJITDebugging(This,bTrackJITInfo,bAllowJitOpts) \
- ( (This)->lpVtbl -> EnableJITDebugging(This,bTrackJITInfo,bAllowJitOpts) )
+ ( (This)->lpVtbl -> EnableJITDebugging(This,bTrackJITInfo,bAllowJitOpts) )
#define ICorDebugModule_EnableClassLoadCallbacks(This,bClassLoadCallbacks) \
- ( (This)->lpVtbl -> EnableClassLoadCallbacks(This,bClassLoadCallbacks) )
+ ( (This)->lpVtbl -> EnableClassLoadCallbacks(This,bClassLoadCallbacks) )
#define ICorDebugModule_GetFunctionFromToken(This,methodDef,ppFunction) \
- ( (This)->lpVtbl -> GetFunctionFromToken(This,methodDef,ppFunction) )
+ ( (This)->lpVtbl -> GetFunctionFromToken(This,methodDef,ppFunction) )
#define ICorDebugModule_GetFunctionFromRVA(This,rva,ppFunction) \
- ( (This)->lpVtbl -> GetFunctionFromRVA(This,rva,ppFunction) )
+ ( (This)->lpVtbl -> GetFunctionFromRVA(This,rva,ppFunction) )
#define ICorDebugModule_GetClassFromToken(This,typeDef,ppClass) \
- ( (This)->lpVtbl -> GetClassFromToken(This,typeDef,ppClass) )
+ ( (This)->lpVtbl -> GetClassFromToken(This,typeDef,ppClass) )
#define ICorDebugModule_CreateBreakpoint(This,ppBreakpoint) \
- ( (This)->lpVtbl -> CreateBreakpoint(This,ppBreakpoint) )
+ ( (This)->lpVtbl -> CreateBreakpoint(This,ppBreakpoint) )
#define ICorDebugModule_GetEditAndContinueSnapshot(This,ppEditAndContinueSnapshot) \
- ( (This)->lpVtbl -> GetEditAndContinueSnapshot(This,ppEditAndContinueSnapshot) )
+ ( (This)->lpVtbl -> GetEditAndContinueSnapshot(This,ppEditAndContinueSnapshot) )
#define ICorDebugModule_GetMetaDataInterface(This,riid,ppObj) \
- ( (This)->lpVtbl -> GetMetaDataInterface(This,riid,ppObj) )
+ ( (This)->lpVtbl -> GetMetaDataInterface(This,riid,ppObj) )
#define ICorDebugModule_GetToken(This,pToken) \
- ( (This)->lpVtbl -> GetToken(This,pToken) )
+ ( (This)->lpVtbl -> GetToken(This,pToken) )
#define ICorDebugModule_IsDynamic(This,pDynamic) \
- ( (This)->lpVtbl -> IsDynamic(This,pDynamic) )
+ ( (This)->lpVtbl -> IsDynamic(This,pDynamic) )
#define ICorDebugModule_GetGlobalVariableValue(This,fieldDef,ppValue) \
- ( (This)->lpVtbl -> GetGlobalVariableValue(This,fieldDef,ppValue) )
+ ( (This)->lpVtbl -> GetGlobalVariableValue(This,fieldDef,ppValue) )
#define ICorDebugModule_GetSize(This,pcBytes) \
- ( (This)->lpVtbl -> GetSize(This,pcBytes) )
+ ( (This)->lpVtbl -> GetSize(This,pcBytes) )
#define ICorDebugModule_IsInMemory(This,pInMemory) \
- ( (This)->lpVtbl -> IsInMemory(This,pInMemory) )
+ ( (This)->lpVtbl -> IsInMemory(This,pInMemory) )
#endif /* COBJMACROS */
@@ -12169,98 +12260,98 @@ EXTERN_C const IID IID_ICorDebugModule;
#endif /* __ICorDebugModule_INTERFACE_DEFINED__ */
-/* interface __MIDL_itf_cordebug_0000_0076 */
-/* [local] */
+/* interface __MIDL_itf_cordebug_0000_0077 */
+/* [local] */
#pragma warning(pop)
-extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0076_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0076_v0_0_s_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0077_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0077_v0_0_s_ifspec;
#ifndef __ICorDebugModule2_INTERFACE_DEFINED__
#define __ICorDebugModule2_INTERFACE_DEFINED__
/* interface ICorDebugModule2 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugModule2;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("7FCC5FB5-49C0-41de-9938-3B88B5B9ADD7")
ICorDebugModule2 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE SetJMCStatus(
+ virtual HRESULT STDMETHODCALLTYPE SetJMCStatus(
/* [in] */ BOOL bIsJustMyCode,
/* [in] */ ULONG32 cTokens,
/* [size_is][in] */ mdToken pTokens[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE ApplyChanges(
+
+ virtual HRESULT STDMETHODCALLTYPE ApplyChanges(
/* [in] */ ULONG cbMetadata,
/* [size_is][in] */ BYTE pbMetadata[ ],
/* [in] */ ULONG cbIL,
/* [size_is][in] */ BYTE pbIL[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE SetJITCompilerFlags(
+
+ virtual HRESULT STDMETHODCALLTYPE SetJITCompilerFlags(
/* [in] */ DWORD dwFlags) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetJITCompilerFlags(
+
+ virtual HRESULT STDMETHODCALLTYPE GetJITCompilerFlags(
/* [out] */ DWORD *pdwFlags) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE ResolveAssembly(
+
+ virtual HRESULT STDMETHODCALLTYPE ResolveAssembly(
/* [in] */ mdToken tkAssemblyRef,
/* [out] */ ICorDebugAssembly **ppAssembly) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugModule2Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugModule2 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugModule2 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugModule2 * This);
-
- HRESULT ( STDMETHODCALLTYPE *SetJMCStatus )(
+
+ HRESULT ( STDMETHODCALLTYPE *SetJMCStatus )(
ICorDebugModule2 * This,
/* [in] */ BOOL bIsJustMyCode,
/* [in] */ ULONG32 cTokens,
/* [size_is][in] */ mdToken pTokens[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *ApplyChanges )(
+
+ HRESULT ( STDMETHODCALLTYPE *ApplyChanges )(
ICorDebugModule2 * This,
/* [in] */ ULONG cbMetadata,
/* [size_is][in] */ BYTE pbMetadata[ ],
/* [in] */ ULONG cbIL,
/* [size_is][in] */ BYTE pbIL[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *SetJITCompilerFlags )(
+
+ HRESULT ( STDMETHODCALLTYPE *SetJITCompilerFlags )(
ICorDebugModule2 * This,
/* [in] */ DWORD dwFlags);
-
- HRESULT ( STDMETHODCALLTYPE *GetJITCompilerFlags )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetJITCompilerFlags )(
ICorDebugModule2 * This,
/* [out] */ DWORD *pdwFlags);
-
- HRESULT ( STDMETHODCALLTYPE *ResolveAssembly )(
+
+ HRESULT ( STDMETHODCALLTYPE *ResolveAssembly )(
ICorDebugModule2 * This,
/* [in] */ mdToken tkAssemblyRef,
/* [out] */ ICorDebugAssembly **ppAssembly);
-
+
END_INTERFACE
} ICorDebugModule2Vtbl;
@@ -12269,35 +12360,35 @@ EXTERN_C const IID IID_ICorDebugModule2;
CONST_VTBL struct ICorDebugModule2Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugModule2_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugModule2_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugModule2_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugModule2_SetJMCStatus(This,bIsJustMyCode,cTokens,pTokens) \
- ( (This)->lpVtbl -> SetJMCStatus(This,bIsJustMyCode,cTokens,pTokens) )
+ ( (This)->lpVtbl -> SetJMCStatus(This,bIsJustMyCode,cTokens,pTokens) )
#define ICorDebugModule2_ApplyChanges(This,cbMetadata,pbMetadata,cbIL,pbIL) \
- ( (This)->lpVtbl -> ApplyChanges(This,cbMetadata,pbMetadata,cbIL,pbIL) )
+ ( (This)->lpVtbl -> ApplyChanges(This,cbMetadata,pbMetadata,cbIL,pbIL) )
#define ICorDebugModule2_SetJITCompilerFlags(This,dwFlags) \
- ( (This)->lpVtbl -> SetJITCompilerFlags(This,dwFlags) )
+ ( (This)->lpVtbl -> SetJITCompilerFlags(This,dwFlags) )
#define ICorDebugModule2_GetJITCompilerFlags(This,pdwFlags) \
- ( (This)->lpVtbl -> GetJITCompilerFlags(This,pdwFlags) )
+ ( (This)->lpVtbl -> GetJITCompilerFlags(This,pdwFlags) )
#define ICorDebugModule2_ResolveAssembly(This,tkAssemblyRef,ppAssembly) \
- ( (This)->lpVtbl -> ResolveAssembly(This,tkAssemblyRef,ppAssembly) )
+ ( (This)->lpVtbl -> ResolveAssembly(This,tkAssemblyRef,ppAssembly) )
#endif /* COBJMACROS */
@@ -12314,94 +12405,94 @@ EXTERN_C const IID IID_ICorDebugModule2;
#define __ICorDebugFunction_INTERFACE_DEFINED__
/* interface ICorDebugFunction */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugFunction;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("CC7BCAF3-8A68-11d2-983C-0000F808342D")
ICorDebugFunction : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetModule(
+ virtual HRESULT STDMETHODCALLTYPE GetModule(
/* [out] */ ICorDebugModule **ppModule) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetClass(
+
+ virtual HRESULT STDMETHODCALLTYPE GetClass(
/* [out] */ ICorDebugClass **ppClass) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetToken(
+
+ virtual HRESULT STDMETHODCALLTYPE GetToken(
/* [out] */ mdMethodDef *pMethodDef) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetILCode(
+
+ virtual HRESULT STDMETHODCALLTYPE GetILCode(
/* [out] */ ICorDebugCode **ppCode) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetNativeCode(
+
+ virtual HRESULT STDMETHODCALLTYPE GetNativeCode(
/* [out] */ ICorDebugCode **ppCode) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE CreateBreakpoint(
+
+ virtual HRESULT STDMETHODCALLTYPE CreateBreakpoint(
/* [out] */ ICorDebugFunctionBreakpoint **ppBreakpoint) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetLocalVarSigToken(
+
+ virtual HRESULT STDMETHODCALLTYPE GetLocalVarSigToken(
/* [out] */ mdSignature *pmdSig) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetCurrentVersionNumber(
+
+ virtual HRESULT STDMETHODCALLTYPE GetCurrentVersionNumber(
/* [out] */ ULONG32 *pnCurrentVersion) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugFunctionVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugFunction * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugFunction * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugFunction * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetModule )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetModule )(
ICorDebugFunction * This,
/* [out] */ ICorDebugModule **ppModule);
-
- HRESULT ( STDMETHODCALLTYPE *GetClass )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetClass )(
ICorDebugFunction * This,
/* [out] */ ICorDebugClass **ppClass);
-
- HRESULT ( STDMETHODCALLTYPE *GetToken )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetToken )(
ICorDebugFunction * This,
/* [out] */ mdMethodDef *pMethodDef);
-
- HRESULT ( STDMETHODCALLTYPE *GetILCode )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetILCode )(
ICorDebugFunction * This,
/* [out] */ ICorDebugCode **ppCode);
-
- HRESULT ( STDMETHODCALLTYPE *GetNativeCode )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetNativeCode )(
ICorDebugFunction * This,
/* [out] */ ICorDebugCode **ppCode);
-
- HRESULT ( STDMETHODCALLTYPE *CreateBreakpoint )(
+
+ HRESULT ( STDMETHODCALLTYPE *CreateBreakpoint )(
ICorDebugFunction * This,
/* [out] */ ICorDebugFunctionBreakpoint **ppBreakpoint);
-
- HRESULT ( STDMETHODCALLTYPE *GetLocalVarSigToken )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetLocalVarSigToken )(
ICorDebugFunction * This,
/* [out] */ mdSignature *pmdSig);
-
- HRESULT ( STDMETHODCALLTYPE *GetCurrentVersionNumber )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCurrentVersionNumber )(
ICorDebugFunction * This,
/* [out] */ ULONG32 *pnCurrentVersion);
-
+
END_INTERFACE
} ICorDebugFunctionVtbl;
@@ -12410,44 +12501,44 @@ EXTERN_C const IID IID_ICorDebugFunction;
CONST_VTBL struct ICorDebugFunctionVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugFunction_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugFunction_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugFunction_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugFunction_GetModule(This,ppModule) \
- ( (This)->lpVtbl -> GetModule(This,ppModule) )
+ ( (This)->lpVtbl -> GetModule(This,ppModule) )
#define ICorDebugFunction_GetClass(This,ppClass) \
- ( (This)->lpVtbl -> GetClass(This,ppClass) )
+ ( (This)->lpVtbl -> GetClass(This,ppClass) )
#define ICorDebugFunction_GetToken(This,pMethodDef) \
- ( (This)->lpVtbl -> GetToken(This,pMethodDef) )
+ ( (This)->lpVtbl -> GetToken(This,pMethodDef) )
#define ICorDebugFunction_GetILCode(This,ppCode) \
- ( (This)->lpVtbl -> GetILCode(This,ppCode) )
+ ( (This)->lpVtbl -> GetILCode(This,ppCode) )
#define ICorDebugFunction_GetNativeCode(This,ppCode) \
- ( (This)->lpVtbl -> GetNativeCode(This,ppCode) )
+ ( (This)->lpVtbl -> GetNativeCode(This,ppCode) )
#define ICorDebugFunction_CreateBreakpoint(This,ppBreakpoint) \
- ( (This)->lpVtbl -> CreateBreakpoint(This,ppBreakpoint) )
+ ( (This)->lpVtbl -> CreateBreakpoint(This,ppBreakpoint) )
#define ICorDebugFunction_GetLocalVarSigToken(This,pmdSig) \
- ( (This)->lpVtbl -> GetLocalVarSigToken(This,pmdSig) )
+ ( (This)->lpVtbl -> GetLocalVarSigToken(This,pmdSig) )
#define ICorDebugFunction_GetCurrentVersionNumber(This,pnCurrentVersion) \
- ( (This)->lpVtbl -> GetCurrentVersionNumber(This,pnCurrentVersion) )
+ ( (This)->lpVtbl -> GetCurrentVersionNumber(This,pnCurrentVersion) )
#endif /* COBJMACROS */
@@ -12464,66 +12555,66 @@ EXTERN_C const IID IID_ICorDebugFunction;
#define __ICorDebugFunction2_INTERFACE_DEFINED__
/* interface ICorDebugFunction2 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugFunction2;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("EF0C490B-94C3-4e4d-B629-DDC134C532D8")
ICorDebugFunction2 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE SetJMCStatus(
+ virtual HRESULT STDMETHODCALLTYPE SetJMCStatus(
/* [in] */ BOOL bIsJustMyCode) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetJMCStatus(
+
+ virtual HRESULT STDMETHODCALLTYPE GetJMCStatus(
/* [out] */ BOOL *pbIsJustMyCode) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE EnumerateNativeCode(
+
+ virtual HRESULT STDMETHODCALLTYPE EnumerateNativeCode(
/* [out] */ ICorDebugCodeEnum **ppCodeEnum) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetVersionNumber(
+
+ virtual HRESULT STDMETHODCALLTYPE GetVersionNumber(
/* [out] */ ULONG32 *pnVersion) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugFunction2Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugFunction2 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugFunction2 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugFunction2 * This);
-
- HRESULT ( STDMETHODCALLTYPE *SetJMCStatus )(
+
+ HRESULT ( STDMETHODCALLTYPE *SetJMCStatus )(
ICorDebugFunction2 * This,
/* [in] */ BOOL bIsJustMyCode);
-
- HRESULT ( STDMETHODCALLTYPE *GetJMCStatus )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetJMCStatus )(
ICorDebugFunction2 * This,
/* [out] */ BOOL *pbIsJustMyCode);
-
- HRESULT ( STDMETHODCALLTYPE *EnumerateNativeCode )(
+
+ HRESULT ( STDMETHODCALLTYPE *EnumerateNativeCode )(
ICorDebugFunction2 * This,
/* [out] */ ICorDebugCodeEnum **ppCodeEnum);
-
- HRESULT ( STDMETHODCALLTYPE *GetVersionNumber )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetVersionNumber )(
ICorDebugFunction2 * This,
/* [out] */ ULONG32 *pnVersion);
-
+
END_INTERFACE
} ICorDebugFunction2Vtbl;
@@ -12532,32 +12623,32 @@ EXTERN_C const IID IID_ICorDebugFunction2;
CONST_VTBL struct ICorDebugFunction2Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugFunction2_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugFunction2_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugFunction2_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugFunction2_SetJMCStatus(This,bIsJustMyCode) \
- ( (This)->lpVtbl -> SetJMCStatus(This,bIsJustMyCode) )
+ ( (This)->lpVtbl -> SetJMCStatus(This,bIsJustMyCode) )
#define ICorDebugFunction2_GetJMCStatus(This,pbIsJustMyCode) \
- ( (This)->lpVtbl -> GetJMCStatus(This,pbIsJustMyCode) )
+ ( (This)->lpVtbl -> GetJMCStatus(This,pbIsJustMyCode) )
#define ICorDebugFunction2_EnumerateNativeCode(This,ppCodeEnum) \
- ( (This)->lpVtbl -> EnumerateNativeCode(This,ppCodeEnum) )
+ ( (This)->lpVtbl -> EnumerateNativeCode(This,ppCodeEnum) )
#define ICorDebugFunction2_GetVersionNumber(This,pnVersion) \
- ( (This)->lpVtbl -> GetVersionNumber(This,pnVersion) )
+ ( (This)->lpVtbl -> GetVersionNumber(This,pnVersion) )
#endif /* COBJMACROS */
@@ -12574,45 +12665,45 @@ EXTERN_C const IID IID_ICorDebugFunction2;
#define __ICorDebugFunction3_INTERFACE_DEFINED__
/* interface ICorDebugFunction3 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugFunction3;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("09B70F28-E465-482D-99E0-81A165EB0532")
ICorDebugFunction3 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetActiveReJitRequestILCode(
+ virtual HRESULT STDMETHODCALLTYPE GetActiveReJitRequestILCode(
ICorDebugILCode **ppReJitedILCode) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugFunction3Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugFunction3 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugFunction3 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugFunction3 * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetActiveReJitRequestILCode )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetActiveReJitRequestILCode )(
ICorDebugFunction3 * This,
ICorDebugILCode **ppReJitedILCode);
-
+
END_INTERFACE
} ICorDebugFunction3Vtbl;
@@ -12621,23 +12712,23 @@ EXTERN_C const IID IID_ICorDebugFunction3;
CONST_VTBL struct ICorDebugFunction3Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugFunction3_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugFunction3_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugFunction3_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugFunction3_GetActiveReJitRequestILCode(This,ppReJitedILCode) \
- ( (This)->lpVtbl -> GetActiveReJitRequestILCode(This,ppReJitedILCode) )
+ ( (This)->lpVtbl -> GetActiveReJitRequestILCode(This,ppReJitedILCode) )
#endif /* COBJMACROS */
@@ -12654,45 +12745,45 @@ EXTERN_C const IID IID_ICorDebugFunction3;
#define __ICorDebugFunction4_INTERFACE_DEFINED__
/* interface ICorDebugFunction4 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugFunction4;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("72965963-34fd-46e9-9434-b817fe6e7f43")
ICorDebugFunction4 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE CreateNativeBreakpoint(
+ virtual HRESULT STDMETHODCALLTYPE CreateNativeBreakpoint(
ICorDebugFunctionBreakpoint **ppBreakpoint) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugFunction4Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugFunction4 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugFunction4 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugFunction4 * This);
-
- HRESULT ( STDMETHODCALLTYPE *CreateNativeBreakpoint )(
+
+ HRESULT ( STDMETHODCALLTYPE *CreateNativeBreakpoint )(
ICorDebugFunction4 * This,
ICorDebugFunctionBreakpoint **ppBreakpoint);
-
+
END_INTERFACE
} ICorDebugFunction4Vtbl;
@@ -12701,23 +12792,23 @@ EXTERN_C const IID IID_ICorDebugFunction4;
CONST_VTBL struct ICorDebugFunction4Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugFunction4_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugFunction4_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugFunction4_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugFunction4_CreateNativeBreakpoint(This,ppBreakpoint) \
- ( (This)->lpVtbl -> CreateNativeBreakpoint(This,ppBreakpoint) )
+ ( (This)->lpVtbl -> CreateNativeBreakpoint(This,ppBreakpoint) )
#endif /* COBJMACROS */
@@ -12734,119 +12825,119 @@ EXTERN_C const IID IID_ICorDebugFunction4;
#define __ICorDebugCode_INTERFACE_DEFINED__
/* interface ICorDebugCode */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugCode;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("CC7BCAF4-8A68-11d2-983C-0000F808342D")
ICorDebugCode : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE IsIL(
+ virtual HRESULT STDMETHODCALLTYPE IsIL(
/* [out] */ BOOL *pbIL) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetFunction(
+
+ virtual HRESULT STDMETHODCALLTYPE GetFunction(
/* [out] */ ICorDebugFunction **ppFunction) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetAddress(
+
+ virtual HRESULT STDMETHODCALLTYPE GetAddress(
/* [out] */ CORDB_ADDRESS *pStart) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetSize(
+
+ virtual HRESULT STDMETHODCALLTYPE GetSize(
/* [out] */ ULONG32 *pcBytes) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE CreateBreakpoint(
+
+ virtual HRESULT STDMETHODCALLTYPE CreateBreakpoint(
/* [in] */ ULONG32 offset,
/* [out] */ ICorDebugFunctionBreakpoint **ppBreakpoint) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetCode(
+
+ virtual HRESULT STDMETHODCALLTYPE GetCode(
/* [in] */ ULONG32 startOffset,
/* [in] */ ULONG32 endOffset,
/* [in] */ ULONG32 cBufferAlloc,
/* [length_is][size_is][out] */ BYTE buffer[ ],
/* [out] */ ULONG32 *pcBufferSize) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetVersionNumber(
+
+ virtual HRESULT STDMETHODCALLTYPE GetVersionNumber(
/* [out] */ ULONG32 *nVersion) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetILToNativeMapping(
+
+ virtual HRESULT STDMETHODCALLTYPE GetILToNativeMapping(
/* [in] */ ULONG32 cMap,
/* [out] */ ULONG32 *pcMap,
/* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetEnCRemapSequencePoints(
+
+ virtual HRESULT STDMETHODCALLTYPE GetEnCRemapSequencePoints(
/* [in] */ ULONG32 cMap,
/* [out] */ ULONG32 *pcMap,
/* [length_is][size_is][out] */ ULONG32 offsets[ ]) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugCodeVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugCode * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugCode * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugCode * This);
-
- HRESULT ( STDMETHODCALLTYPE *IsIL )(
+
+ HRESULT ( STDMETHODCALLTYPE *IsIL )(
ICorDebugCode * This,
/* [out] */ BOOL *pbIL);
-
- HRESULT ( STDMETHODCALLTYPE *GetFunction )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetFunction )(
ICorDebugCode * This,
/* [out] */ ICorDebugFunction **ppFunction);
-
- HRESULT ( STDMETHODCALLTYPE *GetAddress )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetAddress )(
ICorDebugCode * This,
/* [out] */ CORDB_ADDRESS *pStart);
-
- HRESULT ( STDMETHODCALLTYPE *GetSize )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetSize )(
ICorDebugCode * This,
/* [out] */ ULONG32 *pcBytes);
-
- HRESULT ( STDMETHODCALLTYPE *CreateBreakpoint )(
+
+ HRESULT ( STDMETHODCALLTYPE *CreateBreakpoint )(
ICorDebugCode * This,
/* [in] */ ULONG32 offset,
/* [out] */ ICorDebugFunctionBreakpoint **ppBreakpoint);
-
- HRESULT ( STDMETHODCALLTYPE *GetCode )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCode )(
ICorDebugCode * This,
/* [in] */ ULONG32 startOffset,
/* [in] */ ULONG32 endOffset,
/* [in] */ ULONG32 cBufferAlloc,
/* [length_is][size_is][out] */ BYTE buffer[ ],
/* [out] */ ULONG32 *pcBufferSize);
-
- HRESULT ( STDMETHODCALLTYPE *GetVersionNumber )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetVersionNumber )(
ICorDebugCode * This,
/* [out] */ ULONG32 *nVersion);
-
- HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping )(
ICorDebugCode * This,
/* [in] */ ULONG32 cMap,
/* [out] */ ULONG32 *pcMap,
/* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetEnCRemapSequencePoints )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetEnCRemapSequencePoints )(
ICorDebugCode * This,
/* [in] */ ULONG32 cMap,
/* [out] */ ULONG32 *pcMap,
/* [length_is][size_is][out] */ ULONG32 offsets[ ]);
-
+
END_INTERFACE
} ICorDebugCodeVtbl;
@@ -12855,47 +12946,47 @@ EXTERN_C const IID IID_ICorDebugCode;
CONST_VTBL struct ICorDebugCodeVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugCode_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugCode_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugCode_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugCode_IsIL(This,pbIL) \
- ( (This)->lpVtbl -> IsIL(This,pbIL) )
+ ( (This)->lpVtbl -> IsIL(This,pbIL) )
#define ICorDebugCode_GetFunction(This,ppFunction) \
- ( (This)->lpVtbl -> GetFunction(This,ppFunction) )
+ ( (This)->lpVtbl -> GetFunction(This,ppFunction) )
#define ICorDebugCode_GetAddress(This,pStart) \
- ( (This)->lpVtbl -> GetAddress(This,pStart) )
+ ( (This)->lpVtbl -> GetAddress(This,pStart) )
#define ICorDebugCode_GetSize(This,pcBytes) \
- ( (This)->lpVtbl -> GetSize(This,pcBytes) )
+ ( (This)->lpVtbl -> GetSize(This,pcBytes) )
#define ICorDebugCode_CreateBreakpoint(This,offset,ppBreakpoint) \
- ( (This)->lpVtbl -> CreateBreakpoint(This,offset,ppBreakpoint) )
+ ( (This)->lpVtbl -> CreateBreakpoint(This,offset,ppBreakpoint) )
#define ICorDebugCode_GetCode(This,startOffset,endOffset,cBufferAlloc,buffer,pcBufferSize) \
- ( (This)->lpVtbl -> GetCode(This,startOffset,endOffset,cBufferAlloc,buffer,pcBufferSize) )
+ ( (This)->lpVtbl -> GetCode(This,startOffset,endOffset,cBufferAlloc,buffer,pcBufferSize) )
#define ICorDebugCode_GetVersionNumber(This,nVersion) \
- ( (This)->lpVtbl -> GetVersionNumber(This,nVersion) )
+ ( (This)->lpVtbl -> GetVersionNumber(This,nVersion) )
#define ICorDebugCode_GetILToNativeMapping(This,cMap,pcMap,map) \
- ( (This)->lpVtbl -> GetILToNativeMapping(This,cMap,pcMap,map) )
+ ( (This)->lpVtbl -> GetILToNativeMapping(This,cMap,pcMap,map) )
#define ICorDebugCode_GetEnCRemapSequencePoints(This,cMap,pcMap,offsets) \
- ( (This)->lpVtbl -> GetEnCRemapSequencePoints(This,cMap,pcMap,offsets) )
+ ( (This)->lpVtbl -> GetEnCRemapSequencePoints(This,cMap,pcMap,offsets) )
#endif /* COBJMACROS */
@@ -12912,7 +13003,7 @@ EXTERN_C const IID IID_ICorDebugCode;
#define __ICorDebugCode2_INTERFACE_DEFINED__
/* interface ICorDebugCode2 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
typedef struct _CodeChunkInfo
{
@@ -12924,50 +13015,50 @@ typedef struct _CodeChunkInfo
EXTERN_C const IID IID_ICorDebugCode2;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("5F696509-452F-4436-A3FE-4D11FE7E2347")
ICorDebugCode2 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetCodeChunks(
+ virtual HRESULT STDMETHODCALLTYPE GetCodeChunks(
/* [in] */ ULONG32 cbufSize,
/* [out] */ ULONG32 *pcnumChunks,
/* [length_is][size_is][out] */ CodeChunkInfo chunks[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetCompilerFlags(
+
+ virtual HRESULT STDMETHODCALLTYPE GetCompilerFlags(
/* [out] */ DWORD *pdwFlags) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugCode2Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugCode2 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugCode2 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugCode2 * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetCodeChunks )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCodeChunks )(
ICorDebugCode2 * This,
/* [in] */ ULONG32 cbufSize,
/* [out] */ ULONG32 *pcnumChunks,
/* [length_is][size_is][out] */ CodeChunkInfo chunks[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetCompilerFlags )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCompilerFlags )(
ICorDebugCode2 * This,
/* [out] */ DWORD *pdwFlags);
-
+
END_INTERFACE
} ICorDebugCode2Vtbl;
@@ -12976,26 +13067,26 @@ EXTERN_C const IID IID_ICorDebugCode2;
CONST_VTBL struct ICorDebugCode2Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugCode2_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugCode2_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugCode2_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugCode2_GetCodeChunks(This,cbufSize,pcnumChunks,chunks) \
- ( (This)->lpVtbl -> GetCodeChunks(This,cbufSize,pcnumChunks,chunks) )
+ ( (This)->lpVtbl -> GetCodeChunks(This,cbufSize,pcnumChunks,chunks) )
#define ICorDebugCode2_GetCompilerFlags(This,pdwFlags) \
- ( (This)->lpVtbl -> GetCompilerFlags(This,pdwFlags) )
+ ( (This)->lpVtbl -> GetCompilerFlags(This,pdwFlags) )
#endif /* COBJMACROS */
@@ -13012,51 +13103,51 @@ EXTERN_C const IID IID_ICorDebugCode2;
#define __ICorDebugCode3_INTERFACE_DEFINED__
/* interface ICorDebugCode3 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugCode3;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("D13D3E88-E1F2-4020-AA1D-3D162DCBE966")
ICorDebugCode3 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetReturnValueLiveOffset(
+ virtual HRESULT STDMETHODCALLTYPE GetReturnValueLiveOffset(
/* [in] */ ULONG32 ILoffset,
/* [in] */ ULONG32 bufferSize,
/* [out] */ ULONG32 *pFetched,
/* [length_is][size_is][out] */ ULONG32 pOffsets[ ]) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugCode3Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugCode3 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugCode3 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugCode3 * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetReturnValueLiveOffset )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetReturnValueLiveOffset )(
ICorDebugCode3 * This,
/* [in] */ ULONG32 ILoffset,
/* [in] */ ULONG32 bufferSize,
/* [out] */ ULONG32 *pFetched,
/* [length_is][size_is][out] */ ULONG32 pOffsets[ ]);
-
+
END_INTERFACE
} ICorDebugCode3Vtbl;
@@ -13065,23 +13156,23 @@ EXTERN_C const IID IID_ICorDebugCode3;
CONST_VTBL struct ICorDebugCode3Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugCode3_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugCode3_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugCode3_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugCode3_GetReturnValueLiveOffset(This,ILoffset,bufferSize,pFetched,pOffsets) \
- ( (This)->lpVtbl -> GetReturnValueLiveOffset(This,ILoffset,bufferSize,pFetched,pOffsets) )
+ ( (This)->lpVtbl -> GetReturnValueLiveOffset(This,ILoffset,bufferSize,pFetched,pOffsets) )
#endif /* COBJMACROS */
@@ -13098,45 +13189,45 @@ EXTERN_C const IID IID_ICorDebugCode3;
#define __ICorDebugCode4_INTERFACE_DEFINED__
/* interface ICorDebugCode4 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugCode4;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("18221fa4-20cb-40fa-b19d-9f91c4fa8c14")
ICorDebugCode4 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE EnumerateVariableHomes(
+ virtual HRESULT STDMETHODCALLTYPE EnumerateVariableHomes(
/* [out] */ ICorDebugVariableHomeEnum **ppEnum) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugCode4Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugCode4 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugCode4 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugCode4 * This);
-
- HRESULT ( STDMETHODCALLTYPE *EnumerateVariableHomes )(
+
+ HRESULT ( STDMETHODCALLTYPE *EnumerateVariableHomes )(
ICorDebugCode4 * This,
/* [out] */ ICorDebugVariableHomeEnum **ppEnum);
-
+
END_INTERFACE
} ICorDebugCode4Vtbl;
@@ -13145,23 +13236,23 @@ EXTERN_C const IID IID_ICorDebugCode4;
CONST_VTBL struct ICorDebugCode4Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugCode4_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugCode4_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugCode4_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugCode4_EnumerateVariableHomes(This,ppEnum) \
- ( (This)->lpVtbl -> EnumerateVariableHomes(This,ppEnum) )
+ ( (This)->lpVtbl -> EnumerateVariableHomes(This,ppEnum) )
#endif /* COBJMACROS */
@@ -13178,7 +13269,7 @@ EXTERN_C const IID IID_ICorDebugCode4;
#define __ICorDebugILCode_INTERFACE_DEFINED__
/* interface ICorDebugILCode */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
typedef struct _CorDebugEHClause
{
@@ -13195,43 +13286,43 @@ typedef struct _CorDebugEHClause
EXTERN_C const IID IID_ICorDebugILCode;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("598D46C2-C877-42A7-89D2-3D0C7F1C1264")
ICorDebugILCode : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetEHClauses(
+ virtual HRESULT STDMETHODCALLTYPE GetEHClauses(
/* [in] */ ULONG32 cClauses,
/* [out] */ ULONG32 *pcClauses,
/* [length_is][size_is][out] */ CorDebugEHClause clauses[ ]) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugILCodeVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugILCode * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugILCode * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugILCode * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetEHClauses )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetEHClauses )(
ICorDebugILCode * This,
/* [in] */ ULONG32 cClauses,
/* [out] */ ULONG32 *pcClauses,
/* [length_is][size_is][out] */ CorDebugEHClause clauses[ ]);
-
+
END_INTERFACE
} ICorDebugILCodeVtbl;
@@ -13240,23 +13331,23 @@ EXTERN_C const IID IID_ICorDebugILCode;
CONST_VTBL struct ICorDebugILCodeVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugILCode_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugILCode_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugILCode_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugILCode_GetEHClauses(This,cClauses,pcClauses,clauses) \
- ( (This)->lpVtbl -> GetEHClauses(This,cClauses,pcClauses,clauses) )
+ ( (This)->lpVtbl -> GetEHClauses(This,cClauses,pcClauses,clauses) )
#endif /* COBJMACROS */
@@ -13273,56 +13364,56 @@ EXTERN_C const IID IID_ICorDebugILCode;
#define __ICorDebugILCode2_INTERFACE_DEFINED__
/* interface ICorDebugILCode2 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugILCode2;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("46586093-D3F5-4DB6-ACDB-955BCE228C15")
ICorDebugILCode2 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetLocalVarSigToken(
+ virtual HRESULT STDMETHODCALLTYPE GetLocalVarSigToken(
/* [out] */ mdSignature *pmdSig) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetInstrumentedILMap(
+
+ virtual HRESULT STDMETHODCALLTYPE GetInstrumentedILMap(
/* [in] */ ULONG32 cMap,
/* [out] */ ULONG32 *pcMap,
/* [length_is][size_is][out] */ COR_IL_MAP map[ ]) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugILCode2Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugILCode2 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugILCode2 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugILCode2 * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetLocalVarSigToken )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetLocalVarSigToken )(
ICorDebugILCode2 * This,
/* [out] */ mdSignature *pmdSig);
-
- HRESULT ( STDMETHODCALLTYPE *GetInstrumentedILMap )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetInstrumentedILMap )(
ICorDebugILCode2 * This,
/* [in] */ ULONG32 cMap,
/* [out] */ ULONG32 *pcMap,
/* [length_is][size_is][out] */ COR_IL_MAP map[ ]);
-
+
END_INTERFACE
} ICorDebugILCode2Vtbl;
@@ -13331,26 +13422,26 @@ EXTERN_C const IID IID_ICorDebugILCode2;
CONST_VTBL struct ICorDebugILCode2Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugILCode2_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugILCode2_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugILCode2_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugILCode2_GetLocalVarSigToken(This,pmdSig) \
- ( (This)->lpVtbl -> GetLocalVarSigToken(This,pmdSig) )
+ ( (This)->lpVtbl -> GetLocalVarSigToken(This,pmdSig) )
#define ICorDebugILCode2_GetInstrumentedILMap(This,cMap,pcMap,map) \
- ( (This)->lpVtbl -> GetInstrumentedILMap(This,cMap,pcMap,map) )
+ ( (This)->lpVtbl -> GetInstrumentedILMap(This,cMap,pcMap,map) )
#endif /* COBJMACROS */
@@ -13367,63 +13458,63 @@ EXTERN_C const IID IID_ICorDebugILCode2;
#define __ICorDebugClass_INTERFACE_DEFINED__
/* interface ICorDebugClass */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugClass;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("CC7BCAF5-8A68-11d2-983C-0000F808342D")
ICorDebugClass : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetModule(
+ virtual HRESULT STDMETHODCALLTYPE GetModule(
/* [out] */ ICorDebugModule **pModule) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetToken(
+
+ virtual HRESULT STDMETHODCALLTYPE GetToken(
/* [out] */ mdTypeDef *pTypeDef) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetStaticFieldValue(
+
+ virtual HRESULT STDMETHODCALLTYPE GetStaticFieldValue(
/* [in] */ mdFieldDef fieldDef,
/* [in] */ ICorDebugFrame *pFrame,
/* [out] */ ICorDebugValue **ppValue) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugClassVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugClass * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugClass * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugClass * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetModule )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetModule )(
ICorDebugClass * This,
/* [out] */ ICorDebugModule **pModule);
-
- HRESULT ( STDMETHODCALLTYPE *GetToken )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetToken )(
ICorDebugClass * This,
/* [out] */ mdTypeDef *pTypeDef);
-
- HRESULT ( STDMETHODCALLTYPE *GetStaticFieldValue )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetStaticFieldValue )(
ICorDebugClass * This,
/* [in] */ mdFieldDef fieldDef,
/* [in] */ ICorDebugFrame *pFrame,
/* [out] */ ICorDebugValue **ppValue);
-
+
END_INTERFACE
} ICorDebugClassVtbl;
@@ -13432,29 +13523,29 @@ EXTERN_C const IID IID_ICorDebugClass;
CONST_VTBL struct ICorDebugClassVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugClass_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugClass_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugClass_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugClass_GetModule(This,pModule) \
- ( (This)->lpVtbl -> GetModule(This,pModule) )
+ ( (This)->lpVtbl -> GetModule(This,pModule) )
#define ICorDebugClass_GetToken(This,pTypeDef) \
- ( (This)->lpVtbl -> GetToken(This,pTypeDef) )
+ ( (This)->lpVtbl -> GetToken(This,pTypeDef) )
#define ICorDebugClass_GetStaticFieldValue(This,fieldDef,pFrame,ppValue) \
- ( (This)->lpVtbl -> GetStaticFieldValue(This,fieldDef,pFrame,ppValue) )
+ ( (This)->lpVtbl -> GetStaticFieldValue(This,fieldDef,pFrame,ppValue) )
#endif /* COBJMACROS */
@@ -13471,58 +13562,58 @@ EXTERN_C const IID IID_ICorDebugClass;
#define __ICorDebugClass2_INTERFACE_DEFINED__
/* interface ICorDebugClass2 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugClass2;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("B008EA8D-7AB1-43f7-BB20-FBB5A04038AE")
ICorDebugClass2 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetParameterizedType(
+ virtual HRESULT STDMETHODCALLTYPE GetParameterizedType(
/* [in] */ CorElementType elementType,
/* [in] */ ULONG32 nTypeArgs,
/* [size_is][in] */ ICorDebugType *ppTypeArgs[ ],
/* [out] */ ICorDebugType **ppType) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE SetJMCStatus(
+
+ virtual HRESULT STDMETHODCALLTYPE SetJMCStatus(
/* [in] */ BOOL bIsJustMyCode) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugClass2Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugClass2 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugClass2 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugClass2 * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetParameterizedType )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetParameterizedType )(
ICorDebugClass2 * This,
/* [in] */ CorElementType elementType,
/* [in] */ ULONG32 nTypeArgs,
/* [size_is][in] */ ICorDebugType *ppTypeArgs[ ],
/* [out] */ ICorDebugType **ppType);
-
- HRESULT ( STDMETHODCALLTYPE *SetJMCStatus )(
+
+ HRESULT ( STDMETHODCALLTYPE *SetJMCStatus )(
ICorDebugClass2 * This,
/* [in] */ BOOL bIsJustMyCode);
-
+
END_INTERFACE
} ICorDebugClass2Vtbl;
@@ -13531,26 +13622,26 @@ EXTERN_C const IID IID_ICorDebugClass2;
CONST_VTBL struct ICorDebugClass2Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugClass2_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugClass2_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugClass2_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugClass2_GetParameterizedType(This,elementType,nTypeArgs,ppTypeArgs,ppType) \
- ( (This)->lpVtbl -> GetParameterizedType(This,elementType,nTypeArgs,ppTypeArgs,ppType) )
+ ( (This)->lpVtbl -> GetParameterizedType(This,elementType,nTypeArgs,ppTypeArgs,ppType) )
#define ICorDebugClass2_SetJMCStatus(This,bIsJustMyCode) \
- ( (This)->lpVtbl -> SetJMCStatus(This,bIsJustMyCode) )
+ ( (This)->lpVtbl -> SetJMCStatus(This,bIsJustMyCode) )
#endif /* COBJMACROS */
@@ -13567,126 +13658,126 @@ EXTERN_C const IID IID_ICorDebugClass2;
#define __ICorDebugEval_INTERFACE_DEFINED__
/* interface ICorDebugEval */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugEval;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("CC7BCAF6-8A68-11d2-983C-0000F808342D")
ICorDebugEval : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE CallFunction(
+ virtual HRESULT STDMETHODCALLTYPE CallFunction(
/* [in] */ ICorDebugFunction *pFunction,
/* [in] */ ULONG32 nArgs,
/* [size_is][in] */ ICorDebugValue *ppArgs[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE NewObject(
+
+ virtual HRESULT STDMETHODCALLTYPE NewObject(
/* [in] */ ICorDebugFunction *pConstructor,
/* [in] */ ULONG32 nArgs,
/* [size_is][in] */ ICorDebugValue *ppArgs[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE NewObjectNoConstructor(
+
+ virtual HRESULT STDMETHODCALLTYPE NewObjectNoConstructor(
/* [in] */ ICorDebugClass *pClass) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE NewString(
+
+ virtual HRESULT STDMETHODCALLTYPE NewString(
/* [in] */ LPCWSTR string) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE NewArray(
+
+ virtual HRESULT STDMETHODCALLTYPE NewArray(
/* [in] */ CorElementType elementType,
/* [in] */ ICorDebugClass *pElementClass,
/* [in] */ ULONG32 rank,
/* [size_is][in] */ ULONG32 dims[ ],
/* [size_is][in] */ ULONG32 lowBounds[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE IsActive(
+
+ virtual HRESULT STDMETHODCALLTYPE IsActive(
/* [out] */ BOOL *pbActive) = 0;
-
+
virtual HRESULT STDMETHODCALLTYPE Abort( void) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetResult(
+
+ virtual HRESULT STDMETHODCALLTYPE GetResult(
/* [out] */ ICorDebugValue **ppResult) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetThread(
+
+ virtual HRESULT STDMETHODCALLTYPE GetThread(
/* [out] */ ICorDebugThread **ppThread) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE CreateValue(
+
+ virtual HRESULT STDMETHODCALLTYPE CreateValue(
/* [in] */ CorElementType elementType,
/* [in] */ ICorDebugClass *pElementClass,
/* [out] */ ICorDebugValue **ppValue) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugEvalVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugEval * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugEval * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugEval * This);
-
- HRESULT ( STDMETHODCALLTYPE *CallFunction )(
+
+ HRESULT ( STDMETHODCALLTYPE *CallFunction )(
ICorDebugEval * This,
/* [in] */ ICorDebugFunction *pFunction,
/* [in] */ ULONG32 nArgs,
/* [size_is][in] */ ICorDebugValue *ppArgs[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *NewObject )(
+
+ HRESULT ( STDMETHODCALLTYPE *NewObject )(
ICorDebugEval * This,
/* [in] */ ICorDebugFunction *pConstructor,
/* [in] */ ULONG32 nArgs,
/* [size_is][in] */ ICorDebugValue *ppArgs[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *NewObjectNoConstructor )(
+
+ HRESULT ( STDMETHODCALLTYPE *NewObjectNoConstructor )(
ICorDebugEval * This,
/* [in] */ ICorDebugClass *pClass);
-
- HRESULT ( STDMETHODCALLTYPE *NewString )(
+
+ HRESULT ( STDMETHODCALLTYPE *NewString )(
ICorDebugEval * This,
/* [in] */ LPCWSTR string);
-
- HRESULT ( STDMETHODCALLTYPE *NewArray )(
+
+ HRESULT ( STDMETHODCALLTYPE *NewArray )(
ICorDebugEval * This,
/* [in] */ CorElementType elementType,
/* [in] */ ICorDebugClass *pElementClass,
/* [in] */ ULONG32 rank,
/* [size_is][in] */ ULONG32 dims[ ],
/* [size_is][in] */ ULONG32 lowBounds[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *IsActive )(
+
+ HRESULT ( STDMETHODCALLTYPE *IsActive )(
ICorDebugEval * This,
/* [out] */ BOOL *pbActive);
-
- HRESULT ( STDMETHODCALLTYPE *Abort )(
+
+ HRESULT ( STDMETHODCALLTYPE *Abort )(
ICorDebugEval * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetResult )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetResult )(
ICorDebugEval * This,
/* [out] */ ICorDebugValue **ppResult);
-
- HRESULT ( STDMETHODCALLTYPE *GetThread )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetThread )(
ICorDebugEval * This,
/* [out] */ ICorDebugThread **ppThread);
-
- HRESULT ( STDMETHODCALLTYPE *CreateValue )(
+
+ HRESULT ( STDMETHODCALLTYPE *CreateValue )(
ICorDebugEval * This,
/* [in] */ CorElementType elementType,
/* [in] */ ICorDebugClass *pElementClass,
/* [out] */ ICorDebugValue **ppValue);
-
+
END_INTERFACE
} ICorDebugEvalVtbl;
@@ -13695,50 +13786,50 @@ EXTERN_C const IID IID_ICorDebugEval;
CONST_VTBL struct ICorDebugEvalVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugEval_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugEval_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugEval_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugEval_CallFunction(This,pFunction,nArgs,ppArgs) \
- ( (This)->lpVtbl -> CallFunction(This,pFunction,nArgs,ppArgs) )
+ ( (This)->lpVtbl -> CallFunction(This,pFunction,nArgs,ppArgs) )
#define ICorDebugEval_NewObject(This,pConstructor,nArgs,ppArgs) \
- ( (This)->lpVtbl -> NewObject(This,pConstructor,nArgs,ppArgs) )
+ ( (This)->lpVtbl -> NewObject(This,pConstructor,nArgs,ppArgs) )
#define ICorDebugEval_NewObjectNoConstructor(This,pClass) \
- ( (This)->lpVtbl -> NewObjectNoConstructor(This,pClass) )
+ ( (This)->lpVtbl -> NewObjectNoConstructor(This,pClass) )
#define ICorDebugEval_NewString(This,string) \
- ( (This)->lpVtbl -> NewString(This,string) )
+ ( (This)->lpVtbl -> NewString(This,string) )
#define ICorDebugEval_NewArray(This,elementType,pElementClass,rank,dims,lowBounds) \
- ( (This)->lpVtbl -> NewArray(This,elementType,pElementClass,rank,dims,lowBounds) )
+ ( (This)->lpVtbl -> NewArray(This,elementType,pElementClass,rank,dims,lowBounds) )
#define ICorDebugEval_IsActive(This,pbActive) \
- ( (This)->lpVtbl -> IsActive(This,pbActive) )
+ ( (This)->lpVtbl -> IsActive(This,pbActive) )
#define ICorDebugEval_Abort(This) \
- ( (This)->lpVtbl -> Abort(This) )
+ ( (This)->lpVtbl -> Abort(This) )
#define ICorDebugEval_GetResult(This,ppResult) \
- ( (This)->lpVtbl -> GetResult(This,ppResult) )
+ ( (This)->lpVtbl -> GetResult(This,ppResult) )
#define ICorDebugEval_GetThread(This,ppThread) \
- ( (This)->lpVtbl -> GetThread(This,ppThread) )
+ ( (This)->lpVtbl -> GetThread(This,ppThread) )
#define ICorDebugEval_CreateValue(This,elementType,pElementClass,ppValue) \
- ( (This)->lpVtbl -> CreateValue(This,elementType,pElementClass,ppValue) )
+ ( (This)->lpVtbl -> CreateValue(This,elementType,pElementClass,ppValue) )
#endif /* COBJMACROS */
@@ -13755,115 +13846,115 @@ EXTERN_C const IID IID_ICorDebugEval;
#define __ICorDebugEval2_INTERFACE_DEFINED__
/* interface ICorDebugEval2 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugEval2;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("FB0D9CE7-BE66-4683-9D32-A42A04E2FD91")
ICorDebugEval2 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE CallParameterizedFunction(
+ virtual HRESULT STDMETHODCALLTYPE CallParameterizedFunction(
/* [in] */ ICorDebugFunction *pFunction,
/* [in] */ ULONG32 nTypeArgs,
/* [size_is][in] */ ICorDebugType *ppTypeArgs[ ],
/* [in] */ ULONG32 nArgs,
/* [size_is][in] */ ICorDebugValue *ppArgs[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE CreateValueForType(
+
+ virtual HRESULT STDMETHODCALLTYPE CreateValueForType(
/* [in] */ ICorDebugType *pType,
/* [out] */ ICorDebugValue **ppValue) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE NewParameterizedObject(
+
+ virtual HRESULT STDMETHODCALLTYPE NewParameterizedObject(
/* [in] */ ICorDebugFunction *pConstructor,
/* [in] */ ULONG32 nTypeArgs,
/* [size_is][in] */ ICorDebugType *ppTypeArgs[ ],
/* [in] */ ULONG32 nArgs,
/* [size_is][in] */ ICorDebugValue *ppArgs[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE NewParameterizedObjectNoConstructor(
+
+ virtual HRESULT STDMETHODCALLTYPE NewParameterizedObjectNoConstructor(
/* [in] */ ICorDebugClass *pClass,
/* [in] */ ULONG32 nTypeArgs,
/* [size_is][in] */ ICorDebugType *ppTypeArgs[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE NewParameterizedArray(
+
+ virtual HRESULT STDMETHODCALLTYPE NewParameterizedArray(
/* [in] */ ICorDebugType *pElementType,
/* [in] */ ULONG32 rank,
/* [size_is][in] */ ULONG32 dims[ ],
/* [size_is][in] */ ULONG32 lowBounds[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE NewStringWithLength(
+
+ virtual HRESULT STDMETHODCALLTYPE NewStringWithLength(
/* [in] */ LPCWSTR string,
/* [in] */ UINT uiLength) = 0;
-
+
virtual HRESULT STDMETHODCALLTYPE RudeAbort( void) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugEval2Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugEval2 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugEval2 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugEval2 * This);
-
- HRESULT ( STDMETHODCALLTYPE *CallParameterizedFunction )(
+
+ HRESULT ( STDMETHODCALLTYPE *CallParameterizedFunction )(
ICorDebugEval2 * This,
/* [in] */ ICorDebugFunction *pFunction,
/* [in] */ ULONG32 nTypeArgs,
/* [size_is][in] */ ICorDebugType *ppTypeArgs[ ],
/* [in] */ ULONG32 nArgs,
/* [size_is][in] */ ICorDebugValue *ppArgs[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *CreateValueForType )(
+
+ HRESULT ( STDMETHODCALLTYPE *CreateValueForType )(
ICorDebugEval2 * This,
/* [in] */ ICorDebugType *pType,
/* [out] */ ICorDebugValue **ppValue);
-
- HRESULT ( STDMETHODCALLTYPE *NewParameterizedObject )(
+
+ HRESULT ( STDMETHODCALLTYPE *NewParameterizedObject )(
ICorDebugEval2 * This,
/* [in] */ ICorDebugFunction *pConstructor,
/* [in] */ ULONG32 nTypeArgs,
/* [size_is][in] */ ICorDebugType *ppTypeArgs[ ],
/* [in] */ ULONG32 nArgs,
/* [size_is][in] */ ICorDebugValue *ppArgs[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *NewParameterizedObjectNoConstructor )(
+
+ HRESULT ( STDMETHODCALLTYPE *NewParameterizedObjectNoConstructor )(
ICorDebugEval2 * This,
/* [in] */ ICorDebugClass *pClass,
/* [in] */ ULONG32 nTypeArgs,
/* [size_is][in] */ ICorDebugType *ppTypeArgs[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *NewParameterizedArray )(
+
+ HRESULT ( STDMETHODCALLTYPE *NewParameterizedArray )(
ICorDebugEval2 * This,
/* [in] */ ICorDebugType *pElementType,
/* [in] */ ULONG32 rank,
/* [size_is][in] */ ULONG32 dims[ ],
/* [size_is][in] */ ULONG32 lowBounds[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *NewStringWithLength )(
+
+ HRESULT ( STDMETHODCALLTYPE *NewStringWithLength )(
ICorDebugEval2 * This,
/* [in] */ LPCWSTR string,
/* [in] */ UINT uiLength);
-
- HRESULT ( STDMETHODCALLTYPE *RudeAbort )(
+
+ HRESULT ( STDMETHODCALLTYPE *RudeAbort )(
ICorDebugEval2 * This);
-
+
END_INTERFACE
} ICorDebugEval2Vtbl;
@@ -13872,41 +13963,41 @@ EXTERN_C const IID IID_ICorDebugEval2;
CONST_VTBL struct ICorDebugEval2Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugEval2_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugEval2_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugEval2_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugEval2_CallParameterizedFunction(This,pFunction,nTypeArgs,ppTypeArgs,nArgs,ppArgs) \
- ( (This)->lpVtbl -> CallParameterizedFunction(This,pFunction,nTypeArgs,ppTypeArgs,nArgs,ppArgs) )
+ ( (This)->lpVtbl -> CallParameterizedFunction(This,pFunction,nTypeArgs,ppTypeArgs,nArgs,ppArgs) )
#define ICorDebugEval2_CreateValueForType(This,pType,ppValue) \
- ( (This)->lpVtbl -> CreateValueForType(This,pType,ppValue) )
+ ( (This)->lpVtbl -> CreateValueForType(This,pType,ppValue) )
#define ICorDebugEval2_NewParameterizedObject(This,pConstructor,nTypeArgs,ppTypeArgs,nArgs,ppArgs) \
- ( (This)->lpVtbl -> NewParameterizedObject(This,pConstructor,nTypeArgs,ppTypeArgs,nArgs,ppArgs) )
+ ( (This)->lpVtbl -> NewParameterizedObject(This,pConstructor,nTypeArgs,ppTypeArgs,nArgs,ppArgs) )
#define ICorDebugEval2_NewParameterizedObjectNoConstructor(This,pClass,nTypeArgs,ppTypeArgs) \
- ( (This)->lpVtbl -> NewParameterizedObjectNoConstructor(This,pClass,nTypeArgs,ppTypeArgs) )
+ ( (This)->lpVtbl -> NewParameterizedObjectNoConstructor(This,pClass,nTypeArgs,ppTypeArgs) )
#define ICorDebugEval2_NewParameterizedArray(This,pElementType,rank,dims,lowBounds) \
- ( (This)->lpVtbl -> NewParameterizedArray(This,pElementType,rank,dims,lowBounds) )
+ ( (This)->lpVtbl -> NewParameterizedArray(This,pElementType,rank,dims,lowBounds) )
#define ICorDebugEval2_NewStringWithLength(This,string,uiLength) \
- ( (This)->lpVtbl -> NewStringWithLength(This,string,uiLength) )
+ ( (This)->lpVtbl -> NewStringWithLength(This,string,uiLength) )
#define ICorDebugEval2_RudeAbort(This) \
- ( (This)->lpVtbl -> RudeAbort(This) )
+ ( (This)->lpVtbl -> RudeAbort(This) )
#endif /* COBJMACROS */
@@ -13923,66 +14014,66 @@ EXTERN_C const IID IID_ICorDebugEval2;
#define __ICorDebugValue_INTERFACE_DEFINED__
/* interface ICorDebugValue */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugValue;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("CC7BCAF7-8A68-11d2-983C-0000F808342D")
ICorDebugValue : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetType(
+ virtual HRESULT STDMETHODCALLTYPE GetType(
/* [out] */ CorElementType *pType) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetSize(
+
+ virtual HRESULT STDMETHODCALLTYPE GetSize(
/* [out] */ ULONG32 *pSize) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetAddress(
+
+ virtual HRESULT STDMETHODCALLTYPE GetAddress(
/* [out] */ CORDB_ADDRESS *pAddress) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE CreateBreakpoint(
+
+ virtual HRESULT STDMETHODCALLTYPE CreateBreakpoint(
/* [out] */ ICorDebugValueBreakpoint **ppBreakpoint) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugValueVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugValue * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugValue * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugValue * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetType )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetType )(
ICorDebugValue * This,
/* [out] */ CorElementType *pType);
-
- HRESULT ( STDMETHODCALLTYPE *GetSize )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetSize )(
ICorDebugValue * This,
/* [out] */ ULONG32 *pSize);
-
- HRESULT ( STDMETHODCALLTYPE *GetAddress )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetAddress )(
ICorDebugValue * This,
/* [out] */ CORDB_ADDRESS *pAddress);
-
- HRESULT ( STDMETHODCALLTYPE *CreateBreakpoint )(
+
+ HRESULT ( STDMETHODCALLTYPE *CreateBreakpoint )(
ICorDebugValue * This,
/* [out] */ ICorDebugValueBreakpoint **ppBreakpoint);
-
+
END_INTERFACE
} ICorDebugValueVtbl;
@@ -13991,32 +14082,32 @@ EXTERN_C const IID IID_ICorDebugValue;
CONST_VTBL struct ICorDebugValueVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugValue_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugValue_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugValue_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugValue_GetType(This,pType) \
- ( (This)->lpVtbl -> GetType(This,pType) )
+ ( (This)->lpVtbl -> GetType(This,pType) )
#define ICorDebugValue_GetSize(This,pSize) \
- ( (This)->lpVtbl -> GetSize(This,pSize) )
+ ( (This)->lpVtbl -> GetSize(This,pSize) )
#define ICorDebugValue_GetAddress(This,pAddress) \
- ( (This)->lpVtbl -> GetAddress(This,pAddress) )
+ ( (This)->lpVtbl -> GetAddress(This,pAddress) )
#define ICorDebugValue_CreateBreakpoint(This,ppBreakpoint) \
- ( (This)->lpVtbl -> CreateBreakpoint(This,ppBreakpoint) )
+ ( (This)->lpVtbl -> CreateBreakpoint(This,ppBreakpoint) )
#endif /* COBJMACROS */
@@ -14033,45 +14124,45 @@ EXTERN_C const IID IID_ICorDebugValue;
#define __ICorDebugValue2_INTERFACE_DEFINED__
/* interface ICorDebugValue2 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugValue2;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("5E0B54E7-D88A-4626-9420-A691E0A78B49")
ICorDebugValue2 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetExactType(
+ virtual HRESULT STDMETHODCALLTYPE GetExactType(
/* [out] */ ICorDebugType **ppType) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugValue2Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugValue2 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugValue2 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugValue2 * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetExactType )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetExactType )(
ICorDebugValue2 * This,
/* [out] */ ICorDebugType **ppType);
-
+
END_INTERFACE
} ICorDebugValue2Vtbl;
@@ -14080,23 +14171,23 @@ EXTERN_C const IID IID_ICorDebugValue2;
CONST_VTBL struct ICorDebugValue2Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugValue2_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugValue2_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugValue2_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugValue2_GetExactType(This,ppType) \
- ( (This)->lpVtbl -> GetExactType(This,ppType) )
+ ( (This)->lpVtbl -> GetExactType(This,ppType) )
#endif /* COBJMACROS */
@@ -14113,45 +14204,45 @@ EXTERN_C const IID IID_ICorDebugValue2;
#define __ICorDebugValue3_INTERFACE_DEFINED__
/* interface ICorDebugValue3 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugValue3;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("565005FC-0F8A-4F3E-9EDB-83102B156595")
ICorDebugValue3 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetSize64(
+ virtual HRESULT STDMETHODCALLTYPE GetSize64(
/* [out] */ ULONG64 *pSize) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugValue3Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugValue3 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugValue3 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugValue3 * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetSize64 )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetSize64 )(
ICorDebugValue3 * This,
/* [out] */ ULONG64 *pSize);
-
+
END_INTERFACE
} ICorDebugValue3Vtbl;
@@ -14160,23 +14251,23 @@ EXTERN_C const IID IID_ICorDebugValue3;
CONST_VTBL struct ICorDebugValue3Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugValue3_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugValue3_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugValue3_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugValue3_GetSize64(This,pSize) \
- ( (This)->lpVtbl -> GetSize64(This,pSize) )
+ ( (This)->lpVtbl -> GetSize64(This,pSize) )
#endif /* COBJMACROS */
@@ -14193,68 +14284,68 @@ EXTERN_C const IID IID_ICorDebugValue3;
#define __ICorDebugGenericValue_INTERFACE_DEFINED__
/* interface ICorDebugGenericValue */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugGenericValue;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("CC7BCAF8-8A68-11d2-983C-0000F808342D")
ICorDebugGenericValue : public ICorDebugValue
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetValue(
+ virtual HRESULT STDMETHODCALLTYPE GetValue(
/* [out] */ void *pTo) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE SetValue(
+
+ virtual HRESULT STDMETHODCALLTYPE SetValue(
/* [in] */ void *pFrom) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugGenericValueVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugGenericValue * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugGenericValue * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugGenericValue * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetType )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetType )(
ICorDebugGenericValue * This,
/* [out] */ CorElementType *pType);
-
- HRESULT ( STDMETHODCALLTYPE *GetSize )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetSize )(
ICorDebugGenericValue * This,
/* [out] */ ULONG32 *pSize);
-
- HRESULT ( STDMETHODCALLTYPE *GetAddress )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetAddress )(
ICorDebugGenericValue * This,
/* [out] */ CORDB_ADDRESS *pAddress);
-
- HRESULT ( STDMETHODCALLTYPE *CreateBreakpoint )(
+
+ HRESULT ( STDMETHODCALLTYPE *CreateBreakpoint )(
ICorDebugGenericValue * This,
/* [out] */ ICorDebugValueBreakpoint **ppBreakpoint);
-
- HRESULT ( STDMETHODCALLTYPE *GetValue )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetValue )(
ICorDebugGenericValue * This,
/* [out] */ void *pTo);
-
- HRESULT ( STDMETHODCALLTYPE *SetValue )(
+
+ HRESULT ( STDMETHODCALLTYPE *SetValue )(
ICorDebugGenericValue * This,
/* [in] */ void *pFrom);
-
+
END_INTERFACE
} ICorDebugGenericValueVtbl;
@@ -14263,39 +14354,39 @@ EXTERN_C const IID IID_ICorDebugGenericValue;
CONST_VTBL struct ICorDebugGenericValueVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugGenericValue_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugGenericValue_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugGenericValue_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugGenericValue_GetType(This,pType) \
- ( (This)->lpVtbl -> GetType(This,pType) )
+ ( (This)->lpVtbl -> GetType(This,pType) )
#define ICorDebugGenericValue_GetSize(This,pSize) \
- ( (This)->lpVtbl -> GetSize(This,pSize) )
+ ( (This)->lpVtbl -> GetSize(This,pSize) )
#define ICorDebugGenericValue_GetAddress(This,pAddress) \
- ( (This)->lpVtbl -> GetAddress(This,pAddress) )
+ ( (This)->lpVtbl -> GetAddress(This,pAddress) )
#define ICorDebugGenericValue_CreateBreakpoint(This,ppBreakpoint) \
- ( (This)->lpVtbl -> CreateBreakpoint(This,ppBreakpoint) )
+ ( (This)->lpVtbl -> CreateBreakpoint(This,ppBreakpoint) )
#define ICorDebugGenericValue_GetValue(This,pTo) \
- ( (This)->lpVtbl -> GetValue(This,pTo) )
+ ( (This)->lpVtbl -> GetValue(This,pTo) )
#define ICorDebugGenericValue_SetValue(This,pFrom) \
- ( (This)->lpVtbl -> SetValue(This,pFrom) )
+ ( (This)->lpVtbl -> SetValue(This,pFrom) )
#endif /* COBJMACROS */
@@ -14312,89 +14403,89 @@ EXTERN_C const IID IID_ICorDebugGenericValue;
#define __ICorDebugReferenceValue_INTERFACE_DEFINED__
/* interface ICorDebugReferenceValue */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugReferenceValue;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("CC7BCAF9-8A68-11d2-983C-0000F808342D")
ICorDebugReferenceValue : public ICorDebugValue
{
public:
- virtual HRESULT STDMETHODCALLTYPE IsNull(
+ virtual HRESULT STDMETHODCALLTYPE IsNull(
/* [out] */ BOOL *pbNull) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetValue(
+
+ virtual HRESULT STDMETHODCALLTYPE GetValue(
/* [out] */ CORDB_ADDRESS *pValue) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE SetValue(
+
+ virtual HRESULT STDMETHODCALLTYPE SetValue(
/* [in] */ CORDB_ADDRESS value) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE Dereference(
+
+ virtual HRESULT STDMETHODCALLTYPE Dereference(
/* [out] */ ICorDebugValue **ppValue) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE DereferenceStrong(
+
+ virtual HRESULT STDMETHODCALLTYPE DereferenceStrong(
/* [out] */ ICorDebugValue **ppValue) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugReferenceValueVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugReferenceValue * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugReferenceValue * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugReferenceValue * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetType )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetType )(
ICorDebugReferenceValue * This,
/* [out] */ CorElementType *pType);
-
- HRESULT ( STDMETHODCALLTYPE *GetSize )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetSize )(
ICorDebugReferenceValue * This,
/* [out] */ ULONG32 *pSize);
-
- HRESULT ( STDMETHODCALLTYPE *GetAddress )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetAddress )(
ICorDebugReferenceValue * This,
/* [out] */ CORDB_ADDRESS *pAddress);
-
- HRESULT ( STDMETHODCALLTYPE *CreateBreakpoint )(
+
+ HRESULT ( STDMETHODCALLTYPE *CreateBreakpoint )(
ICorDebugReferenceValue * This,
/* [out] */ ICorDebugValueBreakpoint **ppBreakpoint);
-
- HRESULT ( STDMETHODCALLTYPE *IsNull )(
+
+ HRESULT ( STDMETHODCALLTYPE *IsNull )(
ICorDebugReferenceValue * This,
/* [out] */ BOOL *pbNull);
-
- HRESULT ( STDMETHODCALLTYPE *GetValue )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetValue )(
ICorDebugReferenceValue * This,
/* [out] */ CORDB_ADDRESS *pValue);
-
- HRESULT ( STDMETHODCALLTYPE *SetValue )(
+
+ HRESULT ( STDMETHODCALLTYPE *SetValue )(
ICorDebugReferenceValue * This,
/* [in] */ CORDB_ADDRESS value);
-
- HRESULT ( STDMETHODCALLTYPE *Dereference )(
+
+ HRESULT ( STDMETHODCALLTYPE *Dereference )(
ICorDebugReferenceValue * This,
/* [out] */ ICorDebugValue **ppValue);
-
- HRESULT ( STDMETHODCALLTYPE *DereferenceStrong )(
+
+ HRESULT ( STDMETHODCALLTYPE *DereferenceStrong )(
ICorDebugReferenceValue * This,
/* [out] */ ICorDebugValue **ppValue);
-
+
END_INTERFACE
} ICorDebugReferenceValueVtbl;
@@ -14403,48 +14494,48 @@ EXTERN_C const IID IID_ICorDebugReferenceValue;
CONST_VTBL struct ICorDebugReferenceValueVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugReferenceValue_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugReferenceValue_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugReferenceValue_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugReferenceValue_GetType(This,pType) \
- ( (This)->lpVtbl -> GetType(This,pType) )
+ ( (This)->lpVtbl -> GetType(This,pType) )
#define ICorDebugReferenceValue_GetSize(This,pSize) \
- ( (This)->lpVtbl -> GetSize(This,pSize) )
+ ( (This)->lpVtbl -> GetSize(This,pSize) )
#define ICorDebugReferenceValue_GetAddress(This,pAddress) \
- ( (This)->lpVtbl -> GetAddress(This,pAddress) )
+ ( (This)->lpVtbl -> GetAddress(This,pAddress) )
#define ICorDebugReferenceValue_CreateBreakpoint(This,ppBreakpoint) \
- ( (This)->lpVtbl -> CreateBreakpoint(This,ppBreakpoint) )
+ ( (This)->lpVtbl -> CreateBreakpoint(This,ppBreakpoint) )
#define ICorDebugReferenceValue_IsNull(This,pbNull) \
- ( (This)->lpVtbl -> IsNull(This,pbNull) )
+ ( (This)->lpVtbl -> IsNull(This,pbNull) )
#define ICorDebugReferenceValue_GetValue(This,pValue) \
- ( (This)->lpVtbl -> GetValue(This,pValue) )
+ ( (This)->lpVtbl -> GetValue(This,pValue) )
#define ICorDebugReferenceValue_SetValue(This,value) \
- ( (This)->lpVtbl -> SetValue(This,value) )
+ ( (This)->lpVtbl -> SetValue(This,value) )
#define ICorDebugReferenceValue_Dereference(This,ppValue) \
- ( (This)->lpVtbl -> Dereference(This,ppValue) )
+ ( (This)->lpVtbl -> Dereference(This,ppValue) )
#define ICorDebugReferenceValue_DereferenceStrong(This,ppValue) \
- ( (This)->lpVtbl -> DereferenceStrong(This,ppValue) )
+ ( (This)->lpVtbl -> DereferenceStrong(This,ppValue) )
#endif /* COBJMACROS */
@@ -14461,68 +14552,68 @@ EXTERN_C const IID IID_ICorDebugReferenceValue;
#define __ICorDebugHeapValue_INTERFACE_DEFINED__
/* interface ICorDebugHeapValue */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugHeapValue;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("CC7BCAFA-8A68-11d2-983C-0000F808342D")
ICorDebugHeapValue : public ICorDebugValue
{
public:
- virtual HRESULT STDMETHODCALLTYPE IsValid(
+ virtual HRESULT STDMETHODCALLTYPE IsValid(
/* [out] */ BOOL *pbValid) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE CreateRelocBreakpoint(
+
+ virtual HRESULT STDMETHODCALLTYPE CreateRelocBreakpoint(
/* [out] */ ICorDebugValueBreakpoint **ppBreakpoint) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugHeapValueVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugHeapValue * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugHeapValue * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugHeapValue * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetType )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetType )(
ICorDebugHeapValue * This,
/* [out] */ CorElementType *pType);
-
- HRESULT ( STDMETHODCALLTYPE *GetSize )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetSize )(
ICorDebugHeapValue * This,
/* [out] */ ULONG32 *pSize);
-
- HRESULT ( STDMETHODCALLTYPE *GetAddress )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetAddress )(
ICorDebugHeapValue * This,
/* [out] */ CORDB_ADDRESS *pAddress);
-
- HRESULT ( STDMETHODCALLTYPE *CreateBreakpoint )(
+
+ HRESULT ( STDMETHODCALLTYPE *CreateBreakpoint )(
ICorDebugHeapValue * This,
/* [out] */ ICorDebugValueBreakpoint **ppBreakpoint);
-
- HRESULT ( STDMETHODCALLTYPE *IsValid )(
+
+ HRESULT ( STDMETHODCALLTYPE *IsValid )(
ICorDebugHeapValue * This,
/* [out] */ BOOL *pbValid);
-
- HRESULT ( STDMETHODCALLTYPE *CreateRelocBreakpoint )(
+
+ HRESULT ( STDMETHODCALLTYPE *CreateRelocBreakpoint )(
ICorDebugHeapValue * This,
/* [out] */ ICorDebugValueBreakpoint **ppBreakpoint);
-
+
END_INTERFACE
} ICorDebugHeapValueVtbl;
@@ -14531,39 +14622,39 @@ EXTERN_C const IID IID_ICorDebugHeapValue;
CONST_VTBL struct ICorDebugHeapValueVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugHeapValue_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugHeapValue_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugHeapValue_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugHeapValue_GetType(This,pType) \
- ( (This)->lpVtbl -> GetType(This,pType) )
+ ( (This)->lpVtbl -> GetType(This,pType) )
#define ICorDebugHeapValue_GetSize(This,pSize) \
- ( (This)->lpVtbl -> GetSize(This,pSize) )
+ ( (This)->lpVtbl -> GetSize(This,pSize) )
#define ICorDebugHeapValue_GetAddress(This,pAddress) \
- ( (This)->lpVtbl -> GetAddress(This,pAddress) )
+ ( (This)->lpVtbl -> GetAddress(This,pAddress) )
#define ICorDebugHeapValue_CreateBreakpoint(This,ppBreakpoint) \
- ( (This)->lpVtbl -> CreateBreakpoint(This,ppBreakpoint) )
+ ( (This)->lpVtbl -> CreateBreakpoint(This,ppBreakpoint) )
#define ICorDebugHeapValue_IsValid(This,pbValid) \
- ( (This)->lpVtbl -> IsValid(This,pbValid) )
+ ( (This)->lpVtbl -> IsValid(This,pbValid) )
#define ICorDebugHeapValue_CreateRelocBreakpoint(This,ppBreakpoint) \
- ( (This)->lpVtbl -> CreateRelocBreakpoint(This,ppBreakpoint) )
+ ( (This)->lpVtbl -> CreateRelocBreakpoint(This,ppBreakpoint) )
#endif /* COBJMACROS */
@@ -14580,47 +14671,47 @@ EXTERN_C const IID IID_ICorDebugHeapValue;
#define __ICorDebugHeapValue2_INTERFACE_DEFINED__
/* interface ICorDebugHeapValue2 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugHeapValue2;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("E3AC4D6C-9CB7-43e6-96CC-B21540E5083C")
ICorDebugHeapValue2 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE CreateHandle(
+ virtual HRESULT STDMETHODCALLTYPE CreateHandle(
/* [in] */ CorDebugHandleType type,
/* [out] */ ICorDebugHandleValue **ppHandle) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugHeapValue2Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugHeapValue2 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugHeapValue2 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugHeapValue2 * This);
-
- HRESULT ( STDMETHODCALLTYPE *CreateHandle )(
+
+ HRESULT ( STDMETHODCALLTYPE *CreateHandle )(
ICorDebugHeapValue2 * This,
/* [in] */ CorDebugHandleType type,
/* [out] */ ICorDebugHandleValue **ppHandle);
-
+
END_INTERFACE
} ICorDebugHeapValue2Vtbl;
@@ -14629,23 +14720,23 @@ EXTERN_C const IID IID_ICorDebugHeapValue2;
CONST_VTBL struct ICorDebugHeapValue2Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugHeapValue2_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugHeapValue2_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugHeapValue2_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugHeapValue2_CreateHandle(This,type,ppHandle) \
- ( (This)->lpVtbl -> CreateHandle(This,type,ppHandle) )
+ ( (This)->lpVtbl -> CreateHandle(This,type,ppHandle) )
#endif /* COBJMACROS */
@@ -14662,54 +14753,54 @@ EXTERN_C const IID IID_ICorDebugHeapValue2;
#define __ICorDebugHeapValue3_INTERFACE_DEFINED__
/* interface ICorDebugHeapValue3 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugHeapValue3;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("A69ACAD8-2374-46e9-9FF8-B1F14120D296")
ICorDebugHeapValue3 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetThreadOwningMonitorLock(
+ virtual HRESULT STDMETHODCALLTYPE GetThreadOwningMonitorLock(
/* [out] */ ICorDebugThread **ppThread,
/* [out] */ DWORD *pAcquisitionCount) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetMonitorEventWaitList(
+
+ virtual HRESULT STDMETHODCALLTYPE GetMonitorEventWaitList(
/* [out] */ ICorDebugThreadEnum **ppThreadEnum) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugHeapValue3Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugHeapValue3 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugHeapValue3 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugHeapValue3 * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetThreadOwningMonitorLock )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetThreadOwningMonitorLock )(
ICorDebugHeapValue3 * This,
/* [out] */ ICorDebugThread **ppThread,
/* [out] */ DWORD *pAcquisitionCount);
-
- HRESULT ( STDMETHODCALLTYPE *GetMonitorEventWaitList )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetMonitorEventWaitList )(
ICorDebugHeapValue3 * This,
/* [out] */ ICorDebugThreadEnum **ppThreadEnum);
-
+
END_INTERFACE
} ICorDebugHeapValue3Vtbl;
@@ -14718,26 +14809,26 @@ EXTERN_C const IID IID_ICorDebugHeapValue3;
CONST_VTBL struct ICorDebugHeapValue3Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugHeapValue3_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugHeapValue3_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugHeapValue3_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugHeapValue3_GetThreadOwningMonitorLock(This,ppThread,pAcquisitionCount) \
- ( (This)->lpVtbl -> GetThreadOwningMonitorLock(This,ppThread,pAcquisitionCount) )
+ ( (This)->lpVtbl -> GetThreadOwningMonitorLock(This,ppThread,pAcquisitionCount) )
#define ICorDebugHeapValue3_GetMonitorEventWaitList(This,ppThreadEnum) \
- ( (This)->lpVtbl -> GetMonitorEventWaitList(This,ppThreadEnum) )
+ ( (This)->lpVtbl -> GetMonitorEventWaitList(This,ppThreadEnum) )
#endif /* COBJMACROS */
@@ -14754,45 +14845,45 @@ EXTERN_C const IID IID_ICorDebugHeapValue3;
#define __ICorDebugHeapValue4_INTERFACE_DEFINED__
/* interface ICorDebugHeapValue4 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugHeapValue4;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("B35DD495-A555-463B-9BE9-C55338486BB8")
ICorDebugHeapValue4 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE CreatePinnedHandle(
+ virtual HRESULT STDMETHODCALLTYPE CreatePinnedHandle(
/* [out] */ ICorDebugHandleValue **ppHandle) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugHeapValue4Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugHeapValue4 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugHeapValue4 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugHeapValue4 * This);
-
- HRESULT ( STDMETHODCALLTYPE *CreatePinnedHandle )(
+
+ HRESULT ( STDMETHODCALLTYPE *CreatePinnedHandle )(
ICorDebugHeapValue4 * This,
/* [out] */ ICorDebugHandleValue **ppHandle);
-
+
END_INTERFACE
} ICorDebugHeapValue4Vtbl;
@@ -14801,23 +14892,23 @@ EXTERN_C const IID IID_ICorDebugHeapValue4;
CONST_VTBL struct ICorDebugHeapValue4Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugHeapValue4_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugHeapValue4_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugHeapValue4_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugHeapValue4_CreatePinnedHandle(This,ppHandle) \
- ( (This)->lpVtbl -> CreatePinnedHandle(This,ppHandle) )
+ ( (This)->lpVtbl -> CreatePinnedHandle(This,ppHandle) )
#endif /* COBJMACROS */
@@ -14834,109 +14925,109 @@ EXTERN_C const IID IID_ICorDebugHeapValue4;
#define __ICorDebugObjectValue_INTERFACE_DEFINED__
/* interface ICorDebugObjectValue */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugObjectValue;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("18AD3D6E-B7D2-11d2-BD04-0000F80849BD")
ICorDebugObjectValue : public ICorDebugValue
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetClass(
+ virtual HRESULT STDMETHODCALLTYPE GetClass(
/* [out] */ ICorDebugClass **ppClass) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetFieldValue(
+
+ virtual HRESULT STDMETHODCALLTYPE GetFieldValue(
/* [in] */ ICorDebugClass *pClass,
/* [in] */ mdFieldDef fieldDef,
/* [out] */ ICorDebugValue **ppValue) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetVirtualMethod(
+
+ virtual HRESULT STDMETHODCALLTYPE GetVirtualMethod(
/* [in] */ mdMemberRef memberRef,
/* [out] */ ICorDebugFunction **ppFunction) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetContext(
+
+ virtual HRESULT STDMETHODCALLTYPE GetContext(
/* [out] */ ICorDebugContext **ppContext) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE IsValueClass(
+
+ virtual HRESULT STDMETHODCALLTYPE IsValueClass(
/* [out] */ BOOL *pbIsValueClass) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetManagedCopy(
+
+ virtual HRESULT STDMETHODCALLTYPE GetManagedCopy(
/* [out] */ IUnknown **ppObject) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE SetFromManagedCopy(
+
+ virtual HRESULT STDMETHODCALLTYPE SetFromManagedCopy(
/* [in] */ IUnknown *pObject) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugObjectValueVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugObjectValue * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugObjectValue * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugObjectValue * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetType )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetType )(
ICorDebugObjectValue * This,
/* [out] */ CorElementType *pType);
-
- HRESULT ( STDMETHODCALLTYPE *GetSize )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetSize )(
ICorDebugObjectValue * This,
/* [out] */ ULONG32 *pSize);
-
- HRESULT ( STDMETHODCALLTYPE *GetAddress )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetAddress )(
ICorDebugObjectValue * This,
/* [out] */ CORDB_ADDRESS *pAddress);
-
- HRESULT ( STDMETHODCALLTYPE *CreateBreakpoint )(
+
+ HRESULT ( STDMETHODCALLTYPE *CreateBreakpoint )(
ICorDebugObjectValue * This,
/* [out] */ ICorDebugValueBreakpoint **ppBreakpoint);
-
- HRESULT ( STDMETHODCALLTYPE *GetClass )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetClass )(
ICorDebugObjectValue * This,
/* [out] */ ICorDebugClass **ppClass);
-
- HRESULT ( STDMETHODCALLTYPE *GetFieldValue )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetFieldValue )(
ICorDebugObjectValue * This,
/* [in] */ ICorDebugClass *pClass,
/* [in] */ mdFieldDef fieldDef,
/* [out] */ ICorDebugValue **ppValue);
-
- HRESULT ( STDMETHODCALLTYPE *GetVirtualMethod )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetVirtualMethod )(
ICorDebugObjectValue * This,
/* [in] */ mdMemberRef memberRef,
/* [out] */ ICorDebugFunction **ppFunction);
-
- HRESULT ( STDMETHODCALLTYPE *GetContext )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetContext )(
ICorDebugObjectValue * This,
/* [out] */ ICorDebugContext **ppContext);
-
- HRESULT ( STDMETHODCALLTYPE *IsValueClass )(
+
+ HRESULT ( STDMETHODCALLTYPE *IsValueClass )(
ICorDebugObjectValue * This,
/* [out] */ BOOL *pbIsValueClass);
-
- HRESULT ( STDMETHODCALLTYPE *GetManagedCopy )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetManagedCopy )(
ICorDebugObjectValue * This,
/* [out] */ IUnknown **ppObject);
-
- HRESULT ( STDMETHODCALLTYPE *SetFromManagedCopy )(
+
+ HRESULT ( STDMETHODCALLTYPE *SetFromManagedCopy )(
ICorDebugObjectValue * This,
/* [in] */ IUnknown *pObject);
-
+
END_INTERFACE
} ICorDebugObjectValueVtbl;
@@ -14945,54 +15036,54 @@ EXTERN_C const IID IID_ICorDebugObjectValue;
CONST_VTBL struct ICorDebugObjectValueVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugObjectValue_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugObjectValue_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugObjectValue_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugObjectValue_GetType(This,pType) \
- ( (This)->lpVtbl -> GetType(This,pType) )
+ ( (This)->lpVtbl -> GetType(This,pType) )
#define ICorDebugObjectValue_GetSize(This,pSize) \
- ( (This)->lpVtbl -> GetSize(This,pSize) )
+ ( (This)->lpVtbl -> GetSize(This,pSize) )
#define ICorDebugObjectValue_GetAddress(This,pAddress) \
- ( (This)->lpVtbl -> GetAddress(This,pAddress) )
+ ( (This)->lpVtbl -> GetAddress(This,pAddress) )
#define ICorDebugObjectValue_CreateBreakpoint(This,ppBreakpoint) \
- ( (This)->lpVtbl -> CreateBreakpoint(This,ppBreakpoint) )
+ ( (This)->lpVtbl -> CreateBreakpoint(This,ppBreakpoint) )
#define ICorDebugObjectValue_GetClass(This,ppClass) \
- ( (This)->lpVtbl -> GetClass(This,ppClass) )
+ ( (This)->lpVtbl -> GetClass(This,ppClass) )
#define ICorDebugObjectValue_GetFieldValue(This,pClass,fieldDef,ppValue) \
- ( (This)->lpVtbl -> GetFieldValue(This,pClass,fieldDef,ppValue) )
+ ( (This)->lpVtbl -> GetFieldValue(This,pClass,fieldDef,ppValue) )
#define ICorDebugObjectValue_GetVirtualMethod(This,memberRef,ppFunction) \
- ( (This)->lpVtbl -> GetVirtualMethod(This,memberRef,ppFunction) )
+ ( (This)->lpVtbl -> GetVirtualMethod(This,memberRef,ppFunction) )
#define ICorDebugObjectValue_GetContext(This,ppContext) \
- ( (This)->lpVtbl -> GetContext(This,ppContext) )
+ ( (This)->lpVtbl -> GetContext(This,ppContext) )
#define ICorDebugObjectValue_IsValueClass(This,pbIsValueClass) \
- ( (This)->lpVtbl -> IsValueClass(This,pbIsValueClass) )
+ ( (This)->lpVtbl -> IsValueClass(This,pbIsValueClass) )
#define ICorDebugObjectValue_GetManagedCopy(This,ppObject) \
- ( (This)->lpVtbl -> GetManagedCopy(This,ppObject) )
+ ( (This)->lpVtbl -> GetManagedCopy(This,ppObject) )
#define ICorDebugObjectValue_SetFromManagedCopy(This,pObject) \
- ( (This)->lpVtbl -> SetFromManagedCopy(This,pObject) )
+ ( (This)->lpVtbl -> SetFromManagedCopy(This,pObject) )
#endif /* COBJMACROS */
@@ -15009,49 +15100,49 @@ EXTERN_C const IID IID_ICorDebugObjectValue;
#define __ICorDebugObjectValue2_INTERFACE_DEFINED__
/* interface ICorDebugObjectValue2 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugObjectValue2;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("49E4A320-4A9B-4eca-B105-229FB7D5009F")
ICorDebugObjectValue2 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetVirtualMethodAndType(
+ virtual HRESULT STDMETHODCALLTYPE GetVirtualMethodAndType(
/* [in] */ mdMemberRef memberRef,
/* [out] */ ICorDebugFunction **ppFunction,
/* [out] */ ICorDebugType **ppType) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugObjectValue2Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugObjectValue2 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugObjectValue2 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugObjectValue2 * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetVirtualMethodAndType )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetVirtualMethodAndType )(
ICorDebugObjectValue2 * This,
/* [in] */ mdMemberRef memberRef,
/* [out] */ ICorDebugFunction **ppFunction,
/* [out] */ ICorDebugType **ppType);
-
+
END_INTERFACE
} ICorDebugObjectValue2Vtbl;
@@ -15060,23 +15151,23 @@ EXTERN_C const IID IID_ICorDebugObjectValue2;
CONST_VTBL struct ICorDebugObjectValue2Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugObjectValue2_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugObjectValue2_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugObjectValue2_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugObjectValue2_GetVirtualMethodAndType(This,memberRef,ppFunction,ppType) \
- ( (This)->lpVtbl -> GetVirtualMethodAndType(This,memberRef,ppFunction,ppType) )
+ ( (This)->lpVtbl -> GetVirtualMethodAndType(This,memberRef,ppFunction,ppType) )
#endif /* COBJMACROS */
@@ -15093,52 +15184,52 @@ EXTERN_C const IID IID_ICorDebugObjectValue2;
#define __ICorDebugDelegateObjectValue_INTERFACE_DEFINED__
/* interface ICorDebugDelegateObjectValue */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugDelegateObjectValue;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("3AF70CC7-6047-47F6-A5C5-090A1A622638")
ICorDebugDelegateObjectValue : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetTarget(
+ virtual HRESULT STDMETHODCALLTYPE GetTarget(
/* [out] */ ICorDebugReferenceValue **ppObject) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetFunction(
+
+ virtual HRESULT STDMETHODCALLTYPE GetFunction(
/* [out] */ ICorDebugFunction **ppFunction) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugDelegateObjectValueVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugDelegateObjectValue * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugDelegateObjectValue * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugDelegateObjectValue * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetTarget )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetTarget )(
ICorDebugDelegateObjectValue * This,
/* [out] */ ICorDebugReferenceValue **ppObject);
-
- HRESULT ( STDMETHODCALLTYPE *GetFunction )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetFunction )(
ICorDebugDelegateObjectValue * This,
/* [out] */ ICorDebugFunction **ppFunction);
-
+
END_INTERFACE
} ICorDebugDelegateObjectValueVtbl;
@@ -15147,26 +15238,26 @@ EXTERN_C const IID IID_ICorDebugDelegateObjectValue;
CONST_VTBL struct ICorDebugDelegateObjectValueVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugDelegateObjectValue_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugDelegateObjectValue_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugDelegateObjectValue_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugDelegateObjectValue_GetTarget(This,ppObject) \
- ( (This)->lpVtbl -> GetTarget(This,ppObject) )
+ ( (This)->lpVtbl -> GetTarget(This,ppObject) )
#define ICorDebugDelegateObjectValue_GetFunction(This,ppFunction) \
- ( (This)->lpVtbl -> GetFunction(This,ppFunction) )
+ ( (This)->lpVtbl -> GetFunction(This,ppFunction) )
#endif /* COBJMACROS */
@@ -15183,69 +15274,69 @@ EXTERN_C const IID IID_ICorDebugDelegateObjectValue;
#define __ICorDebugBoxValue_INTERFACE_DEFINED__
/* interface ICorDebugBoxValue */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugBoxValue;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("CC7BCAFC-8A68-11d2-983C-0000F808342D")
ICorDebugBoxValue : public ICorDebugHeapValue
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetObject(
+ virtual HRESULT STDMETHODCALLTYPE GetObject(
/* [out] */ ICorDebugObjectValue **ppObject) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugBoxValueVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugBoxValue * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugBoxValue * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugBoxValue * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetType )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetType )(
ICorDebugBoxValue * This,
/* [out] */ CorElementType *pType);
-
- HRESULT ( STDMETHODCALLTYPE *GetSize )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetSize )(
ICorDebugBoxValue * This,
/* [out] */ ULONG32 *pSize);
-
- HRESULT ( STDMETHODCALLTYPE *GetAddress )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetAddress )(
ICorDebugBoxValue * This,
/* [out] */ CORDB_ADDRESS *pAddress);
-
- HRESULT ( STDMETHODCALLTYPE *CreateBreakpoint )(
+
+ HRESULT ( STDMETHODCALLTYPE *CreateBreakpoint )(
ICorDebugBoxValue * This,
/* [out] */ ICorDebugValueBreakpoint **ppBreakpoint);
-
- HRESULT ( STDMETHODCALLTYPE *IsValid )(
+
+ HRESULT ( STDMETHODCALLTYPE *IsValid )(
ICorDebugBoxValue * This,
/* [out] */ BOOL *pbValid);
-
- HRESULT ( STDMETHODCALLTYPE *CreateRelocBreakpoint )(
+
+ HRESULT ( STDMETHODCALLTYPE *CreateRelocBreakpoint )(
ICorDebugBoxValue * This,
/* [out] */ ICorDebugValueBreakpoint **ppBreakpoint);
-
- HRESULT ( STDMETHODCALLTYPE *GetObject )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetObject )(
ICorDebugBoxValue * This,
/* [out] */ ICorDebugObjectValue **ppObject);
-
+
END_INTERFACE
} ICorDebugBoxValueVtbl;
@@ -15254,43 +15345,43 @@ EXTERN_C const IID IID_ICorDebugBoxValue;
CONST_VTBL struct ICorDebugBoxValueVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugBoxValue_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugBoxValue_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugBoxValue_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugBoxValue_GetType(This,pType) \
- ( (This)->lpVtbl -> GetType(This,pType) )
+ ( (This)->lpVtbl -> GetType(This,pType) )
#define ICorDebugBoxValue_GetSize(This,pSize) \
- ( (This)->lpVtbl -> GetSize(This,pSize) )
+ ( (This)->lpVtbl -> GetSize(This,pSize) )
#define ICorDebugBoxValue_GetAddress(This,pAddress) \
- ( (This)->lpVtbl -> GetAddress(This,pAddress) )
+ ( (This)->lpVtbl -> GetAddress(This,pAddress) )
#define ICorDebugBoxValue_CreateBreakpoint(This,ppBreakpoint) \
- ( (This)->lpVtbl -> CreateBreakpoint(This,ppBreakpoint) )
+ ( (This)->lpVtbl -> CreateBreakpoint(This,ppBreakpoint) )
#define ICorDebugBoxValue_IsValid(This,pbValid) \
- ( (This)->lpVtbl -> IsValid(This,pbValid) )
+ ( (This)->lpVtbl -> IsValid(This,pbValid) )
#define ICorDebugBoxValue_CreateRelocBreakpoint(This,ppBreakpoint) \
- ( (This)->lpVtbl -> CreateRelocBreakpoint(This,ppBreakpoint) )
+ ( (This)->lpVtbl -> CreateRelocBreakpoint(This,ppBreakpoint) )
#define ICorDebugBoxValue_GetObject(This,ppObject) \
- ( (This)->lpVtbl -> GetObject(This,ppObject) )
+ ( (This)->lpVtbl -> GetObject(This,ppObject) )
#endif /* COBJMACROS */
@@ -15303,94 +15394,94 @@ EXTERN_C const IID IID_ICorDebugBoxValue;
#endif /* __ICorDebugBoxValue_INTERFACE_DEFINED__ */
-/* interface __MIDL_itf_cordebug_0000_0104 */
-/* [local] */
+/* interface __MIDL_itf_cordebug_0000_0105 */
+/* [local] */
#pragma warning(push)
-#pragma warning(disable:28718)
+#pragma warning(disable:28718)
-extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0104_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0104_v0_0_s_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0105_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0105_v0_0_s_ifspec;
#ifndef __ICorDebugStringValue_INTERFACE_DEFINED__
#define __ICorDebugStringValue_INTERFACE_DEFINED__
/* interface ICorDebugStringValue */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugStringValue;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("CC7BCAFD-8A68-11d2-983C-0000F808342D")
ICorDebugStringValue : public ICorDebugHeapValue
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetLength(
+ virtual HRESULT STDMETHODCALLTYPE GetLength(
/* [out] */ ULONG32 *pcchString) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetString(
+
+ virtual HRESULT STDMETHODCALLTYPE GetString(
/* [in] */ ULONG32 cchString,
/* [out] */ ULONG32 *pcchString,
/* [length_is][size_is][out] */ WCHAR szString[ ]) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugStringValueVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugStringValue * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugStringValue * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugStringValue * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetType )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetType )(
ICorDebugStringValue * This,
/* [out] */ CorElementType *pType);
-
- HRESULT ( STDMETHODCALLTYPE *GetSize )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetSize )(
ICorDebugStringValue * This,
/* [out] */ ULONG32 *pSize);
-
- HRESULT ( STDMETHODCALLTYPE *GetAddress )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetAddress )(
ICorDebugStringValue * This,
/* [out] */ CORDB_ADDRESS *pAddress);
-
- HRESULT ( STDMETHODCALLTYPE *CreateBreakpoint )(
+
+ HRESULT ( STDMETHODCALLTYPE *CreateBreakpoint )(
ICorDebugStringValue * This,
/* [out] */ ICorDebugValueBreakpoint **ppBreakpoint);
-
- HRESULT ( STDMETHODCALLTYPE *IsValid )(
+
+ HRESULT ( STDMETHODCALLTYPE *IsValid )(
ICorDebugStringValue * This,
/* [out] */ BOOL *pbValid);
-
- HRESULT ( STDMETHODCALLTYPE *CreateRelocBreakpoint )(
+
+ HRESULT ( STDMETHODCALLTYPE *CreateRelocBreakpoint )(
ICorDebugStringValue * This,
/* [out] */ ICorDebugValueBreakpoint **ppBreakpoint);
-
- HRESULT ( STDMETHODCALLTYPE *GetLength )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetLength )(
ICorDebugStringValue * This,
/* [out] */ ULONG32 *pcchString);
-
- HRESULT ( STDMETHODCALLTYPE *GetString )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetString )(
ICorDebugStringValue * This,
/* [in] */ ULONG32 cchString,
/* [out] */ ULONG32 *pcchString,
/* [length_is][size_is][out] */ WCHAR szString[ ]);
-
+
END_INTERFACE
} ICorDebugStringValueVtbl;
@@ -15399,46 +15490,46 @@ EXTERN_C const IID IID_ICorDebugStringValue;
CONST_VTBL struct ICorDebugStringValueVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugStringValue_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugStringValue_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugStringValue_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugStringValue_GetType(This,pType) \
- ( (This)->lpVtbl -> GetType(This,pType) )
+ ( (This)->lpVtbl -> GetType(This,pType) )
#define ICorDebugStringValue_GetSize(This,pSize) \
- ( (This)->lpVtbl -> GetSize(This,pSize) )
+ ( (This)->lpVtbl -> GetSize(This,pSize) )
#define ICorDebugStringValue_GetAddress(This,pAddress) \
- ( (This)->lpVtbl -> GetAddress(This,pAddress) )
+ ( (This)->lpVtbl -> GetAddress(This,pAddress) )
#define ICorDebugStringValue_CreateBreakpoint(This,ppBreakpoint) \
- ( (This)->lpVtbl -> CreateBreakpoint(This,ppBreakpoint) )
+ ( (This)->lpVtbl -> CreateBreakpoint(This,ppBreakpoint) )
#define ICorDebugStringValue_IsValid(This,pbValid) \
- ( (This)->lpVtbl -> IsValid(This,pbValid) )
+ ( (This)->lpVtbl -> IsValid(This,pbValid) )
#define ICorDebugStringValue_CreateRelocBreakpoint(This,ppBreakpoint) \
- ( (This)->lpVtbl -> CreateRelocBreakpoint(This,ppBreakpoint) )
+ ( (This)->lpVtbl -> CreateRelocBreakpoint(This,ppBreakpoint) )
#define ICorDebugStringValue_GetLength(This,pcchString) \
- ( (This)->lpVtbl -> GetLength(This,pcchString) )
+ ( (This)->lpVtbl -> GetLength(This,pcchString) )
#define ICorDebugStringValue_GetString(This,cchString,pcchString,szString) \
- ( (This)->lpVtbl -> GetString(This,cchString,pcchString,szString) )
+ ( (This)->lpVtbl -> GetString(This,cchString,pcchString,szString) )
#endif /* COBJMACROS */
@@ -15451,141 +15542,141 @@ EXTERN_C const IID IID_ICorDebugStringValue;
#endif /* __ICorDebugStringValue_INTERFACE_DEFINED__ */
-/* interface __MIDL_itf_cordebug_0000_0105 */
-/* [local] */
+/* interface __MIDL_itf_cordebug_0000_0106 */
+/* [local] */
#pragma warning(pop)
-extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0105_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0105_v0_0_s_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0106_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0106_v0_0_s_ifspec;
#ifndef __ICorDebugArrayValue_INTERFACE_DEFINED__
#define __ICorDebugArrayValue_INTERFACE_DEFINED__
/* interface ICorDebugArrayValue */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugArrayValue;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("0405B0DF-A660-11d2-BD02-0000F80849BD")
ICorDebugArrayValue : public ICorDebugHeapValue
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetElementType(
+ virtual HRESULT STDMETHODCALLTYPE GetElementType(
/* [out] */ CorElementType *pType) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetRank(
+
+ virtual HRESULT STDMETHODCALLTYPE GetRank(
/* [out] */ ULONG32 *pnRank) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetCount(
+
+ virtual HRESULT STDMETHODCALLTYPE GetCount(
/* [out] */ ULONG32 *pnCount) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetDimensions(
+
+ virtual HRESULT STDMETHODCALLTYPE GetDimensions(
/* [in] */ ULONG32 cdim,
/* [length_is][size_is][out] */ ULONG32 dims[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE HasBaseIndicies(
+
+ virtual HRESULT STDMETHODCALLTYPE HasBaseIndicies(
/* [out] */ BOOL *pbHasBaseIndicies) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetBaseIndicies(
+
+ virtual HRESULT STDMETHODCALLTYPE GetBaseIndicies(
/* [in] */ ULONG32 cdim,
/* [length_is][size_is][out] */ ULONG32 indicies[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetElement(
+
+ virtual HRESULT STDMETHODCALLTYPE GetElement(
/* [in] */ ULONG32 cdim,
/* [length_is][size_is][in] */ ULONG32 indices[ ],
/* [out] */ ICorDebugValue **ppValue) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetElementAtPosition(
+
+ virtual HRESULT STDMETHODCALLTYPE GetElementAtPosition(
/* [in] */ ULONG32 nPosition,
/* [out] */ ICorDebugValue **ppValue) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugArrayValueVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugArrayValue * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugArrayValue * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugArrayValue * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetType )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetType )(
ICorDebugArrayValue * This,
/* [out] */ CorElementType *pType);
-
- HRESULT ( STDMETHODCALLTYPE *GetSize )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetSize )(
ICorDebugArrayValue * This,
/* [out] */ ULONG32 *pSize);
-
- HRESULT ( STDMETHODCALLTYPE *GetAddress )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetAddress )(
ICorDebugArrayValue * This,
/* [out] */ CORDB_ADDRESS *pAddress);
-
- HRESULT ( STDMETHODCALLTYPE *CreateBreakpoint )(
+
+ HRESULT ( STDMETHODCALLTYPE *CreateBreakpoint )(
ICorDebugArrayValue * This,
/* [out] */ ICorDebugValueBreakpoint **ppBreakpoint);
-
- HRESULT ( STDMETHODCALLTYPE *IsValid )(
+
+ HRESULT ( STDMETHODCALLTYPE *IsValid )(
ICorDebugArrayValue * This,
/* [out] */ BOOL *pbValid);
-
- HRESULT ( STDMETHODCALLTYPE *CreateRelocBreakpoint )(
+
+ HRESULT ( STDMETHODCALLTYPE *CreateRelocBreakpoint )(
ICorDebugArrayValue * This,
/* [out] */ ICorDebugValueBreakpoint **ppBreakpoint);
-
- HRESULT ( STDMETHODCALLTYPE *GetElementType )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetElementType )(
ICorDebugArrayValue * This,
/* [out] */ CorElementType *pType);
-
- HRESULT ( STDMETHODCALLTYPE *GetRank )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetRank )(
ICorDebugArrayValue * This,
/* [out] */ ULONG32 *pnRank);
-
- HRESULT ( STDMETHODCALLTYPE *GetCount )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCount )(
ICorDebugArrayValue * This,
/* [out] */ ULONG32 *pnCount);
-
- HRESULT ( STDMETHODCALLTYPE *GetDimensions )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetDimensions )(
ICorDebugArrayValue * This,
/* [in] */ ULONG32 cdim,
/* [length_is][size_is][out] */ ULONG32 dims[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *HasBaseIndicies )(
+
+ HRESULT ( STDMETHODCALLTYPE *HasBaseIndicies )(
ICorDebugArrayValue * This,
/* [out] */ BOOL *pbHasBaseIndicies);
-
- HRESULT ( STDMETHODCALLTYPE *GetBaseIndicies )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetBaseIndicies )(
ICorDebugArrayValue * This,
/* [in] */ ULONG32 cdim,
/* [length_is][size_is][out] */ ULONG32 indicies[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetElement )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetElement )(
ICorDebugArrayValue * This,
/* [in] */ ULONG32 cdim,
/* [length_is][size_is][in] */ ULONG32 indices[ ],
/* [out] */ ICorDebugValue **ppValue);
-
- HRESULT ( STDMETHODCALLTYPE *GetElementAtPosition )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetElementAtPosition )(
ICorDebugArrayValue * This,
/* [in] */ ULONG32 nPosition,
/* [out] */ ICorDebugValue **ppValue);
-
+
END_INTERFACE
} ICorDebugArrayValueVtbl;
@@ -15594,64 +15685,64 @@ EXTERN_C const IID IID_ICorDebugArrayValue;
CONST_VTBL struct ICorDebugArrayValueVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugArrayValue_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugArrayValue_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugArrayValue_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugArrayValue_GetType(This,pType) \
- ( (This)->lpVtbl -> GetType(This,pType) )
+ ( (This)->lpVtbl -> GetType(This,pType) )
#define ICorDebugArrayValue_GetSize(This,pSize) \
- ( (This)->lpVtbl -> GetSize(This,pSize) )
+ ( (This)->lpVtbl -> GetSize(This,pSize) )
#define ICorDebugArrayValue_GetAddress(This,pAddress) \
- ( (This)->lpVtbl -> GetAddress(This,pAddress) )
+ ( (This)->lpVtbl -> GetAddress(This,pAddress) )
#define ICorDebugArrayValue_CreateBreakpoint(This,ppBreakpoint) \
- ( (This)->lpVtbl -> CreateBreakpoint(This,ppBreakpoint) )
+ ( (This)->lpVtbl -> CreateBreakpoint(This,ppBreakpoint) )
#define ICorDebugArrayValue_IsValid(This,pbValid) \
- ( (This)->lpVtbl -> IsValid(This,pbValid) )
+ ( (This)->lpVtbl -> IsValid(This,pbValid) )
#define ICorDebugArrayValue_CreateRelocBreakpoint(This,ppBreakpoint) \
- ( (This)->lpVtbl -> CreateRelocBreakpoint(This,ppBreakpoint) )
+ ( (This)->lpVtbl -> CreateRelocBreakpoint(This,ppBreakpoint) )
#define ICorDebugArrayValue_GetElementType(This,pType) \
- ( (This)->lpVtbl -> GetElementType(This,pType) )
+ ( (This)->lpVtbl -> GetElementType(This,pType) )
#define ICorDebugArrayValue_GetRank(This,pnRank) \
- ( (This)->lpVtbl -> GetRank(This,pnRank) )
+ ( (This)->lpVtbl -> GetRank(This,pnRank) )
#define ICorDebugArrayValue_GetCount(This,pnCount) \
- ( (This)->lpVtbl -> GetCount(This,pnCount) )
+ ( (This)->lpVtbl -> GetCount(This,pnCount) )
#define ICorDebugArrayValue_GetDimensions(This,cdim,dims) \
- ( (This)->lpVtbl -> GetDimensions(This,cdim,dims) )
+ ( (This)->lpVtbl -> GetDimensions(This,cdim,dims) )
#define ICorDebugArrayValue_HasBaseIndicies(This,pbHasBaseIndicies) \
- ( (This)->lpVtbl -> HasBaseIndicies(This,pbHasBaseIndicies) )
+ ( (This)->lpVtbl -> HasBaseIndicies(This,pbHasBaseIndicies) )
#define ICorDebugArrayValue_GetBaseIndicies(This,cdim,indicies) \
- ( (This)->lpVtbl -> GetBaseIndicies(This,cdim,indicies) )
+ ( (This)->lpVtbl -> GetBaseIndicies(This,cdim,indicies) )
#define ICorDebugArrayValue_GetElement(This,cdim,indices,ppValue) \
- ( (This)->lpVtbl -> GetElement(This,cdim,indices,ppValue) )
+ ( (This)->lpVtbl -> GetElement(This,cdim,indices,ppValue) )
#define ICorDebugArrayValue_GetElementAtPosition(This,nPosition,ppValue) \
- ( (This)->lpVtbl -> GetElementAtPosition(This,nPosition,ppValue) )
+ ( (This)->lpVtbl -> GetElementAtPosition(This,nPosition,ppValue) )
#endif /* COBJMACROS */
@@ -15668,97 +15759,97 @@ EXTERN_C const IID IID_ICorDebugArrayValue;
#define __ICorDebugVariableHome_INTERFACE_DEFINED__
/* interface ICorDebugVariableHome */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
-typedef
+typedef
enum VariableLocationType
{
VLT_REGISTER = 0,
VLT_REGISTER_RELATIVE = ( VLT_REGISTER + 1 ) ,
- VLT_INVALID = ( VLT_REGISTER_RELATIVE + 1 )
+ VLT_INVALID = ( VLT_REGISTER_RELATIVE + 1 )
} VariableLocationType;
EXTERN_C const IID IID_ICorDebugVariableHome;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("50847b8d-f43f-41b0-924c-6383a5f2278b")
ICorDebugVariableHome : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetCode(
+ virtual HRESULT STDMETHODCALLTYPE GetCode(
/* [out] */ ICorDebugCode **ppCode) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetSlotIndex(
+
+ virtual HRESULT STDMETHODCALLTYPE GetSlotIndex(
/* [out] */ ULONG32 *pSlotIndex) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetArgumentIndex(
+
+ virtual HRESULT STDMETHODCALLTYPE GetArgumentIndex(
/* [out] */ ULONG32 *pArgumentIndex) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetLiveRange(
+
+ virtual HRESULT STDMETHODCALLTYPE GetLiveRange(
/* [out] */ ULONG32 *pStartOffset,
/* [out] */ ULONG32 *pEndOffset) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetLocationType(
+
+ virtual HRESULT STDMETHODCALLTYPE GetLocationType(
/* [out] */ VariableLocationType *pLocationType) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetRegister(
+
+ virtual HRESULT STDMETHODCALLTYPE GetRegister(
/* [out] */ CorDebugRegister *pRegister) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetOffset(
+
+ virtual HRESULT STDMETHODCALLTYPE GetOffset(
/* [out] */ LONG *pOffset) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugVariableHomeVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugVariableHome * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugVariableHome * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugVariableHome * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetCode )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCode )(
ICorDebugVariableHome * This,
/* [out] */ ICorDebugCode **ppCode);
-
- HRESULT ( STDMETHODCALLTYPE *GetSlotIndex )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetSlotIndex )(
ICorDebugVariableHome * This,
/* [out] */ ULONG32 *pSlotIndex);
-
- HRESULT ( STDMETHODCALLTYPE *GetArgumentIndex )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetArgumentIndex )(
ICorDebugVariableHome * This,
/* [out] */ ULONG32 *pArgumentIndex);
-
- HRESULT ( STDMETHODCALLTYPE *GetLiveRange )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetLiveRange )(
ICorDebugVariableHome * This,
/* [out] */ ULONG32 *pStartOffset,
/* [out] */ ULONG32 *pEndOffset);
-
- HRESULT ( STDMETHODCALLTYPE *GetLocationType )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetLocationType )(
ICorDebugVariableHome * This,
/* [out] */ VariableLocationType *pLocationType);
-
- HRESULT ( STDMETHODCALLTYPE *GetRegister )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetRegister )(
ICorDebugVariableHome * This,
/* [out] */ CorDebugRegister *pRegister);
-
- HRESULT ( STDMETHODCALLTYPE *GetOffset )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetOffset )(
ICorDebugVariableHome * This,
/* [out] */ LONG *pOffset);
-
+
END_INTERFACE
} ICorDebugVariableHomeVtbl;
@@ -15767,41 +15858,41 @@ EXTERN_C const IID IID_ICorDebugVariableHome;
CONST_VTBL struct ICorDebugVariableHomeVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugVariableHome_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugVariableHome_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugVariableHome_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugVariableHome_GetCode(This,ppCode) \
- ( (This)->lpVtbl -> GetCode(This,ppCode) )
+ ( (This)->lpVtbl -> GetCode(This,ppCode) )
#define ICorDebugVariableHome_GetSlotIndex(This,pSlotIndex) \
- ( (This)->lpVtbl -> GetSlotIndex(This,pSlotIndex) )
+ ( (This)->lpVtbl -> GetSlotIndex(This,pSlotIndex) )
#define ICorDebugVariableHome_GetArgumentIndex(This,pArgumentIndex) \
- ( (This)->lpVtbl -> GetArgumentIndex(This,pArgumentIndex) )
+ ( (This)->lpVtbl -> GetArgumentIndex(This,pArgumentIndex) )
#define ICorDebugVariableHome_GetLiveRange(This,pStartOffset,pEndOffset) \
- ( (This)->lpVtbl -> GetLiveRange(This,pStartOffset,pEndOffset) )
+ ( (This)->lpVtbl -> GetLiveRange(This,pStartOffset,pEndOffset) )
#define ICorDebugVariableHome_GetLocationType(This,pLocationType) \
- ( (This)->lpVtbl -> GetLocationType(This,pLocationType) )
+ ( (This)->lpVtbl -> GetLocationType(This,pLocationType) )
#define ICorDebugVariableHome_GetRegister(This,pRegister) \
- ( (This)->lpVtbl -> GetRegister(This,pRegister) )
+ ( (This)->lpVtbl -> GetRegister(This,pRegister) )
#define ICorDebugVariableHome_GetOffset(This,pOffset) \
- ( (This)->lpVtbl -> GetOffset(This,pOffset) )
+ ( (This)->lpVtbl -> GetOffset(This,pOffset) )
#endif /* COBJMACROS */
@@ -15818,86 +15909,86 @@ EXTERN_C const IID IID_ICorDebugVariableHome;
#define __ICorDebugHandleValue_INTERFACE_DEFINED__
/* interface ICorDebugHandleValue */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugHandleValue;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("029596E8-276B-46a1-9821-732E96BBB00B")
ICorDebugHandleValue : public ICorDebugReferenceValue
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetHandleType(
+ virtual HRESULT STDMETHODCALLTYPE GetHandleType(
/* [out] */ CorDebugHandleType *pType) = 0;
-
+
virtual HRESULT STDMETHODCALLTYPE Dispose( void) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugHandleValueVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugHandleValue * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugHandleValue * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugHandleValue * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetType )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetType )(
ICorDebugHandleValue * This,
/* [out] */ CorElementType *pType);
-
- HRESULT ( STDMETHODCALLTYPE *GetSize )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetSize )(
ICorDebugHandleValue * This,
/* [out] */ ULONG32 *pSize);
-
- HRESULT ( STDMETHODCALLTYPE *GetAddress )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetAddress )(
ICorDebugHandleValue * This,
/* [out] */ CORDB_ADDRESS *pAddress);
-
- HRESULT ( STDMETHODCALLTYPE *CreateBreakpoint )(
+
+ HRESULT ( STDMETHODCALLTYPE *CreateBreakpoint )(
ICorDebugHandleValue * This,
/* [out] */ ICorDebugValueBreakpoint **ppBreakpoint);
-
- HRESULT ( STDMETHODCALLTYPE *IsNull )(
+
+ HRESULT ( STDMETHODCALLTYPE *IsNull )(
ICorDebugHandleValue * This,
/* [out] */ BOOL *pbNull);
-
- HRESULT ( STDMETHODCALLTYPE *GetValue )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetValue )(
ICorDebugHandleValue * This,
/* [out] */ CORDB_ADDRESS *pValue);
-
- HRESULT ( STDMETHODCALLTYPE *SetValue )(
+
+ HRESULT ( STDMETHODCALLTYPE *SetValue )(
ICorDebugHandleValue * This,
/* [in] */ CORDB_ADDRESS value);
-
- HRESULT ( STDMETHODCALLTYPE *Dereference )(
+
+ HRESULT ( STDMETHODCALLTYPE *Dereference )(
ICorDebugHandleValue * This,
/* [out] */ ICorDebugValue **ppValue);
-
- HRESULT ( STDMETHODCALLTYPE *DereferenceStrong )(
+
+ HRESULT ( STDMETHODCALLTYPE *DereferenceStrong )(
ICorDebugHandleValue * This,
/* [out] */ ICorDebugValue **ppValue);
-
- HRESULT ( STDMETHODCALLTYPE *GetHandleType )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetHandleType )(
ICorDebugHandleValue * This,
/* [out] */ CorDebugHandleType *pType);
-
- HRESULT ( STDMETHODCALLTYPE *Dispose )(
+
+ HRESULT ( STDMETHODCALLTYPE *Dispose )(
ICorDebugHandleValue * This);
-
+
END_INTERFACE
} ICorDebugHandleValueVtbl;
@@ -15906,55 +15997,55 @@ EXTERN_C const IID IID_ICorDebugHandleValue;
CONST_VTBL struct ICorDebugHandleValueVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugHandleValue_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugHandleValue_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugHandleValue_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugHandleValue_GetType(This,pType) \
- ( (This)->lpVtbl -> GetType(This,pType) )
+ ( (This)->lpVtbl -> GetType(This,pType) )
#define ICorDebugHandleValue_GetSize(This,pSize) \
- ( (This)->lpVtbl -> GetSize(This,pSize) )
+ ( (This)->lpVtbl -> GetSize(This,pSize) )
#define ICorDebugHandleValue_GetAddress(This,pAddress) \
- ( (This)->lpVtbl -> GetAddress(This,pAddress) )
+ ( (This)->lpVtbl -> GetAddress(This,pAddress) )
#define ICorDebugHandleValue_CreateBreakpoint(This,ppBreakpoint) \
- ( (This)->lpVtbl -> CreateBreakpoint(This,ppBreakpoint) )
+ ( (This)->lpVtbl -> CreateBreakpoint(This,ppBreakpoint) )
#define ICorDebugHandleValue_IsNull(This,pbNull) \
- ( (This)->lpVtbl -> IsNull(This,pbNull) )
+ ( (This)->lpVtbl -> IsNull(This,pbNull) )
#define ICorDebugHandleValue_GetValue(This,pValue) \
- ( (This)->lpVtbl -> GetValue(This,pValue) )
+ ( (This)->lpVtbl -> GetValue(This,pValue) )
#define ICorDebugHandleValue_SetValue(This,value) \
- ( (This)->lpVtbl -> SetValue(This,value) )
+ ( (This)->lpVtbl -> SetValue(This,value) )
#define ICorDebugHandleValue_Dereference(This,ppValue) \
- ( (This)->lpVtbl -> Dereference(This,ppValue) )
+ ( (This)->lpVtbl -> Dereference(This,ppValue) )
#define ICorDebugHandleValue_DereferenceStrong(This,ppValue) \
- ( (This)->lpVtbl -> DereferenceStrong(This,ppValue) )
+ ( (This)->lpVtbl -> DereferenceStrong(This,ppValue) )
#define ICorDebugHandleValue_GetHandleType(This,pType) \
- ( (This)->lpVtbl -> GetHandleType(This,pType) )
+ ( (This)->lpVtbl -> GetHandleType(This,pType) )
#define ICorDebugHandleValue_Dispose(This) \
- ( (This)->lpVtbl -> Dispose(This) )
+ ( (This)->lpVtbl -> Dispose(This) )
#endif /* COBJMACROS */
@@ -15971,85 +16062,85 @@ EXTERN_C const IID IID_ICorDebugHandleValue;
#define __ICorDebugContext_INTERFACE_DEFINED__
/* interface ICorDebugContext */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugContext;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("CC7BCB00-8A68-11d2-983C-0000F808342D")
ICorDebugContext : public ICorDebugObjectValue
{
public:
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugContextVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugContext * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugContext * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugContext * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetType )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetType )(
ICorDebugContext * This,
/* [out] */ CorElementType *pType);
-
- HRESULT ( STDMETHODCALLTYPE *GetSize )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetSize )(
ICorDebugContext * This,
/* [out] */ ULONG32 *pSize);
-
- HRESULT ( STDMETHODCALLTYPE *GetAddress )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetAddress )(
ICorDebugContext * This,
/* [out] */ CORDB_ADDRESS *pAddress);
-
- HRESULT ( STDMETHODCALLTYPE *CreateBreakpoint )(
+
+ HRESULT ( STDMETHODCALLTYPE *CreateBreakpoint )(
ICorDebugContext * This,
/* [out] */ ICorDebugValueBreakpoint **ppBreakpoint);
-
- HRESULT ( STDMETHODCALLTYPE *GetClass )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetClass )(
ICorDebugContext * This,
/* [out] */ ICorDebugClass **ppClass);
-
- HRESULT ( STDMETHODCALLTYPE *GetFieldValue )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetFieldValue )(
ICorDebugContext * This,
/* [in] */ ICorDebugClass *pClass,
/* [in] */ mdFieldDef fieldDef,
/* [out] */ ICorDebugValue **ppValue);
-
- HRESULT ( STDMETHODCALLTYPE *GetVirtualMethod )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetVirtualMethod )(
ICorDebugContext * This,
/* [in] */ mdMemberRef memberRef,
/* [out] */ ICorDebugFunction **ppFunction);
-
- HRESULT ( STDMETHODCALLTYPE *GetContext )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetContext )(
ICorDebugContext * This,
/* [out] */ ICorDebugContext **ppContext);
-
- HRESULT ( STDMETHODCALLTYPE *IsValueClass )(
+
+ HRESULT ( STDMETHODCALLTYPE *IsValueClass )(
ICorDebugContext * This,
/* [out] */ BOOL *pbIsValueClass);
-
- HRESULT ( STDMETHODCALLTYPE *GetManagedCopy )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetManagedCopy )(
ICorDebugContext * This,
/* [out] */ IUnknown **ppObject);
-
- HRESULT ( STDMETHODCALLTYPE *SetFromManagedCopy )(
+
+ HRESULT ( STDMETHODCALLTYPE *SetFromManagedCopy )(
ICorDebugContext * This,
/* [in] */ IUnknown *pObject);
-
+
END_INTERFACE
} ICorDebugContextVtbl;
@@ -16058,54 +16149,54 @@ EXTERN_C const IID IID_ICorDebugContext;
CONST_VTBL struct ICorDebugContextVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugContext_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugContext_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugContext_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugContext_GetType(This,pType) \
- ( (This)->lpVtbl -> GetType(This,pType) )
+ ( (This)->lpVtbl -> GetType(This,pType) )
#define ICorDebugContext_GetSize(This,pSize) \
- ( (This)->lpVtbl -> GetSize(This,pSize) )
+ ( (This)->lpVtbl -> GetSize(This,pSize) )
#define ICorDebugContext_GetAddress(This,pAddress) \
- ( (This)->lpVtbl -> GetAddress(This,pAddress) )
+ ( (This)->lpVtbl -> GetAddress(This,pAddress) )
#define ICorDebugContext_CreateBreakpoint(This,ppBreakpoint) \
- ( (This)->lpVtbl -> CreateBreakpoint(This,ppBreakpoint) )
+ ( (This)->lpVtbl -> CreateBreakpoint(This,ppBreakpoint) )
#define ICorDebugContext_GetClass(This,ppClass) \
- ( (This)->lpVtbl -> GetClass(This,ppClass) )
+ ( (This)->lpVtbl -> GetClass(This,ppClass) )
#define ICorDebugContext_GetFieldValue(This,pClass,fieldDef,ppValue) \
- ( (This)->lpVtbl -> GetFieldValue(This,pClass,fieldDef,ppValue) )
+ ( (This)->lpVtbl -> GetFieldValue(This,pClass,fieldDef,ppValue) )
#define ICorDebugContext_GetVirtualMethod(This,memberRef,ppFunction) \
- ( (This)->lpVtbl -> GetVirtualMethod(This,memberRef,ppFunction) )
+ ( (This)->lpVtbl -> GetVirtualMethod(This,memberRef,ppFunction) )
#define ICorDebugContext_GetContext(This,ppContext) \
- ( (This)->lpVtbl -> GetContext(This,ppContext) )
+ ( (This)->lpVtbl -> GetContext(This,ppContext) )
#define ICorDebugContext_IsValueClass(This,pbIsValueClass) \
- ( (This)->lpVtbl -> IsValueClass(This,pbIsValueClass) )
+ ( (This)->lpVtbl -> IsValueClass(This,pbIsValueClass) )
#define ICorDebugContext_GetManagedCopy(This,ppObject) \
- ( (This)->lpVtbl -> GetManagedCopy(This,ppObject) )
+ ( (This)->lpVtbl -> GetManagedCopy(This,ppObject) )
#define ICorDebugContext_SetFromManagedCopy(This,pObject) \
- ( (This)->lpVtbl -> SetFromManagedCopy(This,pObject) )
+ ( (This)->lpVtbl -> SetFromManagedCopy(This,pObject) )
#endif /* COBJMACROS */
@@ -16123,60 +16214,60 @@ EXTERN_C const IID IID_ICorDebugContext;
#define __ICorDebugComObjectValue_INTERFACE_DEFINED__
/* interface ICorDebugComObjectValue */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugComObjectValue;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("5F69C5E5-3E12-42DF-B371-F9D761D6EE24")
ICorDebugComObjectValue : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetCachedInterfaceTypes(
+ virtual HRESULT STDMETHODCALLTYPE GetCachedInterfaceTypes(
/* [in] */ BOOL bIInspectableOnly,
/* [out] */ ICorDebugTypeEnum **ppInterfacesEnum) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetCachedInterfacePointers(
+
+ virtual HRESULT STDMETHODCALLTYPE GetCachedInterfacePointers(
/* [in] */ BOOL bIInspectableOnly,
/* [in] */ ULONG32 celt,
/* [out] */ ULONG32 *pcEltFetched,
/* [length_is][size_is][out] */ CORDB_ADDRESS *ptrs) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugComObjectValueVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugComObjectValue * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugComObjectValue * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugComObjectValue * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetCachedInterfaceTypes )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCachedInterfaceTypes )(
ICorDebugComObjectValue * This,
/* [in] */ BOOL bIInspectableOnly,
/* [out] */ ICorDebugTypeEnum **ppInterfacesEnum);
-
- HRESULT ( STDMETHODCALLTYPE *GetCachedInterfacePointers )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCachedInterfacePointers )(
ICorDebugComObjectValue * This,
/* [in] */ BOOL bIInspectableOnly,
/* [in] */ ULONG32 celt,
/* [out] */ ULONG32 *pcEltFetched,
/* [length_is][size_is][out] */ CORDB_ADDRESS *ptrs);
-
+
END_INTERFACE
} ICorDebugComObjectValueVtbl;
@@ -16185,26 +16276,26 @@ EXTERN_C const IID IID_ICorDebugComObjectValue;
CONST_VTBL struct ICorDebugComObjectValueVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugComObjectValue_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugComObjectValue_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugComObjectValue_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugComObjectValue_GetCachedInterfaceTypes(This,bIInspectableOnly,ppInterfacesEnum) \
- ( (This)->lpVtbl -> GetCachedInterfaceTypes(This,bIInspectableOnly,ppInterfacesEnum) )
+ ( (This)->lpVtbl -> GetCachedInterfaceTypes(This,bIInspectableOnly,ppInterfacesEnum) )
#define ICorDebugComObjectValue_GetCachedInterfacePointers(This,bIInspectableOnly,celt,pcEltFetched,ptrs) \
- ( (This)->lpVtbl -> GetCachedInterfacePointers(This,bIInspectableOnly,celt,pcEltFetched,ptrs) )
+ ( (This)->lpVtbl -> GetCachedInterfacePointers(This,bIInspectableOnly,celt,pcEltFetched,ptrs) )
#endif /* COBJMACROS */
@@ -16221,64 +16312,64 @@ EXTERN_C const IID IID_ICorDebugComObjectValue;
#define __ICorDebugObjectEnum_INTERFACE_DEFINED__
/* interface ICorDebugObjectEnum */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugObjectEnum;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("CC7BCB02-8A68-11d2-983C-0000F808342D")
ICorDebugObjectEnum : public ICorDebugEnum
{
public:
- virtual HRESULT STDMETHODCALLTYPE Next(
+ virtual HRESULT STDMETHODCALLTYPE Next(
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ CORDB_ADDRESS objects[ ],
/* [out] */ ULONG *pceltFetched) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugObjectEnumVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugObjectEnum * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugObjectEnum * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugObjectEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Skip )(
+
+ HRESULT ( STDMETHODCALLTYPE *Skip )(
ICorDebugObjectEnum * This,
/* [in] */ ULONG celt);
-
- HRESULT ( STDMETHODCALLTYPE *Reset )(
+
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
ICorDebugObjectEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Clone )(
+
+ HRESULT ( STDMETHODCALLTYPE *Clone )(
ICorDebugObjectEnum * This,
/* [out] */ ICorDebugEnum **ppEnum);
-
- HRESULT ( STDMETHODCALLTYPE *GetCount )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCount )(
ICorDebugObjectEnum * This,
/* [out] */ ULONG *pcelt);
-
- HRESULT ( STDMETHODCALLTYPE *Next )(
+
+ HRESULT ( STDMETHODCALLTYPE *Next )(
ICorDebugObjectEnum * This,
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ CORDB_ADDRESS objects[ ],
/* [out] */ ULONG *pceltFetched);
-
+
END_INTERFACE
} ICorDebugObjectEnumVtbl;
@@ -16287,36 +16378,36 @@ EXTERN_C const IID IID_ICorDebugObjectEnum;
CONST_VTBL struct ICorDebugObjectEnumVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugObjectEnum_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugObjectEnum_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugObjectEnum_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugObjectEnum_Skip(This,celt) \
- ( (This)->lpVtbl -> Skip(This,celt) )
+ ( (This)->lpVtbl -> Skip(This,celt) )
#define ICorDebugObjectEnum_Reset(This) \
- ( (This)->lpVtbl -> Reset(This) )
+ ( (This)->lpVtbl -> Reset(This) )
#define ICorDebugObjectEnum_Clone(This,ppEnum) \
- ( (This)->lpVtbl -> Clone(This,ppEnum) )
+ ( (This)->lpVtbl -> Clone(This,ppEnum) )
#define ICorDebugObjectEnum_GetCount(This,pcelt) \
- ( (This)->lpVtbl -> GetCount(This,pcelt) )
+ ( (This)->lpVtbl -> GetCount(This,pcelt) )
#define ICorDebugObjectEnum_Next(This,celt,objects,pceltFetched) \
- ( (This)->lpVtbl -> Next(This,celt,objects,pceltFetched) )
+ ( (This)->lpVtbl -> Next(This,celt,objects,pceltFetched) )
#endif /* COBJMACROS */
@@ -16333,64 +16424,64 @@ EXTERN_C const IID IID_ICorDebugObjectEnum;
#define __ICorDebugBreakpointEnum_INTERFACE_DEFINED__
/* interface ICorDebugBreakpointEnum */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugBreakpointEnum;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("CC7BCB03-8A68-11d2-983C-0000F808342D")
ICorDebugBreakpointEnum : public ICorDebugEnum
{
public:
- virtual HRESULT STDMETHODCALLTYPE Next(
+ virtual HRESULT STDMETHODCALLTYPE Next(
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ ICorDebugBreakpoint *breakpoints[ ],
/* [out] */ ULONG *pceltFetched) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugBreakpointEnumVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugBreakpointEnum * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugBreakpointEnum * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugBreakpointEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Skip )(
+
+ HRESULT ( STDMETHODCALLTYPE *Skip )(
ICorDebugBreakpointEnum * This,
/* [in] */ ULONG celt);
-
- HRESULT ( STDMETHODCALLTYPE *Reset )(
+
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
ICorDebugBreakpointEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Clone )(
+
+ HRESULT ( STDMETHODCALLTYPE *Clone )(
ICorDebugBreakpointEnum * This,
/* [out] */ ICorDebugEnum **ppEnum);
-
- HRESULT ( STDMETHODCALLTYPE *GetCount )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCount )(
ICorDebugBreakpointEnum * This,
/* [out] */ ULONG *pcelt);
-
- HRESULT ( STDMETHODCALLTYPE *Next )(
+
+ HRESULT ( STDMETHODCALLTYPE *Next )(
ICorDebugBreakpointEnum * This,
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ ICorDebugBreakpoint *breakpoints[ ],
/* [out] */ ULONG *pceltFetched);
-
+
END_INTERFACE
} ICorDebugBreakpointEnumVtbl;
@@ -16399,36 +16490,36 @@ EXTERN_C const IID IID_ICorDebugBreakpointEnum;
CONST_VTBL struct ICorDebugBreakpointEnumVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugBreakpointEnum_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugBreakpointEnum_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugBreakpointEnum_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugBreakpointEnum_Skip(This,celt) \
- ( (This)->lpVtbl -> Skip(This,celt) )
+ ( (This)->lpVtbl -> Skip(This,celt) )
#define ICorDebugBreakpointEnum_Reset(This) \
- ( (This)->lpVtbl -> Reset(This) )
+ ( (This)->lpVtbl -> Reset(This) )
#define ICorDebugBreakpointEnum_Clone(This,ppEnum) \
- ( (This)->lpVtbl -> Clone(This,ppEnum) )
+ ( (This)->lpVtbl -> Clone(This,ppEnum) )
#define ICorDebugBreakpointEnum_GetCount(This,pcelt) \
- ( (This)->lpVtbl -> GetCount(This,pcelt) )
+ ( (This)->lpVtbl -> GetCount(This,pcelt) )
#define ICorDebugBreakpointEnum_Next(This,celt,breakpoints,pceltFetched) \
- ( (This)->lpVtbl -> Next(This,celt,breakpoints,pceltFetched) )
+ ( (This)->lpVtbl -> Next(This,celt,breakpoints,pceltFetched) )
#endif /* COBJMACROS */
@@ -16445,64 +16536,64 @@ EXTERN_C const IID IID_ICorDebugBreakpointEnum;
#define __ICorDebugStepperEnum_INTERFACE_DEFINED__
/* interface ICorDebugStepperEnum */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugStepperEnum;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("CC7BCB04-8A68-11d2-983C-0000F808342D")
ICorDebugStepperEnum : public ICorDebugEnum
{
public:
- virtual HRESULT STDMETHODCALLTYPE Next(
+ virtual HRESULT STDMETHODCALLTYPE Next(
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ ICorDebugStepper *steppers[ ],
/* [out] */ ULONG *pceltFetched) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugStepperEnumVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugStepperEnum * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugStepperEnum * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugStepperEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Skip )(
+
+ HRESULT ( STDMETHODCALLTYPE *Skip )(
ICorDebugStepperEnum * This,
/* [in] */ ULONG celt);
-
- HRESULT ( STDMETHODCALLTYPE *Reset )(
+
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
ICorDebugStepperEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Clone )(
+
+ HRESULT ( STDMETHODCALLTYPE *Clone )(
ICorDebugStepperEnum * This,
/* [out] */ ICorDebugEnum **ppEnum);
-
- HRESULT ( STDMETHODCALLTYPE *GetCount )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCount )(
ICorDebugStepperEnum * This,
/* [out] */ ULONG *pcelt);
-
- HRESULT ( STDMETHODCALLTYPE *Next )(
+
+ HRESULT ( STDMETHODCALLTYPE *Next )(
ICorDebugStepperEnum * This,
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ ICorDebugStepper *steppers[ ],
/* [out] */ ULONG *pceltFetched);
-
+
END_INTERFACE
} ICorDebugStepperEnumVtbl;
@@ -16511,36 +16602,36 @@ EXTERN_C const IID IID_ICorDebugStepperEnum;
CONST_VTBL struct ICorDebugStepperEnumVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugStepperEnum_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugStepperEnum_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugStepperEnum_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugStepperEnum_Skip(This,celt) \
- ( (This)->lpVtbl -> Skip(This,celt) )
+ ( (This)->lpVtbl -> Skip(This,celt) )
#define ICorDebugStepperEnum_Reset(This) \
- ( (This)->lpVtbl -> Reset(This) )
+ ( (This)->lpVtbl -> Reset(This) )
#define ICorDebugStepperEnum_Clone(This,ppEnum) \
- ( (This)->lpVtbl -> Clone(This,ppEnum) )
+ ( (This)->lpVtbl -> Clone(This,ppEnum) )
#define ICorDebugStepperEnum_GetCount(This,pcelt) \
- ( (This)->lpVtbl -> GetCount(This,pcelt) )
+ ( (This)->lpVtbl -> GetCount(This,pcelt) )
#define ICorDebugStepperEnum_Next(This,celt,steppers,pceltFetched) \
- ( (This)->lpVtbl -> Next(This,celt,steppers,pceltFetched) )
+ ( (This)->lpVtbl -> Next(This,celt,steppers,pceltFetched) )
#endif /* COBJMACROS */
@@ -16557,64 +16648,64 @@ EXTERN_C const IID IID_ICorDebugStepperEnum;
#define __ICorDebugProcessEnum_INTERFACE_DEFINED__
/* interface ICorDebugProcessEnum */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugProcessEnum;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("CC7BCB05-8A68-11d2-983C-0000F808342D")
ICorDebugProcessEnum : public ICorDebugEnum
{
public:
- virtual HRESULT STDMETHODCALLTYPE Next(
+ virtual HRESULT STDMETHODCALLTYPE Next(
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ ICorDebugProcess *processes[ ],
/* [out] */ ULONG *pceltFetched) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugProcessEnumVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugProcessEnum * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugProcessEnum * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugProcessEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Skip )(
+
+ HRESULT ( STDMETHODCALLTYPE *Skip )(
ICorDebugProcessEnum * This,
/* [in] */ ULONG celt);
-
- HRESULT ( STDMETHODCALLTYPE *Reset )(
+
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
ICorDebugProcessEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Clone )(
+
+ HRESULT ( STDMETHODCALLTYPE *Clone )(
ICorDebugProcessEnum * This,
/* [out] */ ICorDebugEnum **ppEnum);
-
- HRESULT ( STDMETHODCALLTYPE *GetCount )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCount )(
ICorDebugProcessEnum * This,
/* [out] */ ULONG *pcelt);
-
- HRESULT ( STDMETHODCALLTYPE *Next )(
+
+ HRESULT ( STDMETHODCALLTYPE *Next )(
ICorDebugProcessEnum * This,
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ ICorDebugProcess *processes[ ],
/* [out] */ ULONG *pceltFetched);
-
+
END_INTERFACE
} ICorDebugProcessEnumVtbl;
@@ -16623,36 +16714,36 @@ EXTERN_C const IID IID_ICorDebugProcessEnum;
CONST_VTBL struct ICorDebugProcessEnumVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugProcessEnum_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugProcessEnum_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugProcessEnum_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugProcessEnum_Skip(This,celt) \
- ( (This)->lpVtbl -> Skip(This,celt) )
+ ( (This)->lpVtbl -> Skip(This,celt) )
#define ICorDebugProcessEnum_Reset(This) \
- ( (This)->lpVtbl -> Reset(This) )
+ ( (This)->lpVtbl -> Reset(This) )
#define ICorDebugProcessEnum_Clone(This,ppEnum) \
- ( (This)->lpVtbl -> Clone(This,ppEnum) )
+ ( (This)->lpVtbl -> Clone(This,ppEnum) )
#define ICorDebugProcessEnum_GetCount(This,pcelt) \
- ( (This)->lpVtbl -> GetCount(This,pcelt) )
+ ( (This)->lpVtbl -> GetCount(This,pcelt) )
#define ICorDebugProcessEnum_Next(This,celt,processes,pceltFetched) \
- ( (This)->lpVtbl -> Next(This,celt,processes,pceltFetched) )
+ ( (This)->lpVtbl -> Next(This,celt,processes,pceltFetched) )
#endif /* COBJMACROS */
@@ -16669,64 +16760,64 @@ EXTERN_C const IID IID_ICorDebugProcessEnum;
#define __ICorDebugThreadEnum_INTERFACE_DEFINED__
/* interface ICorDebugThreadEnum */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugThreadEnum;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("CC7BCB06-8A68-11d2-983C-0000F808342D")
ICorDebugThreadEnum : public ICorDebugEnum
{
public:
- virtual HRESULT STDMETHODCALLTYPE Next(
+ virtual HRESULT STDMETHODCALLTYPE Next(
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ ICorDebugThread *threads[ ],
/* [out] */ ULONG *pceltFetched) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugThreadEnumVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugThreadEnum * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugThreadEnum * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugThreadEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Skip )(
+
+ HRESULT ( STDMETHODCALLTYPE *Skip )(
ICorDebugThreadEnum * This,
/* [in] */ ULONG celt);
-
- HRESULT ( STDMETHODCALLTYPE *Reset )(
+
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
ICorDebugThreadEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Clone )(
+
+ HRESULT ( STDMETHODCALLTYPE *Clone )(
ICorDebugThreadEnum * This,
/* [out] */ ICorDebugEnum **ppEnum);
-
- HRESULT ( STDMETHODCALLTYPE *GetCount )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCount )(
ICorDebugThreadEnum * This,
/* [out] */ ULONG *pcelt);
-
- HRESULT ( STDMETHODCALLTYPE *Next )(
+
+ HRESULT ( STDMETHODCALLTYPE *Next )(
ICorDebugThreadEnum * This,
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ ICorDebugThread *threads[ ],
/* [out] */ ULONG *pceltFetched);
-
+
END_INTERFACE
} ICorDebugThreadEnumVtbl;
@@ -16735,36 +16826,36 @@ EXTERN_C const IID IID_ICorDebugThreadEnum;
CONST_VTBL struct ICorDebugThreadEnumVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugThreadEnum_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugThreadEnum_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugThreadEnum_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugThreadEnum_Skip(This,celt) \
- ( (This)->lpVtbl -> Skip(This,celt) )
+ ( (This)->lpVtbl -> Skip(This,celt) )
#define ICorDebugThreadEnum_Reset(This) \
- ( (This)->lpVtbl -> Reset(This) )
+ ( (This)->lpVtbl -> Reset(This) )
#define ICorDebugThreadEnum_Clone(This,ppEnum) \
- ( (This)->lpVtbl -> Clone(This,ppEnum) )
+ ( (This)->lpVtbl -> Clone(This,ppEnum) )
#define ICorDebugThreadEnum_GetCount(This,pcelt) \
- ( (This)->lpVtbl -> GetCount(This,pcelt) )
+ ( (This)->lpVtbl -> GetCount(This,pcelt) )
#define ICorDebugThreadEnum_Next(This,celt,threads,pceltFetched) \
- ( (This)->lpVtbl -> Next(This,celt,threads,pceltFetched) )
+ ( (This)->lpVtbl -> Next(This,celt,threads,pceltFetched) )
#endif /* COBJMACROS */
@@ -16781,64 +16872,64 @@ EXTERN_C const IID IID_ICorDebugThreadEnum;
#define __ICorDebugFrameEnum_INTERFACE_DEFINED__
/* interface ICorDebugFrameEnum */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugFrameEnum;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("CC7BCB07-8A68-11d2-983C-0000F808342D")
ICorDebugFrameEnum : public ICorDebugEnum
{
public:
- virtual HRESULT STDMETHODCALLTYPE Next(
+ virtual HRESULT STDMETHODCALLTYPE Next(
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ ICorDebugFrame *frames[ ],
/* [out] */ ULONG *pceltFetched) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugFrameEnumVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugFrameEnum * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugFrameEnum * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugFrameEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Skip )(
+
+ HRESULT ( STDMETHODCALLTYPE *Skip )(
ICorDebugFrameEnum * This,
/* [in] */ ULONG celt);
-
- HRESULT ( STDMETHODCALLTYPE *Reset )(
+
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
ICorDebugFrameEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Clone )(
+
+ HRESULT ( STDMETHODCALLTYPE *Clone )(
ICorDebugFrameEnum * This,
/* [out] */ ICorDebugEnum **ppEnum);
-
- HRESULT ( STDMETHODCALLTYPE *GetCount )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCount )(
ICorDebugFrameEnum * This,
/* [out] */ ULONG *pcelt);
-
- HRESULT ( STDMETHODCALLTYPE *Next )(
+
+ HRESULT ( STDMETHODCALLTYPE *Next )(
ICorDebugFrameEnum * This,
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ ICorDebugFrame *frames[ ],
/* [out] */ ULONG *pceltFetched);
-
+
END_INTERFACE
} ICorDebugFrameEnumVtbl;
@@ -16847,36 +16938,36 @@ EXTERN_C const IID IID_ICorDebugFrameEnum;
CONST_VTBL struct ICorDebugFrameEnumVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugFrameEnum_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugFrameEnum_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugFrameEnum_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugFrameEnum_Skip(This,celt) \
- ( (This)->lpVtbl -> Skip(This,celt) )
+ ( (This)->lpVtbl -> Skip(This,celt) )
#define ICorDebugFrameEnum_Reset(This) \
- ( (This)->lpVtbl -> Reset(This) )
+ ( (This)->lpVtbl -> Reset(This) )
#define ICorDebugFrameEnum_Clone(This,ppEnum) \
- ( (This)->lpVtbl -> Clone(This,ppEnum) )
+ ( (This)->lpVtbl -> Clone(This,ppEnum) )
#define ICorDebugFrameEnum_GetCount(This,pcelt) \
- ( (This)->lpVtbl -> GetCount(This,pcelt) )
+ ( (This)->lpVtbl -> GetCount(This,pcelt) )
#define ICorDebugFrameEnum_Next(This,celt,frames,pceltFetched) \
- ( (This)->lpVtbl -> Next(This,celt,frames,pceltFetched) )
+ ( (This)->lpVtbl -> Next(This,celt,frames,pceltFetched) )
#endif /* COBJMACROS */
@@ -16893,64 +16984,64 @@ EXTERN_C const IID IID_ICorDebugFrameEnum;
#define __ICorDebugChainEnum_INTERFACE_DEFINED__
/* interface ICorDebugChainEnum */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugChainEnum;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("CC7BCB08-8A68-11d2-983C-0000F808342D")
ICorDebugChainEnum : public ICorDebugEnum
{
public:
- virtual HRESULT STDMETHODCALLTYPE Next(
+ virtual HRESULT STDMETHODCALLTYPE Next(
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ ICorDebugChain *chains[ ],
/* [out] */ ULONG *pceltFetched) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugChainEnumVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugChainEnum * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugChainEnum * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugChainEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Skip )(
+
+ HRESULT ( STDMETHODCALLTYPE *Skip )(
ICorDebugChainEnum * This,
/* [in] */ ULONG celt);
-
- HRESULT ( STDMETHODCALLTYPE *Reset )(
+
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
ICorDebugChainEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Clone )(
+
+ HRESULT ( STDMETHODCALLTYPE *Clone )(
ICorDebugChainEnum * This,
/* [out] */ ICorDebugEnum **ppEnum);
-
- HRESULT ( STDMETHODCALLTYPE *GetCount )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCount )(
ICorDebugChainEnum * This,
/* [out] */ ULONG *pcelt);
-
- HRESULT ( STDMETHODCALLTYPE *Next )(
+
+ HRESULT ( STDMETHODCALLTYPE *Next )(
ICorDebugChainEnum * This,
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ ICorDebugChain *chains[ ],
/* [out] */ ULONG *pceltFetched);
-
+
END_INTERFACE
} ICorDebugChainEnumVtbl;
@@ -16959,36 +17050,36 @@ EXTERN_C const IID IID_ICorDebugChainEnum;
CONST_VTBL struct ICorDebugChainEnumVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugChainEnum_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugChainEnum_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugChainEnum_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugChainEnum_Skip(This,celt) \
- ( (This)->lpVtbl -> Skip(This,celt) )
+ ( (This)->lpVtbl -> Skip(This,celt) )
#define ICorDebugChainEnum_Reset(This) \
- ( (This)->lpVtbl -> Reset(This) )
+ ( (This)->lpVtbl -> Reset(This) )
#define ICorDebugChainEnum_Clone(This,ppEnum) \
- ( (This)->lpVtbl -> Clone(This,ppEnum) )
+ ( (This)->lpVtbl -> Clone(This,ppEnum) )
#define ICorDebugChainEnum_GetCount(This,pcelt) \
- ( (This)->lpVtbl -> GetCount(This,pcelt) )
+ ( (This)->lpVtbl -> GetCount(This,pcelt) )
#define ICorDebugChainEnum_Next(This,celt,chains,pceltFetched) \
- ( (This)->lpVtbl -> Next(This,celt,chains,pceltFetched) )
+ ( (This)->lpVtbl -> Next(This,celt,chains,pceltFetched) )
#endif /* COBJMACROS */
@@ -17005,64 +17096,64 @@ EXTERN_C const IID IID_ICorDebugChainEnum;
#define __ICorDebugModuleEnum_INTERFACE_DEFINED__
/* interface ICorDebugModuleEnum */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugModuleEnum;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("CC7BCB09-8A68-11d2-983C-0000F808342D")
ICorDebugModuleEnum : public ICorDebugEnum
{
public:
- virtual HRESULT STDMETHODCALLTYPE Next(
+ virtual HRESULT STDMETHODCALLTYPE Next(
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ ICorDebugModule *modules[ ],
/* [out] */ ULONG *pceltFetched) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugModuleEnumVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugModuleEnum * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugModuleEnum * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugModuleEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Skip )(
+
+ HRESULT ( STDMETHODCALLTYPE *Skip )(
ICorDebugModuleEnum * This,
/* [in] */ ULONG celt);
-
- HRESULT ( STDMETHODCALLTYPE *Reset )(
+
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
ICorDebugModuleEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Clone )(
+
+ HRESULT ( STDMETHODCALLTYPE *Clone )(
ICorDebugModuleEnum * This,
/* [out] */ ICorDebugEnum **ppEnum);
-
- HRESULT ( STDMETHODCALLTYPE *GetCount )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCount )(
ICorDebugModuleEnum * This,
/* [out] */ ULONG *pcelt);
-
- HRESULT ( STDMETHODCALLTYPE *Next )(
+
+ HRESULT ( STDMETHODCALLTYPE *Next )(
ICorDebugModuleEnum * This,
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ ICorDebugModule *modules[ ],
/* [out] */ ULONG *pceltFetched);
-
+
END_INTERFACE
} ICorDebugModuleEnumVtbl;
@@ -17071,36 +17162,36 @@ EXTERN_C const IID IID_ICorDebugModuleEnum;
CONST_VTBL struct ICorDebugModuleEnumVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugModuleEnum_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugModuleEnum_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugModuleEnum_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugModuleEnum_Skip(This,celt) \
- ( (This)->lpVtbl -> Skip(This,celt) )
+ ( (This)->lpVtbl -> Skip(This,celt) )
#define ICorDebugModuleEnum_Reset(This) \
- ( (This)->lpVtbl -> Reset(This) )
+ ( (This)->lpVtbl -> Reset(This) )
#define ICorDebugModuleEnum_Clone(This,ppEnum) \
- ( (This)->lpVtbl -> Clone(This,ppEnum) )
+ ( (This)->lpVtbl -> Clone(This,ppEnum) )
#define ICorDebugModuleEnum_GetCount(This,pcelt) \
- ( (This)->lpVtbl -> GetCount(This,pcelt) )
+ ( (This)->lpVtbl -> GetCount(This,pcelt) )
#define ICorDebugModuleEnum_Next(This,celt,modules,pceltFetched) \
- ( (This)->lpVtbl -> Next(This,celt,modules,pceltFetched) )
+ ( (This)->lpVtbl -> Next(This,celt,modules,pceltFetched) )
#endif /* COBJMACROS */
@@ -17117,64 +17208,64 @@ EXTERN_C const IID IID_ICorDebugModuleEnum;
#define __ICorDebugValueEnum_INTERFACE_DEFINED__
/* interface ICorDebugValueEnum */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugValueEnum;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("CC7BCB0A-8A68-11d2-983C-0000F808342D")
ICorDebugValueEnum : public ICorDebugEnum
{
public:
- virtual HRESULT STDMETHODCALLTYPE Next(
+ virtual HRESULT STDMETHODCALLTYPE Next(
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ ICorDebugValue *values[ ],
/* [out] */ ULONG *pceltFetched) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugValueEnumVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugValueEnum * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugValueEnum * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugValueEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Skip )(
+
+ HRESULT ( STDMETHODCALLTYPE *Skip )(
ICorDebugValueEnum * This,
/* [in] */ ULONG celt);
-
- HRESULT ( STDMETHODCALLTYPE *Reset )(
+
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
ICorDebugValueEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Clone )(
+
+ HRESULT ( STDMETHODCALLTYPE *Clone )(
ICorDebugValueEnum * This,
/* [out] */ ICorDebugEnum **ppEnum);
-
- HRESULT ( STDMETHODCALLTYPE *GetCount )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCount )(
ICorDebugValueEnum * This,
/* [out] */ ULONG *pcelt);
-
- HRESULT ( STDMETHODCALLTYPE *Next )(
+
+ HRESULT ( STDMETHODCALLTYPE *Next )(
ICorDebugValueEnum * This,
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ ICorDebugValue *values[ ],
/* [out] */ ULONG *pceltFetched);
-
+
END_INTERFACE
} ICorDebugValueEnumVtbl;
@@ -17183,36 +17274,36 @@ EXTERN_C const IID IID_ICorDebugValueEnum;
CONST_VTBL struct ICorDebugValueEnumVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugValueEnum_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugValueEnum_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugValueEnum_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugValueEnum_Skip(This,celt) \
- ( (This)->lpVtbl -> Skip(This,celt) )
+ ( (This)->lpVtbl -> Skip(This,celt) )
#define ICorDebugValueEnum_Reset(This) \
- ( (This)->lpVtbl -> Reset(This) )
+ ( (This)->lpVtbl -> Reset(This) )
#define ICorDebugValueEnum_Clone(This,ppEnum) \
- ( (This)->lpVtbl -> Clone(This,ppEnum) )
+ ( (This)->lpVtbl -> Clone(This,ppEnum) )
#define ICorDebugValueEnum_GetCount(This,pcelt) \
- ( (This)->lpVtbl -> GetCount(This,pcelt) )
+ ( (This)->lpVtbl -> GetCount(This,pcelt) )
#define ICorDebugValueEnum_Next(This,celt,values,pceltFetched) \
- ( (This)->lpVtbl -> Next(This,celt,values,pceltFetched) )
+ ( (This)->lpVtbl -> Next(This,celt,values,pceltFetched) )
#endif /* COBJMACROS */
@@ -17229,64 +17320,64 @@ EXTERN_C const IID IID_ICorDebugValueEnum;
#define __ICorDebugVariableHomeEnum_INTERFACE_DEFINED__
/* interface ICorDebugVariableHomeEnum */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugVariableHomeEnum;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("e76b7a57-4f7a-4309-85a7-5d918c3deaf7")
ICorDebugVariableHomeEnum : public ICorDebugEnum
{
public:
- virtual HRESULT STDMETHODCALLTYPE Next(
+ virtual HRESULT STDMETHODCALLTYPE Next(
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ ICorDebugVariableHome *homes[ ],
/* [out] */ ULONG *pceltFetched) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugVariableHomeEnumVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugVariableHomeEnum * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugVariableHomeEnum * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugVariableHomeEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Skip )(
+
+ HRESULT ( STDMETHODCALLTYPE *Skip )(
ICorDebugVariableHomeEnum * This,
/* [in] */ ULONG celt);
-
- HRESULT ( STDMETHODCALLTYPE *Reset )(
+
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
ICorDebugVariableHomeEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Clone )(
+
+ HRESULT ( STDMETHODCALLTYPE *Clone )(
ICorDebugVariableHomeEnum * This,
/* [out] */ ICorDebugEnum **ppEnum);
-
- HRESULT ( STDMETHODCALLTYPE *GetCount )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCount )(
ICorDebugVariableHomeEnum * This,
/* [out] */ ULONG *pcelt);
-
- HRESULT ( STDMETHODCALLTYPE *Next )(
+
+ HRESULT ( STDMETHODCALLTYPE *Next )(
ICorDebugVariableHomeEnum * This,
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ ICorDebugVariableHome *homes[ ],
/* [out] */ ULONG *pceltFetched);
-
+
END_INTERFACE
} ICorDebugVariableHomeEnumVtbl;
@@ -17295,36 +17386,36 @@ EXTERN_C const IID IID_ICorDebugVariableHomeEnum;
CONST_VTBL struct ICorDebugVariableHomeEnumVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugVariableHomeEnum_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugVariableHomeEnum_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugVariableHomeEnum_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugVariableHomeEnum_Skip(This,celt) \
- ( (This)->lpVtbl -> Skip(This,celt) )
+ ( (This)->lpVtbl -> Skip(This,celt) )
#define ICorDebugVariableHomeEnum_Reset(This) \
- ( (This)->lpVtbl -> Reset(This) )
+ ( (This)->lpVtbl -> Reset(This) )
#define ICorDebugVariableHomeEnum_Clone(This,ppEnum) \
- ( (This)->lpVtbl -> Clone(This,ppEnum) )
+ ( (This)->lpVtbl -> Clone(This,ppEnum) )
#define ICorDebugVariableHomeEnum_GetCount(This,pcelt) \
- ( (This)->lpVtbl -> GetCount(This,pcelt) )
+ ( (This)->lpVtbl -> GetCount(This,pcelt) )
#define ICorDebugVariableHomeEnum_Next(This,celt,homes,pceltFetched) \
- ( (This)->lpVtbl -> Next(This,celt,homes,pceltFetched) )
+ ( (This)->lpVtbl -> Next(This,celt,homes,pceltFetched) )
#endif /* COBJMACROS */
@@ -17341,64 +17432,64 @@ EXTERN_C const IID IID_ICorDebugVariableHomeEnum;
#define __ICorDebugCodeEnum_INTERFACE_DEFINED__
/* interface ICorDebugCodeEnum */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugCodeEnum;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("55E96461-9645-45e4-A2FF-0367877ABCDE")
ICorDebugCodeEnum : public ICorDebugEnum
{
public:
- virtual HRESULT STDMETHODCALLTYPE Next(
+ virtual HRESULT STDMETHODCALLTYPE Next(
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ ICorDebugCode *values[ ],
/* [out] */ ULONG *pceltFetched) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugCodeEnumVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugCodeEnum * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugCodeEnum * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugCodeEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Skip )(
+
+ HRESULT ( STDMETHODCALLTYPE *Skip )(
ICorDebugCodeEnum * This,
/* [in] */ ULONG celt);
-
- HRESULT ( STDMETHODCALLTYPE *Reset )(
+
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
ICorDebugCodeEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Clone )(
+
+ HRESULT ( STDMETHODCALLTYPE *Clone )(
ICorDebugCodeEnum * This,
/* [out] */ ICorDebugEnum **ppEnum);
-
- HRESULT ( STDMETHODCALLTYPE *GetCount )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCount )(
ICorDebugCodeEnum * This,
/* [out] */ ULONG *pcelt);
-
- HRESULT ( STDMETHODCALLTYPE *Next )(
+
+ HRESULT ( STDMETHODCALLTYPE *Next )(
ICorDebugCodeEnum * This,
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ ICorDebugCode *values[ ],
/* [out] */ ULONG *pceltFetched);
-
+
END_INTERFACE
} ICorDebugCodeEnumVtbl;
@@ -17407,36 +17498,36 @@ EXTERN_C const IID IID_ICorDebugCodeEnum;
CONST_VTBL struct ICorDebugCodeEnumVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugCodeEnum_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugCodeEnum_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugCodeEnum_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugCodeEnum_Skip(This,celt) \
- ( (This)->lpVtbl -> Skip(This,celt) )
+ ( (This)->lpVtbl -> Skip(This,celt) )
#define ICorDebugCodeEnum_Reset(This) \
- ( (This)->lpVtbl -> Reset(This) )
+ ( (This)->lpVtbl -> Reset(This) )
#define ICorDebugCodeEnum_Clone(This,ppEnum) \
- ( (This)->lpVtbl -> Clone(This,ppEnum) )
+ ( (This)->lpVtbl -> Clone(This,ppEnum) )
#define ICorDebugCodeEnum_GetCount(This,pcelt) \
- ( (This)->lpVtbl -> GetCount(This,pcelt) )
+ ( (This)->lpVtbl -> GetCount(This,pcelt) )
#define ICorDebugCodeEnum_Next(This,celt,values,pceltFetched) \
- ( (This)->lpVtbl -> Next(This,celt,values,pceltFetched) )
+ ( (This)->lpVtbl -> Next(This,celt,values,pceltFetched) )
#endif /* COBJMACROS */
@@ -17453,64 +17544,64 @@ EXTERN_C const IID IID_ICorDebugCodeEnum;
#define __ICorDebugTypeEnum_INTERFACE_DEFINED__
/* interface ICorDebugTypeEnum */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugTypeEnum;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("10F27499-9DF2-43ce-8333-A321D7C99CB4")
ICorDebugTypeEnum : public ICorDebugEnum
{
public:
- virtual HRESULT STDMETHODCALLTYPE Next(
+ virtual HRESULT STDMETHODCALLTYPE Next(
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ ICorDebugType *values[ ],
/* [out] */ ULONG *pceltFetched) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugTypeEnumVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugTypeEnum * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugTypeEnum * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugTypeEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Skip )(
+
+ HRESULT ( STDMETHODCALLTYPE *Skip )(
ICorDebugTypeEnum * This,
/* [in] */ ULONG celt);
-
- HRESULT ( STDMETHODCALLTYPE *Reset )(
+
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
ICorDebugTypeEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Clone )(
+
+ HRESULT ( STDMETHODCALLTYPE *Clone )(
ICorDebugTypeEnum * This,
/* [out] */ ICorDebugEnum **ppEnum);
-
- HRESULT ( STDMETHODCALLTYPE *GetCount )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCount )(
ICorDebugTypeEnum * This,
/* [out] */ ULONG *pcelt);
-
- HRESULT ( STDMETHODCALLTYPE *Next )(
+
+ HRESULT ( STDMETHODCALLTYPE *Next )(
ICorDebugTypeEnum * This,
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ ICorDebugType *values[ ],
/* [out] */ ULONG *pceltFetched);
-
+
END_INTERFACE
} ICorDebugTypeEnumVtbl;
@@ -17519,36 +17610,36 @@ EXTERN_C const IID IID_ICorDebugTypeEnum;
CONST_VTBL struct ICorDebugTypeEnumVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugTypeEnum_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugTypeEnum_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugTypeEnum_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugTypeEnum_Skip(This,celt) \
- ( (This)->lpVtbl -> Skip(This,celt) )
+ ( (This)->lpVtbl -> Skip(This,celt) )
#define ICorDebugTypeEnum_Reset(This) \
- ( (This)->lpVtbl -> Reset(This) )
+ ( (This)->lpVtbl -> Reset(This) )
#define ICorDebugTypeEnum_Clone(This,ppEnum) \
- ( (This)->lpVtbl -> Clone(This,ppEnum) )
+ ( (This)->lpVtbl -> Clone(This,ppEnum) )
#define ICorDebugTypeEnum_GetCount(This,pcelt) \
- ( (This)->lpVtbl -> GetCount(This,pcelt) )
+ ( (This)->lpVtbl -> GetCount(This,pcelt) )
#define ICorDebugTypeEnum_Next(This,celt,values,pceltFetched) \
- ( (This)->lpVtbl -> Next(This,celt,values,pceltFetched) )
+ ( (This)->lpVtbl -> Next(This,celt,values,pceltFetched) )
#endif /* COBJMACROS */
@@ -17565,91 +17656,91 @@ EXTERN_C const IID IID_ICorDebugTypeEnum;
#define __ICorDebugType_INTERFACE_DEFINED__
/* interface ICorDebugType */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugType;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("D613F0BB-ACE1-4c19-BD72-E4C08D5DA7F5")
ICorDebugType : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetType(
+ virtual HRESULT STDMETHODCALLTYPE GetType(
/* [out] */ CorElementType *ty) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetClass(
+
+ virtual HRESULT STDMETHODCALLTYPE GetClass(
/* [out] */ ICorDebugClass **ppClass) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE EnumerateTypeParameters(
+
+ virtual HRESULT STDMETHODCALLTYPE EnumerateTypeParameters(
/* [out] */ ICorDebugTypeEnum **ppTyParEnum) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetFirstTypeParameter(
+
+ virtual HRESULT STDMETHODCALLTYPE GetFirstTypeParameter(
/* [out] */ ICorDebugType **value) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetBase(
+
+ virtual HRESULT STDMETHODCALLTYPE GetBase(
/* [out] */ ICorDebugType **pBase) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetStaticFieldValue(
+
+ virtual HRESULT STDMETHODCALLTYPE GetStaticFieldValue(
/* [in] */ mdFieldDef fieldDef,
/* [in] */ ICorDebugFrame *pFrame,
/* [out] */ ICorDebugValue **ppValue) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetRank(
+
+ virtual HRESULT STDMETHODCALLTYPE GetRank(
/* [out] */ ULONG32 *pnRank) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugTypeVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugType * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugType * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugType * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetType )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetType )(
ICorDebugType * This,
/* [out] */ CorElementType *ty);
-
- HRESULT ( STDMETHODCALLTYPE *GetClass )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetClass )(
ICorDebugType * This,
/* [out] */ ICorDebugClass **ppClass);
-
- HRESULT ( STDMETHODCALLTYPE *EnumerateTypeParameters )(
+
+ HRESULT ( STDMETHODCALLTYPE *EnumerateTypeParameters )(
ICorDebugType * This,
/* [out] */ ICorDebugTypeEnum **ppTyParEnum);
-
- HRESULT ( STDMETHODCALLTYPE *GetFirstTypeParameter )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetFirstTypeParameter )(
ICorDebugType * This,
/* [out] */ ICorDebugType **value);
-
- HRESULT ( STDMETHODCALLTYPE *GetBase )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetBase )(
ICorDebugType * This,
/* [out] */ ICorDebugType **pBase);
-
- HRESULT ( STDMETHODCALLTYPE *GetStaticFieldValue )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetStaticFieldValue )(
ICorDebugType * This,
/* [in] */ mdFieldDef fieldDef,
/* [in] */ ICorDebugFrame *pFrame,
/* [out] */ ICorDebugValue **ppValue);
-
- HRESULT ( STDMETHODCALLTYPE *GetRank )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetRank )(
ICorDebugType * This,
/* [out] */ ULONG32 *pnRank);
-
+
END_INTERFACE
} ICorDebugTypeVtbl;
@@ -17658,41 +17749,41 @@ EXTERN_C const IID IID_ICorDebugType;
CONST_VTBL struct ICorDebugTypeVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugType_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugType_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugType_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugType_GetType(This,ty) \
- ( (This)->lpVtbl -> GetType(This,ty) )
+ ( (This)->lpVtbl -> GetType(This,ty) )
#define ICorDebugType_GetClass(This,ppClass) \
- ( (This)->lpVtbl -> GetClass(This,ppClass) )
+ ( (This)->lpVtbl -> GetClass(This,ppClass) )
#define ICorDebugType_EnumerateTypeParameters(This,ppTyParEnum) \
- ( (This)->lpVtbl -> EnumerateTypeParameters(This,ppTyParEnum) )
+ ( (This)->lpVtbl -> EnumerateTypeParameters(This,ppTyParEnum) )
#define ICorDebugType_GetFirstTypeParameter(This,value) \
- ( (This)->lpVtbl -> GetFirstTypeParameter(This,value) )
+ ( (This)->lpVtbl -> GetFirstTypeParameter(This,value) )
#define ICorDebugType_GetBase(This,pBase) \
- ( (This)->lpVtbl -> GetBase(This,pBase) )
+ ( (This)->lpVtbl -> GetBase(This,pBase) )
#define ICorDebugType_GetStaticFieldValue(This,fieldDef,pFrame,ppValue) \
- ( (This)->lpVtbl -> GetStaticFieldValue(This,fieldDef,pFrame,ppValue) )
+ ( (This)->lpVtbl -> GetStaticFieldValue(This,fieldDef,pFrame,ppValue) )
#define ICorDebugType_GetRank(This,pnRank) \
- ( (This)->lpVtbl -> GetRank(This,pnRank) )
+ ( (This)->lpVtbl -> GetRank(This,pnRank) )
#endif /* COBJMACROS */
@@ -17709,45 +17800,45 @@ EXTERN_C const IID IID_ICorDebugType;
#define __ICorDebugType2_INTERFACE_DEFINED__
/* interface ICorDebugType2 */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugType2;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("e6e91d79-693d-48bc-b417-8284b4f10fb5")
ICorDebugType2 : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetTypeID(
+ virtual HRESULT STDMETHODCALLTYPE GetTypeID(
/* [out] */ COR_TYPEID *id) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugType2Vtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugType2 * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugType2 * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugType2 * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetTypeID )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetTypeID )(
ICorDebugType2 * This,
/* [out] */ COR_TYPEID *id);
-
+
END_INTERFACE
} ICorDebugType2Vtbl;
@@ -17756,23 +17847,23 @@ EXTERN_C const IID IID_ICorDebugType2;
CONST_VTBL struct ICorDebugType2Vtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugType2_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugType2_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugType2_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugType2_GetTypeID(This,id) \
- ( (This)->lpVtbl -> GetTypeID(This,id) )
+ ( (This)->lpVtbl -> GetTypeID(This,id) )
#endif /* COBJMACROS */
@@ -17789,64 +17880,64 @@ EXTERN_C const IID IID_ICorDebugType2;
#define __ICorDebugErrorInfoEnum_INTERFACE_DEFINED__
/* interface ICorDebugErrorInfoEnum */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugErrorInfoEnum;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("F0E18809-72B5-11d2-976F-00A0C9B4D50C")
ICorDebugErrorInfoEnum : public ICorDebugEnum
{
public:
- virtual HRESULT STDMETHODCALLTYPE Next(
+ virtual HRESULT STDMETHODCALLTYPE Next(
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ ICorDebugEditAndContinueErrorInfo *errors[ ],
/* [out] */ ULONG *pceltFetched) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugErrorInfoEnumVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugErrorInfoEnum * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugErrorInfoEnum * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugErrorInfoEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Skip )(
+
+ HRESULT ( STDMETHODCALLTYPE *Skip )(
ICorDebugErrorInfoEnum * This,
/* [in] */ ULONG celt);
-
- HRESULT ( STDMETHODCALLTYPE *Reset )(
+
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
ICorDebugErrorInfoEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Clone )(
+
+ HRESULT ( STDMETHODCALLTYPE *Clone )(
ICorDebugErrorInfoEnum * This,
/* [out] */ ICorDebugEnum **ppEnum);
-
- HRESULT ( STDMETHODCALLTYPE *GetCount )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCount )(
ICorDebugErrorInfoEnum * This,
/* [out] */ ULONG *pcelt);
-
- HRESULT ( STDMETHODCALLTYPE *Next )(
+
+ HRESULT ( STDMETHODCALLTYPE *Next )(
ICorDebugErrorInfoEnum * This,
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ ICorDebugEditAndContinueErrorInfo *errors[ ],
/* [out] */ ULONG *pceltFetched);
-
+
END_INTERFACE
} ICorDebugErrorInfoEnumVtbl;
@@ -17855,36 +17946,36 @@ EXTERN_C const IID IID_ICorDebugErrorInfoEnum;
CONST_VTBL struct ICorDebugErrorInfoEnumVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugErrorInfoEnum_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugErrorInfoEnum_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugErrorInfoEnum_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugErrorInfoEnum_Skip(This,celt) \
- ( (This)->lpVtbl -> Skip(This,celt) )
+ ( (This)->lpVtbl -> Skip(This,celt) )
#define ICorDebugErrorInfoEnum_Reset(This) \
- ( (This)->lpVtbl -> Reset(This) )
+ ( (This)->lpVtbl -> Reset(This) )
#define ICorDebugErrorInfoEnum_Clone(This,ppEnum) \
- ( (This)->lpVtbl -> Clone(This,ppEnum) )
+ ( (This)->lpVtbl -> Clone(This,ppEnum) )
#define ICorDebugErrorInfoEnum_GetCount(This,pcelt) \
- ( (This)->lpVtbl -> GetCount(This,pcelt) )
+ ( (This)->lpVtbl -> GetCount(This,pcelt) )
#define ICorDebugErrorInfoEnum_Next(This,celt,errors,pceltFetched) \
- ( (This)->lpVtbl -> Next(This,celt,errors,pceltFetched) )
+ ( (This)->lpVtbl -> Next(This,celt,errors,pceltFetched) )
#endif /* COBJMACROS */
@@ -17901,64 +17992,64 @@ EXTERN_C const IID IID_ICorDebugErrorInfoEnum;
#define __ICorDebugAppDomainEnum_INTERFACE_DEFINED__
/* interface ICorDebugAppDomainEnum */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugAppDomainEnum;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("63ca1b24-4359-4883-bd57-13f815f58744")
ICorDebugAppDomainEnum : public ICorDebugEnum
{
public:
- virtual HRESULT STDMETHODCALLTYPE Next(
+ virtual HRESULT STDMETHODCALLTYPE Next(
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ ICorDebugAppDomain *values[ ],
/* [out] */ ULONG *pceltFetched) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugAppDomainEnumVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugAppDomainEnum * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugAppDomainEnum * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugAppDomainEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Skip )(
+
+ HRESULT ( STDMETHODCALLTYPE *Skip )(
ICorDebugAppDomainEnum * This,
/* [in] */ ULONG celt);
-
- HRESULT ( STDMETHODCALLTYPE *Reset )(
+
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
ICorDebugAppDomainEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Clone )(
+
+ HRESULT ( STDMETHODCALLTYPE *Clone )(
ICorDebugAppDomainEnum * This,
/* [out] */ ICorDebugEnum **ppEnum);
-
- HRESULT ( STDMETHODCALLTYPE *GetCount )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCount )(
ICorDebugAppDomainEnum * This,
/* [out] */ ULONG *pcelt);
-
- HRESULT ( STDMETHODCALLTYPE *Next )(
+
+ HRESULT ( STDMETHODCALLTYPE *Next )(
ICorDebugAppDomainEnum * This,
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ ICorDebugAppDomain *values[ ],
/* [out] */ ULONG *pceltFetched);
-
+
END_INTERFACE
} ICorDebugAppDomainEnumVtbl;
@@ -17967,36 +18058,36 @@ EXTERN_C const IID IID_ICorDebugAppDomainEnum;
CONST_VTBL struct ICorDebugAppDomainEnumVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugAppDomainEnum_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugAppDomainEnum_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugAppDomainEnum_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugAppDomainEnum_Skip(This,celt) \
- ( (This)->lpVtbl -> Skip(This,celt) )
+ ( (This)->lpVtbl -> Skip(This,celt) )
#define ICorDebugAppDomainEnum_Reset(This) \
- ( (This)->lpVtbl -> Reset(This) )
+ ( (This)->lpVtbl -> Reset(This) )
#define ICorDebugAppDomainEnum_Clone(This,ppEnum) \
- ( (This)->lpVtbl -> Clone(This,ppEnum) )
+ ( (This)->lpVtbl -> Clone(This,ppEnum) )
#define ICorDebugAppDomainEnum_GetCount(This,pcelt) \
- ( (This)->lpVtbl -> GetCount(This,pcelt) )
+ ( (This)->lpVtbl -> GetCount(This,pcelt) )
#define ICorDebugAppDomainEnum_Next(This,celt,values,pceltFetched) \
- ( (This)->lpVtbl -> Next(This,celt,values,pceltFetched) )
+ ( (This)->lpVtbl -> Next(This,celt,values,pceltFetched) )
#endif /* COBJMACROS */
@@ -18013,64 +18104,64 @@ EXTERN_C const IID IID_ICorDebugAppDomainEnum;
#define __ICorDebugAssemblyEnum_INTERFACE_DEFINED__
/* interface ICorDebugAssemblyEnum */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugAssemblyEnum;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("4a2a1ec9-85ec-4bfb-9f15-a89fdfe0fe83")
ICorDebugAssemblyEnum : public ICorDebugEnum
{
public:
- virtual HRESULT STDMETHODCALLTYPE Next(
+ virtual HRESULT STDMETHODCALLTYPE Next(
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ ICorDebugAssembly *values[ ],
/* [out] */ ULONG *pceltFetched) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugAssemblyEnumVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugAssemblyEnum * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugAssemblyEnum * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugAssemblyEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Skip )(
+
+ HRESULT ( STDMETHODCALLTYPE *Skip )(
ICorDebugAssemblyEnum * This,
/* [in] */ ULONG celt);
-
- HRESULT ( STDMETHODCALLTYPE *Reset )(
+
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
ICorDebugAssemblyEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Clone )(
+
+ HRESULT ( STDMETHODCALLTYPE *Clone )(
ICorDebugAssemblyEnum * This,
/* [out] */ ICorDebugEnum **ppEnum);
-
- HRESULT ( STDMETHODCALLTYPE *GetCount )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCount )(
ICorDebugAssemblyEnum * This,
/* [out] */ ULONG *pcelt);
-
- HRESULT ( STDMETHODCALLTYPE *Next )(
+
+ HRESULT ( STDMETHODCALLTYPE *Next )(
ICorDebugAssemblyEnum * This,
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ ICorDebugAssembly *values[ ],
/* [out] */ ULONG *pceltFetched);
-
+
END_INTERFACE
} ICorDebugAssemblyEnumVtbl;
@@ -18079,36 +18170,36 @@ EXTERN_C const IID IID_ICorDebugAssemblyEnum;
CONST_VTBL struct ICorDebugAssemblyEnumVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugAssemblyEnum_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugAssemblyEnum_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugAssemblyEnum_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugAssemblyEnum_Skip(This,celt) \
- ( (This)->lpVtbl -> Skip(This,celt) )
+ ( (This)->lpVtbl -> Skip(This,celt) )
#define ICorDebugAssemblyEnum_Reset(This) \
- ( (This)->lpVtbl -> Reset(This) )
+ ( (This)->lpVtbl -> Reset(This) )
#define ICorDebugAssemblyEnum_Clone(This,ppEnum) \
- ( (This)->lpVtbl -> Clone(This,ppEnum) )
+ ( (This)->lpVtbl -> Clone(This,ppEnum) )
#define ICorDebugAssemblyEnum_GetCount(This,pcelt) \
- ( (This)->lpVtbl -> GetCount(This,pcelt) )
+ ( (This)->lpVtbl -> GetCount(This,pcelt) )
#define ICorDebugAssemblyEnum_Next(This,celt,values,pceltFetched) \
- ( (This)->lpVtbl -> Next(This,celt,values,pceltFetched) )
+ ( (This)->lpVtbl -> Next(This,celt,values,pceltFetched) )
#endif /* COBJMACROS */
@@ -18125,64 +18216,64 @@ EXTERN_C const IID IID_ICorDebugAssemblyEnum;
#define __ICorDebugBlockingObjectEnum_INTERFACE_DEFINED__
/* interface ICorDebugBlockingObjectEnum */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugBlockingObjectEnum;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("976A6278-134A-4a81-81A3-8F277943F4C3")
ICorDebugBlockingObjectEnum : public ICorDebugEnum
{
public:
- virtual HRESULT STDMETHODCALLTYPE Next(
+ virtual HRESULT STDMETHODCALLTYPE Next(
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ CorDebugBlockingObject values[ ],
/* [out] */ ULONG *pceltFetched) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugBlockingObjectEnumVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugBlockingObjectEnum * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugBlockingObjectEnum * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugBlockingObjectEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Skip )(
+
+ HRESULT ( STDMETHODCALLTYPE *Skip )(
ICorDebugBlockingObjectEnum * This,
/* [in] */ ULONG celt);
-
- HRESULT ( STDMETHODCALLTYPE *Reset )(
+
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
ICorDebugBlockingObjectEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Clone )(
+
+ HRESULT ( STDMETHODCALLTYPE *Clone )(
ICorDebugBlockingObjectEnum * This,
/* [out] */ ICorDebugEnum **ppEnum);
-
- HRESULT ( STDMETHODCALLTYPE *GetCount )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCount )(
ICorDebugBlockingObjectEnum * This,
/* [out] */ ULONG *pcelt);
-
- HRESULT ( STDMETHODCALLTYPE *Next )(
+
+ HRESULT ( STDMETHODCALLTYPE *Next )(
ICorDebugBlockingObjectEnum * This,
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ CorDebugBlockingObject values[ ],
/* [out] */ ULONG *pceltFetched);
-
+
END_INTERFACE
} ICorDebugBlockingObjectEnumVtbl;
@@ -18191,36 +18282,36 @@ EXTERN_C const IID IID_ICorDebugBlockingObjectEnum;
CONST_VTBL struct ICorDebugBlockingObjectEnumVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugBlockingObjectEnum_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugBlockingObjectEnum_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugBlockingObjectEnum_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugBlockingObjectEnum_Skip(This,celt) \
- ( (This)->lpVtbl -> Skip(This,celt) )
+ ( (This)->lpVtbl -> Skip(This,celt) )
#define ICorDebugBlockingObjectEnum_Reset(This) \
- ( (This)->lpVtbl -> Reset(This) )
+ ( (This)->lpVtbl -> Reset(This) )
#define ICorDebugBlockingObjectEnum_Clone(This,ppEnum) \
- ( (This)->lpVtbl -> Clone(This,ppEnum) )
+ ( (This)->lpVtbl -> Clone(This,ppEnum) )
#define ICorDebugBlockingObjectEnum_GetCount(This,pcelt) \
- ( (This)->lpVtbl -> GetCount(This,pcelt) )
+ ( (This)->lpVtbl -> GetCount(This,pcelt) )
#define ICorDebugBlockingObjectEnum_Next(This,celt,values,pceltFetched) \
- ( (This)->lpVtbl -> Next(This,celt,values,pceltFetched) )
+ ( (This)->lpVtbl -> Next(This,celt,values,pceltFetched) )
#endif /* COBJMACROS */
@@ -18233,23 +18324,23 @@ EXTERN_C const IID IID_ICorDebugBlockingObjectEnum;
#endif /* __ICorDebugBlockingObjectEnum_INTERFACE_DEFINED__ */
-/* interface __MIDL_itf_cordebug_0000_0129 */
-/* [local] */
+/* interface __MIDL_itf_cordebug_0000_0130 */
+/* [local] */
#pragma warning(push)
#pragma warning(disable:28718)
-extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0129_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0129_v0_0_s_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0130_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0130_v0_0_s_ifspec;
#ifndef __ICorDebugMDA_INTERFACE_DEFINED__
#define __ICorDebugMDA_INTERFACE_DEFINED__
/* interface ICorDebugMDA */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
-typedef
+typedef
enum CorDebugMDAFlags
{
MDA_FLAG_SLIP = 0x2
@@ -18259,79 +18350,79 @@ enum CorDebugMDAFlags
EXTERN_C const IID IID_ICorDebugMDA;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("CC726F2F-1DB7-459b-B0EC-05F01D841B42")
ICorDebugMDA : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetName(
+ virtual HRESULT STDMETHODCALLTYPE GetName(
/* [in] */ ULONG32 cchName,
/* [out] */ ULONG32 *pcchName,
/* [length_is][size_is][out] */ WCHAR szName[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetDescription(
+
+ virtual HRESULT STDMETHODCALLTYPE GetDescription(
/* [in] */ ULONG32 cchName,
/* [out] */ ULONG32 *pcchName,
/* [length_is][size_is][out] */ WCHAR szName[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetXML(
+
+ virtual HRESULT STDMETHODCALLTYPE GetXML(
/* [in] */ ULONG32 cchName,
/* [out] */ ULONG32 *pcchName,
/* [length_is][size_is][out] */ WCHAR szName[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetFlags(
+
+ virtual HRESULT STDMETHODCALLTYPE GetFlags(
/* [in] */ CorDebugMDAFlags *pFlags) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetOSThreadId(
+
+ virtual HRESULT STDMETHODCALLTYPE GetOSThreadId(
/* [out] */ DWORD *pOsTid) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugMDAVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugMDA * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugMDA * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugMDA * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetName )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetName )(
ICorDebugMDA * This,
/* [in] */ ULONG32 cchName,
/* [out] */ ULONG32 *pcchName,
/* [length_is][size_is][out] */ WCHAR szName[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetDescription )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetDescription )(
ICorDebugMDA * This,
/* [in] */ ULONG32 cchName,
/* [out] */ ULONG32 *pcchName,
/* [length_is][size_is][out] */ WCHAR szName[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetXML )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetXML )(
ICorDebugMDA * This,
/* [in] */ ULONG32 cchName,
/* [out] */ ULONG32 *pcchName,
/* [length_is][size_is][out] */ WCHAR szName[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *GetFlags )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetFlags )(
ICorDebugMDA * This,
/* [in] */ CorDebugMDAFlags *pFlags);
-
- HRESULT ( STDMETHODCALLTYPE *GetOSThreadId )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetOSThreadId )(
ICorDebugMDA * This,
/* [out] */ DWORD *pOsTid);
-
+
END_INTERFACE
} ICorDebugMDAVtbl;
@@ -18340,35 +18431,35 @@ EXTERN_C const IID IID_ICorDebugMDA;
CONST_VTBL struct ICorDebugMDAVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugMDA_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugMDA_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugMDA_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugMDA_GetName(This,cchName,pcchName,szName) \
- ( (This)->lpVtbl -> GetName(This,cchName,pcchName,szName) )
+ ( (This)->lpVtbl -> GetName(This,cchName,pcchName,szName) )
#define ICorDebugMDA_GetDescription(This,cchName,pcchName,szName) \
- ( (This)->lpVtbl -> GetDescription(This,cchName,pcchName,szName) )
+ ( (This)->lpVtbl -> GetDescription(This,cchName,pcchName,szName) )
#define ICorDebugMDA_GetXML(This,cchName,pcchName,szName) \
- ( (This)->lpVtbl -> GetXML(This,cchName,pcchName,szName) )
+ ( (This)->lpVtbl -> GetXML(This,cchName,pcchName,szName) )
#define ICorDebugMDA_GetFlags(This,pFlags) \
- ( (This)->lpVtbl -> GetFlags(This,pFlags) )
+ ( (This)->lpVtbl -> GetFlags(This,pFlags) )
#define ICorDebugMDA_GetOSThreadId(This,pOsTid) \
- ( (This)->lpVtbl -> GetOSThreadId(This,pOsTid) )
+ ( (This)->lpVtbl -> GetOSThreadId(This,pOsTid) )
#endif /* COBJMACROS */
@@ -18381,85 +18472,85 @@ EXTERN_C const IID IID_ICorDebugMDA;
#endif /* __ICorDebugMDA_INTERFACE_DEFINED__ */
-/* interface __MIDL_itf_cordebug_0000_0130 */
-/* [local] */
+/* interface __MIDL_itf_cordebug_0000_0131 */
+/* [local] */
#pragma warning(pop)
#pragma warning(push)
-#pragma warning(disable:28718)
+#pragma warning(disable:28718)
-extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0130_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0130_v0_0_s_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0131_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0131_v0_0_s_ifspec;
#ifndef __ICorDebugEditAndContinueErrorInfo_INTERFACE_DEFINED__
#define __ICorDebugEditAndContinueErrorInfo_INTERFACE_DEFINED__
/* interface ICorDebugEditAndContinueErrorInfo */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugEditAndContinueErrorInfo;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("8D600D41-F4F6-4cb3-B7EC-7BD164944036")
ICorDebugEditAndContinueErrorInfo : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE GetModule(
+ virtual HRESULT STDMETHODCALLTYPE GetModule(
/* [out] */ ICorDebugModule **ppModule) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetToken(
+
+ virtual HRESULT STDMETHODCALLTYPE GetToken(
/* [out] */ mdToken *pToken) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetErrorCode(
+
+ virtual HRESULT STDMETHODCALLTYPE GetErrorCode(
/* [out] */ HRESULT *pHr) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetString(
+
+ virtual HRESULT STDMETHODCALLTYPE GetString(
/* [in] */ ULONG32 cchString,
/* [out] */ ULONG32 *pcchString,
/* [length_is][size_is][out] */ WCHAR szString[ ]) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugEditAndContinueErrorInfoVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugEditAndContinueErrorInfo * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugEditAndContinueErrorInfo * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugEditAndContinueErrorInfo * This);
-
- HRESULT ( STDMETHODCALLTYPE *GetModule )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetModule )(
ICorDebugEditAndContinueErrorInfo * This,
/* [out] */ ICorDebugModule **ppModule);
-
- HRESULT ( STDMETHODCALLTYPE *GetToken )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetToken )(
ICorDebugEditAndContinueErrorInfo * This,
/* [out] */ mdToken *pToken);
-
- HRESULT ( STDMETHODCALLTYPE *GetErrorCode )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetErrorCode )(
ICorDebugEditAndContinueErrorInfo * This,
/* [out] */ HRESULT *pHr);
-
- HRESULT ( STDMETHODCALLTYPE *GetString )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetString )(
ICorDebugEditAndContinueErrorInfo * This,
/* [in] */ ULONG32 cchString,
/* [out] */ ULONG32 *pcchString,
/* [length_is][size_is][out] */ WCHAR szString[ ]);
-
+
END_INTERFACE
} ICorDebugEditAndContinueErrorInfoVtbl;
@@ -18468,32 +18559,32 @@ EXTERN_C const IID IID_ICorDebugEditAndContinueErrorInfo;
CONST_VTBL struct ICorDebugEditAndContinueErrorInfoVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugEditAndContinueErrorInfo_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugEditAndContinueErrorInfo_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugEditAndContinueErrorInfo_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugEditAndContinueErrorInfo_GetModule(This,ppModule) \
- ( (This)->lpVtbl -> GetModule(This,ppModule) )
+ ( (This)->lpVtbl -> GetModule(This,ppModule) )
#define ICorDebugEditAndContinueErrorInfo_GetToken(This,pToken) \
- ( (This)->lpVtbl -> GetToken(This,pToken) )
+ ( (This)->lpVtbl -> GetToken(This,pToken) )
#define ICorDebugEditAndContinueErrorInfo_GetErrorCode(This,pHr) \
- ( (This)->lpVtbl -> GetErrorCode(This,pHr) )
+ ( (This)->lpVtbl -> GetErrorCode(This,pHr) )
#define ICorDebugEditAndContinueErrorInfo_GetString(This,cchString,pcchString,szString) \
- ( (This)->lpVtbl -> GetString(This,cchString,pcchString,szString) )
+ ( (This)->lpVtbl -> GetString(This,cchString,pcchString,szString) )
#endif /* COBJMACROS */
@@ -18506,106 +18597,106 @@ EXTERN_C const IID IID_ICorDebugEditAndContinueErrorInfo;
#endif /* __ICorDebugEditAndContinueErrorInfo_INTERFACE_DEFINED__ */
-/* interface __MIDL_itf_cordebug_0000_0131 */
-/* [local] */
+/* interface __MIDL_itf_cordebug_0000_0132 */
+/* [local] */
#pragma warning(pop)
-extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0131_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0131_v0_0_s_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0132_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_cordebug_0000_0132_v0_0_s_ifspec;
#ifndef __ICorDebugEditAndContinueSnapshot_INTERFACE_DEFINED__
#define __ICorDebugEditAndContinueSnapshot_INTERFACE_DEFINED__
/* interface ICorDebugEditAndContinueSnapshot */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugEditAndContinueSnapshot;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("6DC3FA01-D7CB-11d2-8A95-0080C792E5D8")
ICorDebugEditAndContinueSnapshot : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE CopyMetaData(
+ virtual HRESULT STDMETHODCALLTYPE CopyMetaData(
/* [in] */ IStream *pIStream,
/* [out] */ GUID *pMvid) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetMvid(
+
+ virtual HRESULT STDMETHODCALLTYPE GetMvid(
/* [out] */ GUID *pMvid) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetRoDataRVA(
+
+ virtual HRESULT STDMETHODCALLTYPE GetRoDataRVA(
/* [out] */ ULONG32 *pRoDataRVA) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE GetRwDataRVA(
+
+ virtual HRESULT STDMETHODCALLTYPE GetRwDataRVA(
/* [out] */ ULONG32 *pRwDataRVA) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE SetPEBytes(
+
+ virtual HRESULT STDMETHODCALLTYPE SetPEBytes(
/* [in] */ IStream *pIStream) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE SetILMap(
+
+ virtual HRESULT STDMETHODCALLTYPE SetILMap(
/* [in] */ mdToken mdFunction,
/* [in] */ ULONG cMapSize,
/* [size_is][in] */ COR_IL_MAP map[ ]) = 0;
-
- virtual HRESULT STDMETHODCALLTYPE SetPESymbolBytes(
+
+ virtual HRESULT STDMETHODCALLTYPE SetPESymbolBytes(
/* [in] */ IStream *pIStream) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugEditAndContinueSnapshotVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugEditAndContinueSnapshot * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugEditAndContinueSnapshot * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugEditAndContinueSnapshot * This);
-
- HRESULT ( STDMETHODCALLTYPE *CopyMetaData )(
+
+ HRESULT ( STDMETHODCALLTYPE *CopyMetaData )(
ICorDebugEditAndContinueSnapshot * This,
/* [in] */ IStream *pIStream,
/* [out] */ GUID *pMvid);
-
- HRESULT ( STDMETHODCALLTYPE *GetMvid )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetMvid )(
ICorDebugEditAndContinueSnapshot * This,
/* [out] */ GUID *pMvid);
-
- HRESULT ( STDMETHODCALLTYPE *GetRoDataRVA )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetRoDataRVA )(
ICorDebugEditAndContinueSnapshot * This,
/* [out] */ ULONG32 *pRoDataRVA);
-
- HRESULT ( STDMETHODCALLTYPE *GetRwDataRVA )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetRwDataRVA )(
ICorDebugEditAndContinueSnapshot * This,
/* [out] */ ULONG32 *pRwDataRVA);
-
- HRESULT ( STDMETHODCALLTYPE *SetPEBytes )(
+
+ HRESULT ( STDMETHODCALLTYPE *SetPEBytes )(
ICorDebugEditAndContinueSnapshot * This,
/* [in] */ IStream *pIStream);
-
- HRESULT ( STDMETHODCALLTYPE *SetILMap )(
+
+ HRESULT ( STDMETHODCALLTYPE *SetILMap )(
ICorDebugEditAndContinueSnapshot * This,
/* [in] */ mdToken mdFunction,
/* [in] */ ULONG cMapSize,
/* [size_is][in] */ COR_IL_MAP map[ ]);
-
- HRESULT ( STDMETHODCALLTYPE *SetPESymbolBytes )(
+
+ HRESULT ( STDMETHODCALLTYPE *SetPESymbolBytes )(
ICorDebugEditAndContinueSnapshot * This,
/* [in] */ IStream *pIStream);
-
+
END_INTERFACE
} ICorDebugEditAndContinueSnapshotVtbl;
@@ -18614,41 +18705,41 @@ EXTERN_C const IID IID_ICorDebugEditAndContinueSnapshot;
CONST_VTBL struct ICorDebugEditAndContinueSnapshotVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugEditAndContinueSnapshot_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugEditAndContinueSnapshot_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugEditAndContinueSnapshot_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugEditAndContinueSnapshot_CopyMetaData(This,pIStream,pMvid) \
- ( (This)->lpVtbl -> CopyMetaData(This,pIStream,pMvid) )
+ ( (This)->lpVtbl -> CopyMetaData(This,pIStream,pMvid) )
#define ICorDebugEditAndContinueSnapshot_GetMvid(This,pMvid) \
- ( (This)->lpVtbl -> GetMvid(This,pMvid) )
+ ( (This)->lpVtbl -> GetMvid(This,pMvid) )
#define ICorDebugEditAndContinueSnapshot_GetRoDataRVA(This,pRoDataRVA) \
- ( (This)->lpVtbl -> GetRoDataRVA(This,pRoDataRVA) )
+ ( (This)->lpVtbl -> GetRoDataRVA(This,pRoDataRVA) )
#define ICorDebugEditAndContinueSnapshot_GetRwDataRVA(This,pRwDataRVA) \
- ( (This)->lpVtbl -> GetRwDataRVA(This,pRwDataRVA) )
+ ( (This)->lpVtbl -> GetRwDataRVA(This,pRwDataRVA) )
#define ICorDebugEditAndContinueSnapshot_SetPEBytes(This,pIStream) \
- ( (This)->lpVtbl -> SetPEBytes(This,pIStream) )
+ ( (This)->lpVtbl -> SetPEBytes(This,pIStream) )
#define ICorDebugEditAndContinueSnapshot_SetILMap(This,mdFunction,cMapSize,map) \
- ( (This)->lpVtbl -> SetILMap(This,mdFunction,cMapSize,map) )
+ ( (This)->lpVtbl -> SetILMap(This,mdFunction,cMapSize,map) )
#define ICorDebugEditAndContinueSnapshot_SetPESymbolBytes(This,pIStream) \
- ( (This)->lpVtbl -> SetPESymbolBytes(This,pIStream) )
+ ( (This)->lpVtbl -> SetPESymbolBytes(This,pIStream) )
#endif /* COBJMACROS */
@@ -18665,64 +18756,64 @@ EXTERN_C const IID IID_ICorDebugEditAndContinueSnapshot;
#define __ICorDebugExceptionObjectCallStackEnum_INTERFACE_DEFINED__
/* interface ICorDebugExceptionObjectCallStackEnum */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugExceptionObjectCallStackEnum;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("ED775530-4DC4-41F7-86D0-9E2DEF7DFC66")
ICorDebugExceptionObjectCallStackEnum : public ICorDebugEnum
{
public:
- virtual HRESULT STDMETHODCALLTYPE Next(
+ virtual HRESULT STDMETHODCALLTYPE Next(
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ CorDebugExceptionObjectStackFrame values[ ],
/* [out] */ ULONG *pceltFetched) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugExceptionObjectCallStackEnumVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugExceptionObjectCallStackEnum * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugExceptionObjectCallStackEnum * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugExceptionObjectCallStackEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Skip )(
+
+ HRESULT ( STDMETHODCALLTYPE *Skip )(
ICorDebugExceptionObjectCallStackEnum * This,
/* [in] */ ULONG celt);
-
- HRESULT ( STDMETHODCALLTYPE *Reset )(
+
+ HRESULT ( STDMETHODCALLTYPE *Reset )(
ICorDebugExceptionObjectCallStackEnum * This);
-
- HRESULT ( STDMETHODCALLTYPE *Clone )(
+
+ HRESULT ( STDMETHODCALLTYPE *Clone )(
ICorDebugExceptionObjectCallStackEnum * This,
/* [out] */ ICorDebugEnum **ppEnum);
-
- HRESULT ( STDMETHODCALLTYPE *GetCount )(
+
+ HRESULT ( STDMETHODCALLTYPE *GetCount )(
ICorDebugExceptionObjectCallStackEnum * This,
/* [out] */ ULONG *pcelt);
-
- HRESULT ( STDMETHODCALLTYPE *Next )(
+
+ HRESULT ( STDMETHODCALLTYPE *Next )(
ICorDebugExceptionObjectCallStackEnum * This,
/* [in] */ ULONG celt,
/* [length_is][size_is][out] */ CorDebugExceptionObjectStackFrame values[ ],
/* [out] */ ULONG *pceltFetched);
-
+
END_INTERFACE
} ICorDebugExceptionObjectCallStackEnumVtbl;
@@ -18731,36 +18822,36 @@ EXTERN_C const IID IID_ICorDebugExceptionObjectCallStackEnum;
CONST_VTBL struct ICorDebugExceptionObjectCallStackEnumVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugExceptionObjectCallStackEnum_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugExceptionObjectCallStackEnum_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugExceptionObjectCallStackEnum_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugExceptionObjectCallStackEnum_Skip(This,celt) \
- ( (This)->lpVtbl -> Skip(This,celt) )
+ ( (This)->lpVtbl -> Skip(This,celt) )
#define ICorDebugExceptionObjectCallStackEnum_Reset(This) \
- ( (This)->lpVtbl -> Reset(This) )
+ ( (This)->lpVtbl -> Reset(This) )
#define ICorDebugExceptionObjectCallStackEnum_Clone(This,ppEnum) \
- ( (This)->lpVtbl -> Clone(This,ppEnum) )
+ ( (This)->lpVtbl -> Clone(This,ppEnum) )
#define ICorDebugExceptionObjectCallStackEnum_GetCount(This,pcelt) \
- ( (This)->lpVtbl -> GetCount(This,pcelt) )
+ ( (This)->lpVtbl -> GetCount(This,pcelt) )
#define ICorDebugExceptionObjectCallStackEnum_Next(This,celt,values,pceltFetched) \
- ( (This)->lpVtbl -> Next(This,celt,values,pceltFetched) )
+ ( (This)->lpVtbl -> Next(This,celt,values,pceltFetched) )
#endif /* COBJMACROS */
@@ -18777,45 +18868,45 @@ EXTERN_C const IID IID_ICorDebugExceptionObjectCallStackEnum;
#define __ICorDebugExceptionObjectValue_INTERFACE_DEFINED__
/* interface ICorDebugExceptionObjectValue */
-/* [unique][uuid][local][object] */
+/* [unique][uuid][local][object] */
EXTERN_C const IID IID_ICorDebugExceptionObjectValue;
#if defined(__cplusplus) && !defined(CINTERFACE)
-
+
MIDL_INTERFACE("AE4CA65D-59DD-42A2-83A5-57E8A08D8719")
ICorDebugExceptionObjectValue : public IUnknown
{
public:
- virtual HRESULT STDMETHODCALLTYPE EnumerateExceptionCallStack(
+ virtual HRESULT STDMETHODCALLTYPE EnumerateExceptionCallStack(
/* [out] */ ICorDebugExceptionObjectCallStackEnum **ppCallStackEnum) = 0;
-
+
};
-
-
+
+
#else /* C style interface */
typedef struct ICorDebugExceptionObjectValueVtbl
{
BEGIN_INTERFACE
-
- HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
+
+ HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
ICorDebugExceptionObjectValue * This,
/* [in] */ REFIID riid,
- /* [annotation][iid_is][out] */
+ /* [annotation][iid_is][out] */
_COM_Outptr_ void **ppvObject);
-
- ULONG ( STDMETHODCALLTYPE *AddRef )(
+
+ ULONG ( STDMETHODCALLTYPE *AddRef )(
ICorDebugExceptionObjectValue * This);
-
- ULONG ( STDMETHODCALLTYPE *Release )(
+
+ ULONG ( STDMETHODCALLTYPE *Release )(
ICorDebugExceptionObjectValue * This);
-
- HRESULT ( STDMETHODCALLTYPE *EnumerateExceptionCallStack )(
+
+ HRESULT ( STDMETHODCALLTYPE *EnumerateExceptionCallStack )(
ICorDebugExceptionObjectValue * This,
/* [out] */ ICorDebugExceptionObjectCallStackEnum **ppCallStackEnum);
-
+
END_INTERFACE
} ICorDebugExceptionObjectValueVtbl;
@@ -18824,23 +18915,23 @@ EXTERN_C const IID IID_ICorDebugExceptionObjectValue;
CONST_VTBL struct ICorDebugExceptionObjectValueVtbl *lpVtbl;
};
-
+
#ifdef COBJMACROS
#define ICorDebugExceptionObjectValue_QueryInterface(This,riid,ppvObject) \
- ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
+ ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )
#define ICorDebugExceptionObjectValue_AddRef(This) \
- ( (This)->lpVtbl -> AddRef(This) )
+ ( (This)->lpVtbl -> AddRef(This) )
#define ICorDebugExceptionObjectValue_Release(This) \
- ( (This)->lpVtbl -> Release(This) )
+ ( (This)->lpVtbl -> Release(This) )
#define ICorDebugExceptionObjectValue_EnumerateExceptionCallStack(This,ppCallStackEnum) \
- ( (This)->lpVtbl -> EnumerateExceptionCallStack(This,ppCallStackEnum) )
+ ( (This)->lpVtbl -> EnumerateExceptionCallStack(This,ppCallStackEnum) )
#endif /* COBJMACROS */
@@ -18858,7 +18949,7 @@ EXTERN_C const IID IID_ICorDebugExceptionObjectValue;
#define __CORDBLib_LIBRARY_DEFINED__
/* library CORDBLib */
-/* [helpstring][version][uuid] */
+/* [helpstring][version][uuid] */
@@ -18919,5 +19010,3 @@ EmbeddedCLRCorDebug;
#endif
#endif
-
-
diff --git a/src/coreclr/pal/src/arch/arm64/context2.S b/src/coreclr/pal/src/arch/arm64/context2.S
index 2ebce4b440048e..12e5acf305cfd9 100644
--- a/src/coreclr/pal/src/arch/arm64/context2.S
+++ b/src/coreclr/pal/src/arch/arm64/context2.S
@@ -204,12 +204,11 @@ LOCAL_LABEL(No_Restore_CONTEXT_INTEGER):
ldr w17, [x16, CONTEXT_Cpsr]
msr nzcv, x17
ldp fp, lr, [x16, CONTEXT_Fp]
- ldr x17, [x16, CONTEXT_Sp]
- mov sp, x17
- ldr x17, [x16, CONTEXT_Pc]
+ ldp x16, x17, [x16, CONTEXT_Sp] // Context_Pc is right after Context_Sp
+ mov sp, x16
br x17
LOCAL_LABEL(No_Restore_CONTEXT_CONTROL):
- ret
+ ret
LEAF_END RtlRestoreContext, _TEXT
diff --git a/src/coreclr/pal/src/config.h.in b/src/coreclr/pal/src/config.h.in
index c68421302e1153..1de7a61dd6c524 100644
--- a/src/coreclr/pal/src/config.h.in
+++ b/src/coreclr/pal/src/config.h.in
@@ -68,6 +68,7 @@
#cmakedefine01 HAVE_SCHED_SETAFFINITY
#cmakedefine HAVE_UNW_GET_SAVE_LOC
#cmakedefine HAVE_UNW_GET_ACCESSORS
+#cmakedefine HAVE_UNW_AARCH64_X19
#cmakedefine01 HAVE_XSWDEV
#cmakedefine01 HAVE_XSW_USAGE
#cmakedefine01 HAVE_PUBLIC_XSTATE_STRUCT
diff --git a/src/coreclr/pal/src/configure.cmake b/src/coreclr/pal/src/configure.cmake
index ee4a3241196eaa..80d257fa349b60 100644
--- a/src/coreclr/pal/src/configure.cmake
+++ b/src/coreclr/pal/src/configure.cmake
@@ -1047,6 +1047,15 @@ int main(int argc, char **argv)
check_symbol_exists(unw_get_save_loc libunwind.h HAVE_UNW_GET_SAVE_LOC)
check_symbol_exists(unw_get_accessors libunwind.h HAVE_UNW_GET_ACCESSORS)
+check_cxx_source_compiles("
+#include
+
+int main(int argc, char **argv)
+{
+ int flag = (int)UNW_AARCH64_X19;
+ return 0;
+}" HAVE_UNW_AARCH64_X19)
+
if(NOT CLR_CMAKE_USE_SYSTEM_LIBUNWIND)
list(REMOVE_AT CMAKE_REQUIRED_INCLUDES 0 1)
endif()
diff --git a/src/coreclr/pal/src/exception/machexception.cpp b/src/coreclr/pal/src/exception/machexception.cpp
index e5aebdf652c6a5..eca89e0a204c64 100644
--- a/src/coreclr/pal/src/exception/machexception.cpp
+++ b/src/coreclr/pal/src/exception/machexception.cpp
@@ -369,19 +369,13 @@ void PAL_DispatchException(PCONTEXT pContext, PEXCEPTION_RECORD pExRecord, MachE
{
CPalThread *pThread = InternalGetCurrentThread();
- CONTEXT *contextRecord;
- EXCEPTION_RECORD *exceptionRecord;
- AllocateExceptionRecords(&exceptionRecord, &contextRecord);
+ CONTEXT *contextRecord = pContext;
+ g_hardware_exception_context_locvar_offset = (int)((char*)&contextRecord - (char*)__builtin_frame_address(0));
- *contextRecord = *pContext;
- *exceptionRecord = *pExRecord;
-
- contextRecord->ContextFlags |= CONTEXT_EXCEPTION_ACTIVE;
+ pContext->ContextFlags |= CONTEXT_EXCEPTION_ACTIVE;
bool continueExecution;
-
{
- // The exception object takes ownership of the exceptionRecord and contextRecord
- PAL_SEHException exception(exceptionRecord, contextRecord);
+ PAL_SEHException exception(pExRecord, pContext, true);
TRACE("PAL_DispatchException(EC %08x EA %p)\n", pExRecord->ExceptionCode, pExRecord->ExceptionAddress);
@@ -389,8 +383,8 @@ void PAL_DispatchException(PCONTEXT pContext, PEXCEPTION_RECORD pExRecord, MachE
if (continueExecution)
{
// Make a copy of the exception records so that we can free them before restoring the context
- *pContext = *contextRecord;
- *pExRecord = *exceptionRecord;
+ *pContext = *exception.ExceptionPointers.ContextRecord;
+ *pExRecord = *exception.ExceptionPointers.ExceptionRecord;
}
// The exception records are destroyed by the PAL_SEHException destructor now.
diff --git a/src/coreclr/pal/src/exception/machmessage.h b/src/coreclr/pal/src/exception/machmessage.h
index c24a979f52089d..a51d89890f6e15 100644
--- a/src/coreclr/pal/src/exception/machmessage.h
+++ b/src/coreclr/pal/src/exception/machmessage.h
@@ -21,7 +21,7 @@ using namespace CorUnix;
#if HAVE_MACH_EXCEPTIONS
-#if defined(HOST_AMD64)
+#if defined(HOST_64BIT)
#define MACH_EH_TYPE(x) mach_##x
#else
#define MACH_EH_TYPE(x) x
diff --git a/src/coreclr/pal/src/exception/remote-unwind.cpp b/src/coreclr/pal/src/exception/remote-unwind.cpp
index af0293ba5bc60c..f468cab68cc1e1 100644
--- a/src/coreclr/pal/src/exception/remote-unwind.cpp
+++ b/src/coreclr/pal/src/exception/remote-unwind.cpp
@@ -57,6 +57,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include
#include
#include "compact_unwind_encoding.h"
+#define MACOS_ARM64_POINTER_AUTH_MASK 0x7fffffffffffull
#endif
// Sub-headers included from the libunwind.h contain an empty struct
@@ -168,7 +169,7 @@ typedef struct _libunwindInfo
UnwindReadMemoryCallback ReadMemory;
} libunwindInfo;
-#if defined(__APPLE__) || defined(FEATURE_USE_SYSTEM_LIBUNWIND)
+#ifdef HOST_UNIX
#define EXTRACT_BITS(value, mask) ((value >> __builtin_ctz(mask)) & (((1 << __builtin_popcount(mask))) - 1))
@@ -526,6 +527,10 @@ ReadEncodedPointer(
return true;
}
+#endif // HOST_UNIX
+
+#if defined(__APPLE__) || defined(FEATURE_USE_SYSTEM_LIBUNWIND)
+
template
static bool
BinarySearchEntries(
@@ -1309,6 +1314,14 @@ GetProcInfo(unw_word_t ip, unw_proc_info_t *pip, libunwindInfo* info, bool* step
return false;
}
+//===-- CompactUnwindInfo.cpp ---------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
#if defined(TARGET_AMD64)
static bool
@@ -1380,6 +1393,163 @@ StepWithCompactEncodingRBPFrame(const libunwindInfo* info, compact_unwind_encodi
return true;
}
+static bool
+StepWithCompactEncodingFrameless(const libunwindInfo* info, compact_unwind_encoding_t compactEncoding, unw_word_t functionStart)
+{
+ int mode = compactEncoding & UNWIND_X86_64_MODE_MASK;
+ CONTEXT* context = info->Context;
+
+ uint32_t stack_size = EXTRACT_BITS(compactEncoding, UNWIND_X86_64_FRAMELESS_STACK_SIZE);
+ uint32_t register_count = EXTRACT_BITS(compactEncoding, UNWIND_X86_64_FRAMELESS_STACK_REG_COUNT);
+ uint32_t permutation = EXTRACT_BITS(compactEncoding, UNWIND_X86_64_FRAMELESS_STACK_REG_PERMUTATION);
+
+ if (mode == UNWIND_X86_64_MODE_STACK_IND)
+ {
+ _ASSERTE(functionStart != 0);
+ unw_word_t addr = functionStart + stack_size;
+ if (!ReadValue32(info, &addr, &stack_size)) {
+ return false;
+ }
+ uint32_t stack_adjust = EXTRACT_BITS(compactEncoding, UNWIND_X86_64_FRAMELESS_STACK_ADJUST);
+ stack_size += stack_adjust * 8;
+ }
+ else
+ {
+ stack_size *= 8;
+ }
+
+ TRACE("Frameless function: encoding %08x stack size %d register count %d\n", compactEncoding, stack_size, register_count);
+
+ // We need to include (up to) 6 registers in 10 bits.
+ // That would be 18 bits if we just used 3 bits per reg to indicate
+ // the order they're saved on the stack.
+ //
+ // This is done with Lehmer code permutation, e.g. see
+ // http://stackoverflow.com/questions/1506078/fast-permutation-number-permutation-mapping-algorithms
+ int permunreg[6];
+
+ // This decodes the variable-base number in the 10 bits
+ // and gives us the Lehmer code sequence which can then
+ // be decoded.
+ switch (register_count) {
+ case 6:
+ permunreg[0] = permutation / 120; // 120 == 5!
+ permutation -= (permunreg[0] * 120);
+ permunreg[1] = permutation / 24; // 24 == 4!
+ permutation -= (permunreg[1] * 24);
+ permunreg[2] = permutation / 6; // 6 == 3!
+ permutation -= (permunreg[2] * 6);
+ permunreg[3] = permutation / 2; // 2 == 2!
+ permutation -= (permunreg[3] * 2);
+ permunreg[4] = permutation; // 1 == 1!
+ permunreg[5] = 0;
+ break;
+ case 5:
+ permunreg[0] = permutation / 120;
+ permutation -= (permunreg[0] * 120);
+ permunreg[1] = permutation / 24;
+ permutation -= (permunreg[1] * 24);
+ permunreg[2] = permutation / 6;
+ permutation -= (permunreg[2] * 6);
+ permunreg[3] = permutation / 2;
+ permutation -= (permunreg[3] * 2);
+ permunreg[4] = permutation;
+ break;
+ case 4:
+ permunreg[0] = permutation / 60;
+ permutation -= (permunreg[0] * 60);
+ permunreg[1] = permutation / 12;
+ permutation -= (permunreg[1] * 12);
+ permunreg[2] = permutation / 3;
+ permutation -= (permunreg[2] * 3);
+ permunreg[3] = permutation;
+ break;
+ case 3:
+ permunreg[0] = permutation / 20;
+ permutation -= (permunreg[0] * 20);
+ permunreg[1] = permutation / 4;
+ permutation -= (permunreg[1] * 4);
+ permunreg[2] = permutation;
+ break;
+ case 2:
+ permunreg[0] = permutation / 5;
+ permutation -= (permunreg[0] * 5);
+ permunreg[1] = permutation;
+ break;
+ case 1:
+ permunreg[0] = permutation;
+ break;
+ }
+
+ // Decode the Lehmer code for this permutation of
+ // the registers v. http://en.wikipedia.org/wiki/Lehmer_code
+ int registers[6] = {UNWIND_X86_64_REG_NONE, UNWIND_X86_64_REG_NONE,
+ UNWIND_X86_64_REG_NONE, UNWIND_X86_64_REG_NONE,
+ UNWIND_X86_64_REG_NONE, UNWIND_X86_64_REG_NONE};
+ bool used[7] = {false, false, false, false, false, false, false};
+ for (int i = 0; i < register_count; i++)
+ {
+ int renum = 0;
+ for (int j = 1; j < 7; j++)
+ {
+ if (!used[j])
+ {
+ if (renum == permunreg[i])
+ {
+ registers[i] = j;
+ used[j] = true;
+ break;
+ }
+ renum++;
+ }
+ }
+ }
+
+ uint64_t savedRegisters = context->Rsp + stack_size - 8 - (8 * register_count);
+ for (int i = 0; i < register_count; i++)
+ {
+ uint64_t reg;
+ if (!ReadValue64(info, &savedRegisters, ®)) {
+ return false;
+ }
+ switch (registers[i]) {
+ case UNWIND_X86_64_REG_RBX:
+ context->Rbx = reg;
+ break;
+ case UNWIND_X86_64_REG_R12:
+ context->R12 = reg;
+ break;
+ case UNWIND_X86_64_REG_R13:
+ context->R13 = reg;
+ break;
+ case UNWIND_X86_64_REG_R14:
+ context->R14 = reg;
+ break;
+ case UNWIND_X86_64_REG_R15:
+ context->R15 = reg;
+ break;
+ case UNWIND_X86_64_REG_RBP:
+ context->Rbp = reg;
+ break;
+ default:
+ ERROR("Bad register for frameless\n");
+ break;
+ }
+ }
+
+ // Now unwind the frame
+ uint64_t ip;
+ if (!ReadValue64(info, &savedRegisters, &ip)) {
+ return false;
+ }
+ context->Rip = ip;
+ context->Rsp = savedRegisters;
+
+ TRACE("SUCCESS: frameless encoding %08x rip %p rsp %p rbp %p\n",
+ compactEncoding, (void*)context->Rip, (void*)context->Rsp, (void*)context->Rbp);
+ return true;
+}
+
#define AMD64_SYSCALL_OPCODE 0x050f
static bool
@@ -1422,25 +1592,56 @@ StepWithCompactNoEncoding(const libunwindInfo* info)
#if defined(TARGET_ARM64)
-inline static bool
+#define ARM64_SYSCALL_OPCODE 0xD4001001
+#define ARM64_BL_OPCODE_MASK 0xFC000000
+#define ARM64_BL_OPCODE 0x94000000
+#define ARM64_BLR_OPCODE_MASK 0xFFFFFC00
+#define ARM64_BLR_OPCODE 0xD63F0000
+#define ARM64_BLRA_OPCODE_MASK 0xFEFFF800
+#define ARM64_BLRA_OPCODE 0xD63F0800
+
+static bool
+StepWithCompactNoEncoding(const libunwindInfo* info)
+{
+ // Check that the function is a syscall "wrapper" and assume there is no frame and pop the return address.
+ uint32_t opcode;
+ unw_word_t addr = info->Context->Pc - sizeof(opcode);
+ if (!ReadValue32(info, &addr, &opcode)) {
+ ERROR("StepWithCompactNoEncoding: can read opcode %p\n", (void*)addr);
+ return false;
+ }
+ // Is the IP pointing just after a "syscall" opcode?
+ if (opcode != ARM64_SYSCALL_OPCODE) {
+ ERROR("StepWithCompactNoEncoding: not in syscall wrapper function\n");
+ return false;
+ }
+ // Pop the return address from the stack
+ info->Context->Pc = info->Context->Lr;
+ TRACE("StepWithCompactNoEncoding: SUCCESS new pc %p sp %p\n", (void*)info->Context->Pc, (void*)info->Context->Sp);
+ return true;
+}
+
+static bool
ReadCompactEncodingRegister(const libunwindInfo* info, unw_word_t* addr, DWORD64* reg)
{
- *addr -= sizeof(uint64_t);
- if (!ReadValue64(info, addr, (uint64_t*)reg)) {
+ uint64_t value;
+ if (!info->ReadMemory((PVOID)*addr, &value, sizeof(value))) {
return false;
}
+ *reg = VAL64(value);
+ *addr -= sizeof(uint64_t);
return true;
}
-inline static bool
-ReadCompactEncodingRegisterPair(const libunwindInfo* info, unw_word_t* addr, DWORD64*second, DWORD64* first)
+static bool
+ReadCompactEncodingRegisterPair(const libunwindInfo* info, unw_word_t* addr, DWORD64* first, DWORD64* second)
{
// Registers are effectively pushed in pairs
//
+ // *first = **addr
// *addr -= 8
- // **addr = *first
+ // *second= **addr
// *addr -= 8
- // **addr = *second
if (!ReadCompactEncodingRegister(info, addr, first)) {
return false;
}
@@ -1450,8 +1651,8 @@ ReadCompactEncodingRegisterPair(const libunwindInfo* info, unw_word_t* addr, DWO
return true;
}
-inline static bool
-ReadCompactEncodingRegisterPair(const libunwindInfo* info, unw_word_t* addr, NEON128*second, NEON128* first)
+static bool
+ReadCompactEncodingRegisterPair(const libunwindInfo* info, unw_word_t* addr, NEON128* first, NEON128* second)
{
if (!ReadCompactEncodingRegisterPair(info, addr, &first->Low, &second->Low)) {
return false;
@@ -1484,30 +1685,28 @@ static bool
StepWithCompactEncodingArm64(const libunwindInfo* info, compact_unwind_encoding_t compactEncoding, bool hasFrame)
{
CONTEXT* context = info->Context;
+ unw_word_t addr;
- unw_word_t callerSp;
-
- if (hasFrame) {
- // caller Sp is callee Fp plus saved FP and LR
- callerSp = context->Fp + 2 * sizeof(uint64_t);
- } else {
+ if (hasFrame)
+ {
+ context->Sp = context->Fp + 16;
+ addr = context->Fp + 8;
+ if (!ReadCompactEncodingRegisterPair(info, &addr, &context->Lr, &context->Fp)) {
+ return false;
+ }
+ // Strip pointer authentication bits
+ context->Lr &= MACOS_ARM64_POINTER_AUTH_MASK;
+ }
+ else
+ {
// Get the leat significant bit in UNWIND_ARM64_FRAMELESS_STACK_SIZE_MASK
uint64_t stackSizeScale = UNWIND_ARM64_FRAMELESS_STACK_SIZE_MASK & ~(UNWIND_ARM64_FRAMELESS_STACK_SIZE_MASK - 1);
- uint64_t stackSize = (compactEncoding & UNWIND_ARM64_FRAMELESS_STACK_SIZE_MASK) / stackSizeScale * 16;
+ uint64_t stackSize = ((compactEncoding & UNWIND_ARM64_FRAMELESS_STACK_SIZE_MASK) / stackSizeScale) * 16;
- callerSp = context->Sp + stackSize;
+ addr = context->Sp + stackSize;
}
- context->Sp = callerSp;
-
- unw_word_t addr = callerSp;
-
- if (hasFrame &&
- !ReadCompactEncodingRegisterPair(info, &addr, &context->Lr, &context->Fp)) {
- return false;
- }
-
- // unwound return address is stored in Lr
+ // Unwound return address is stored in Lr
context->Pc = context->Lr;
if (compactEncoding & UNWIND_ARM64_FRAME_X19_X20_PAIR &&
@@ -1546,7 +1745,10 @@ StepWithCompactEncodingArm64(const libunwindInfo* info, compact_unwind_encoding_
!ReadCompactEncodingRegisterPair(info, &addr, &context->V[14], &context->V[15])) {
return false;
}
-
+ if (!hasFrame)
+ {
+ context->Sp = addr;
+ }
TRACE("SUCCESS: compact step encoding %08x pc %p sp %p fp %p lr %p\n",
compactEncoding, (void*)context->Pc, (void*)context->Sp, (void*)context->Fp, (void*)context->Lr);
return true;
@@ -1557,11 +1759,11 @@ StepWithCompactEncodingArm64(const libunwindInfo* info, compact_unwind_encoding_
static bool
StepWithCompactEncoding(const libunwindInfo* info, compact_unwind_encoding_t compactEncoding, unw_word_t functionStart)
{
-#if defined(TARGET_AMD64)
if (compactEncoding == 0)
{
return StepWithCompactNoEncoding(info);
}
+#if defined(TARGET_AMD64)
switch (compactEncoding & UNWIND_X86_64_MODE_MASK)
{
case UNWIND_X86_64_MODE_RBP_FRAME:
@@ -1569,17 +1771,12 @@ StepWithCompactEncoding(const libunwindInfo* info, compact_unwind_encoding_t com
case UNWIND_X86_64_MODE_STACK_IMMD:
case UNWIND_X86_64_MODE_STACK_IND:
- break;
+ return StepWithCompactEncodingFrameless(info, compactEncoding, functionStart);
case UNWIND_X86_64_MODE_DWARF:
return false;
}
#elif defined(TARGET_ARM64)
- if (compactEncoding == 0)
- {
- TRACE("Compact unwind missing for %p\n", (void*)info->Context->Pc);
- return false;
- }
switch (compactEncoding & UNWIND_ARM64_MODE_MASK)
{
case UNWIND_ARM64_MODE_FRAME:
@@ -1717,6 +1914,12 @@ static void UnwindContextToContext(unw_cursor_t *cursor, CONTEXT *winContext)
unw_get_reg(cursor, UNW_AARCH64_X28, (unw_word_t *) &winContext->X28);
unw_get_reg(cursor, UNW_AARCH64_X29, (unw_word_t *) &winContext->Fp);
unw_get_reg(cursor, UNW_AARCH64_X30, (unw_word_t *) &winContext->Lr);
+#ifdef __APPLE__
+ // Strip pointer authentication bits which seem to be leaking out of libunwind
+ // Seems like ptrauth_strip() / __builtin_ptrauth_strip() should work, but currently
+ // errors with "this target does not support pointer authentication"
+ winContext->Pc = winContext->Pc & MACOS_ARM64_POINTER_AUTH_MASK;
+#endif // __APPLE__
TRACE("sp %p pc %p lr %p fp %p\n", winContext->Sp, winContext->Pc, winContext->Lr, winContext->Fp);
#elif defined(TARGET_S390X)
unw_get_reg(cursor, UNW_REG_IP, (unw_word_t *) &winContext->PSWAddr);
@@ -1979,7 +2182,7 @@ find_proc_info(unw_addr_space_t as, unw_word_t ip, unw_proc_info_t *pip, int nee
}
#ifdef FEATURE_USE_SYSTEM_LIBUNWIND
- if (ehFrameHdrAddr == 0) {
+ if (ehFrameHdrAddr == 0) {
ASSERT("ELF: No PT_GNU_EH_FRAME program header\n");
return -UNW_EINVAL;
}
@@ -2126,6 +2329,33 @@ PAL_VirtualUnwindOutOfProc(CONTEXT *context, KNONVOLATILE_CONTEXT_POINTERS *cont
#elif defined(TARGET_ARM64)
TRACE("Unwind: pc %p sp %p fp %p\n", (void*)context->Pc, (void*)context->Sp, (void*)context->Fp);
result = GetProcInfo(context->Pc, &procInfo, &info, &step, false);
+ if (result && step)
+ {
+ // If the PC is at the start of the function, the previous instruction is BL and the unwind encoding is frameless
+ // with nothing on stack (0x02000000), back up PC by 1 to the previous function and get the unwind info for that
+ // function.
+ if ((context->Pc == procInfo.start_ip) &&
+ (procInfo.format & (UNWIND_ARM64_MODE_MASK | UNWIND_ARM64_FRAMELESS_STACK_SIZE_MASK)) == UNWIND_ARM64_MODE_FRAMELESS)
+ {
+ uint32_t opcode;
+ unw_word_t addr = context->Pc - sizeof(opcode);
+ if (ReadValue32(&info, &addr, &opcode))
+ {
+ // Is the previous instruction a BL opcode?
+ if ((opcode & ARM64_BL_OPCODE_MASK) == ARM64_BL_OPCODE ||
+ (opcode & ARM64_BLR_OPCODE_MASK) == ARM64_BLR_OPCODE ||
+ (opcode & ARM64_BLRA_OPCODE_MASK) == ARM64_BLRA_OPCODE)
+ {
+ TRACE("Unwind: getting unwind info for PC - 1 opcode %08x\n", opcode);
+ result = GetProcInfo(context->Pc - 1, &procInfo, &info, &step, false);
+ }
+ else
+ {
+ TRACE("Unwind: not BL* opcode %08x\n", opcode);
+ }
+ }
+ }
+ }
#else
#error Unexpected architecture
#endif
@@ -2176,6 +2406,148 @@ PAL_VirtualUnwindOutOfProc(CONTEXT *context, KNONVOLATILE_CONTEXT_POINTERS *cont
return result;
}
+BOOL
+PALAPI
+PAL_GetUnwindInfoSize(SIZE_T baseAddress, ULONG64 ehFrameHdrAddr, UnwindReadMemoryCallback readMemoryCallback, PULONG64 ehFrameStart, PULONG64 ehFrameSize)
+{
+ _ASSERTE(ehFrameStart != nullptr);
+ _ASSERTE(ehFrameSize != nullptr);
+ _ASSERTE(ehFrameHdrAddr != 0);
+ *ehFrameStart = 0;
+ *ehFrameSize = 0;
+
+#ifdef HOST_UNIX
+ libunwindInfo info;
+ info.BaseAddress = baseAddress;
+ info.Context = nullptr;
+ info.FunctionStart = 0;
+ info.ReadMemory = readMemoryCallback;
+
+ eh_frame_hdr ehFrameHdr;
+ if (!info.ReadMemory((PVOID)ehFrameHdrAddr, &ehFrameHdr, sizeof(eh_frame_hdr))) {
+ ERROR("ELF: reading ehFrameHdrAddr %p\n", ehFrameHdrAddr);
+ return FALSE;
+ }
+ TRACE("ehFrameHdrAddr %p version %d eh_frame_ptr_enc %d fde_count_enc %d table_enc %d\n",
+ ehFrameHdrAddr, ehFrameHdr.version, ehFrameHdr.eh_frame_ptr_enc, ehFrameHdr.fde_count_enc, ehFrameHdr.table_enc);
+
+ if (ehFrameHdr.version != DW_EH_VERSION) {
+ ASSERT("ehFrameHdr version %x not supported\n", ehFrameHdr.version);
+ return FALSE;
+ }
+ unw_word_t addr = ehFrameHdrAddr + sizeof(eh_frame_hdr);
+ unw_word_t ehFramePtr;
+ unw_word_t fdeCount;
+
+ // Decode the eh_frame_hdr info
+ if (!ReadEncodedPointer(&info, &addr, ehFrameHdr.eh_frame_ptr_enc, UINTPTR_MAX, &ehFramePtr)) {
+ ERROR("decoding eh_frame_ptr\n");
+ return FALSE;
+ }
+ if (!ReadEncodedPointer(&info, &addr, ehFrameHdr.fde_count_enc, UINTPTR_MAX, &fdeCount)) {
+ ERROR("decoding fde_count_enc\n");
+ return FALSE;
+ }
+ TRACE("ehFrameStart %p fdeCount %p\n", ehFrameStart, fdeCount);
+
+ // If there are no frame table entries
+ if (fdeCount == 0) {
+ TRACE("No frame table entries\n");
+ return FALSE;
+ }
+
+ uint64_t totalSize = 0;
+ uint64_t encounteredCieCount = 0;
+ uint64_t encounteredFdeCount = 0;
+ addr = ehFramePtr;
+
+ while (true)
+ {
+ bool is64BitEncoding = false;
+ uint64_t initialLength = 0;
+ uint32_t initialLength32;
+
+ if (!ReadValue32(&info, &addr, &initialLength32)) {
+ return FALSE;
+ }
+ totalSize += sizeof(initialLength32);
+
+ if (initialLength32 >= 0xfffffff0)
+ {
+ if (initialLength32 == 0xffffffff)
+ {
+ // 64 bit encoding
+ is64BitEncoding = true;
+ if (!ReadValue64(&info, &addr, &initialLength)) {
+ return FALSE;
+ }
+ totalSize += sizeof(initialLength);
+ }
+ else
+ {
+ ASSERT("Length encoding not supported: %08x\n", initialLength32);
+ return FALSE;
+ }
+ }
+ else
+ {
+ // 32 bit encoding
+ initialLength = static_cast(initialLength32);
+ }
+
+ if (initialLength == 0)
+ {
+ break;
+ }
+
+ // "addr" either points to a CIE_id in a CIE or CIE_ptr in a FDE. A value of zero indicates a CIE.
+ uint64_t ciePtr;
+ if (is64BitEncoding)
+ {
+ if (!ReadValue64(&info, &addr, &ciePtr)) {
+ return FALSE;
+ }
+ addr -= sizeof(ciePtr);
+ }
+ else
+ {
+ uint32_t ciePtr32;
+ if (!ReadValue32(&info, &addr, &ciePtr32)) {
+ return FALSE;
+ }
+ addr -= sizeof(ciePtr32);
+ ciePtr = static_cast(ciePtr32);
+ }
+
+ if (ciePtr == 0)
+ {
+ encounteredCieCount++;
+ }
+ else
+ {
+ encounteredFdeCount++;
+ }
+
+ totalSize += initialLength;
+ addr += initialLength;
+
+ // If we've seen more FDEs than expected, somehow either the header is inconsistent or we overread the end of the table.
+ if (encounteredFdeCount >= fdeCount)
+ {
+ break;
+ }
+ }
+
+ _ASSERTE(encounteredFdeCount == fdeCount);
+
+ *ehFrameStart = ehFramePtr;
+ *ehFrameSize = totalSize;
+ return TRUE;
+#else
+ return FALSE;
+#endif // HOST_UNIX
+}
+
#else
BOOL
@@ -2185,4 +2557,11 @@ PAL_VirtualUnwindOutOfProc(CONTEXT *context, KNONVOLATILE_CONTEXT_POINTERS *cont
return FALSE;
}
+BOOL
+PALAPI
+PAL_GetUnwindInfoSize(SIZE_T baseAddress, ULONG64 ehFrameHdrAddr, UnwindReadMemoryCallback readMemoryCallback, PULONG64 ehFrameStart, PULONG64 ehFrameSize)
+{
+ return FALSE;
+}
+
#endif // defined(__APPLE__) || defined(HAVE_UNW_GET_ACCESSORS)
diff --git a/src/coreclr/pal/src/exception/seh-unwind.cpp b/src/coreclr/pal/src/exception/seh-unwind.cpp
index 9a1f5d0b5e89d4..d1028feaeadac2 100644
--- a/src/coreclr/pal/src/exception/seh-unwind.cpp
+++ b/src/coreclr/pal/src/exception/seh-unwind.cpp
@@ -54,7 +54,7 @@ Module Name:
#endif // HOST_UNIX
-#if defined(TARGET_OSX) && defined(TARGET_ARM64)
+#if defined(TARGET_OSX) && defined(TARGET_ARM64) && !defined(HAVE_UNW_AARCH64_X19)
// MacOS uses ARM64 instead of AARCH64 to describe these registers
// Create aliases to reuse more code
enum
@@ -476,7 +476,9 @@ void GetContextPointers(unw_cursor_t *cursor, unw_context_t *unwContext, KNONVOL
#ifndef HOST_WINDOWS
-extern int g_common_signal_handler_context_locvar_offset;
+// Frame pointer relative offset of a local containing a pointer to the windows style context of a location
+// where a hardware exception occured.
+int g_hardware_exception_context_locvar_offset = 0;
BOOL PAL_VirtualUnwind(CONTEXT *context, KNONVOLATILE_CONTEXT_POINTERS *contextPointers)
{
@@ -486,19 +488,17 @@ BOOL PAL_VirtualUnwind(CONTEXT *context, KNONVOLATILE_CONTEXT_POINTERS *contextP
DWORD64 curPc = CONTEXTGetPC(context);
-#ifndef __APPLE__
- // Check if the PC is the return address from the SEHProcessException in the common_signal_handler.
- // If that's the case, extract its local variable containing the windows style context of the hardware
+ // Check if the PC is the return address from the SEHProcessException.
+ // If that's the case, extract its local variable containing a pointer to the windows style context of the hardware
// exception and return that. This skips the hardware signal handler trampoline that the libunwind
- // cannot cross on some systems.
+ // cannot cross on some systems. On macOS, it skips a similar trampoline we create in HijackFaultingThread.
if ((void*)curPc == g_SEHProcessExceptionReturnAddress)
{
- CONTEXT* signalContext = (CONTEXT*)(CONTEXTGetFP(context) + g_common_signal_handler_context_locvar_offset);
- memcpy_s(context, sizeof(CONTEXT), signalContext, sizeof(CONTEXT));
+ CONTEXT* exceptionContext = *(CONTEXT**)(CONTEXTGetFP(context) + g_hardware_exception_context_locvar_offset);
+ memcpy_s(context, sizeof(CONTEXT), exceptionContext, sizeof(CONTEXT));
return TRUE;
}
-#endif
if ((context->ContextFlags & CONTEXT_EXCEPTION_ACTIVE) != 0)
{
diff --git a/src/coreclr/pal/src/exception/signal.cpp b/src/coreclr/pal/src/exception/signal.cpp
index cbcd1cac6f226e..f4c7989bf8ab94 100644
--- a/src/coreclr/pal/src/exception/signal.cpp
+++ b/src/coreclr/pal/src/exception/signal.cpp
@@ -114,10 +114,6 @@ struct sigaction g_previous_sigabrt;
#if !HAVE_MACH_EXCEPTIONS
-// Offset of the local variable containing pointer to windows style context in the common_signal_handler function.
-// This offset is relative to the frame pointer.
-int g_common_signal_handler_context_locvar_offset = 0;
-
// TOP of special stack for handling stack overflow
volatile void* g_stackOverflowHandlerStack = NULL;
@@ -286,22 +282,6 @@ void SEHCleanupSignals()
}
}
-/*++
-Function :
- SEHCleanupAbort()
-
- Restore default SIGABORT signal handlers
-
- (no parameters, no return value)
---*/
-void SEHCleanupAbort()
-{
- if (g_registered_signal_handlers)
- {
- restore_signal(SIGABRT, &g_previous_sigabrt);
- }
-}
-
/* internal function definitions **********************************************/
/*++
@@ -388,7 +368,7 @@ static void invoke_previous_action(struct sigaction* action, int code, siginfo_t
if (signalRestarts)
{
// This signal mustn't be ignored because it will be restarted.
- PROCAbort(code);
+ PROCAbort(code, siginfo);
}
return;
}
@@ -403,7 +383,7 @@ static void invoke_previous_action(struct sigaction* action, int code, siginfo_t
{
// We can't invoke the original handler because returning from the
// handler doesn't restart the exception.
- PROCAbort(code);
+ PROCAbort(code, siginfo);
}
}
else if (IsSaSigInfo(action))
@@ -421,7 +401,7 @@ static void invoke_previous_action(struct sigaction* action, int code, siginfo_t
PROCNotifyProcessShutdown(IsRunningOnAlternateStack(context));
- PROCCreateCrashDumpIfEnabled(code);
+ PROCCreateCrashDumpIfEnabled(code, siginfo);
}
/*++
@@ -593,13 +573,13 @@ static void sigsegv_handler(int code, siginfo_t *siginfo, void *context)
if (SwitchStackAndExecuteHandler(code | StackOverflowFlag, siginfo, context, (size_t)handlerStackTop))
{
- PROCAbort(SIGSEGV);
+ PROCAbort(SIGSEGV, siginfo);
}
}
else
{
(void)!write(STDERR_FILENO, StackOverflowMessage, sizeof(StackOverflowMessage) - 1);
- PROCAbort(SIGSEGV);
+ PROCAbort(SIGSEGV, siginfo);
}
}
@@ -750,6 +730,11 @@ static void sigterm_handler(int code, siginfo_t *siginfo, void *context)
{
if (PALIsInitialized())
{
+ char* enable = getenv("COMPlus_EnableDumpOnSigTerm");
+ if (enable != nullptr && strcmp(enable, "1") == 0)
+ {
+ PROCCreateCrashDumpIfEnabled(code, siginfo);
+ }
// g_pSynchronizationManager shouldn't be null if PAL is initialized.
_ASSERTE(g_pSynchronizationManager != nullptr);
@@ -845,6 +830,15 @@ PAL_ERROR InjectActivationInternal(CorUnix::CPalThread* pThread)
// We can get EAGAIN when printing stack overflow stack trace and when other threads hit
// stack overflow too. Those are held in the sigsegv_handler with blocked signals until
// the process exits.
+
+#ifdef __APPLE__
+ // On Apple, pthread_kill is not allowed to be sent to dispatch queue threads
+ if (status == ENOTSUP)
+ {
+ return ERROR_NOT_SUPPORTED;
+ }
+#endif
+
if ((status != 0) && (status != EAGAIN))
{
// Failure to send the signal is fatal. There are only two cases when sending
@@ -922,11 +916,12 @@ static bool common_signal_handler(int code, siginfo_t *siginfo, void *sigcontext
#if !HAVE_MACH_EXCEPTIONS
sigset_t signal_set;
CONTEXT signalContextRecord;
+ CONTEXT* signalContextRecordPtr = &signalContextRecord;
EXCEPTION_RECORD exceptionRecord;
native_context_t *ucontext;
ucontext = (native_context_t *)sigcontext;
- g_common_signal_handler_context_locvar_offset = (int)((char*)&signalContextRecord - (char*)__builtin_frame_address(0));
+ g_hardware_exception_context_locvar_offset = (int)((char*)&signalContextRecordPtr - (char*)__builtin_frame_address(0));
if (code == (SIGSEGV | StackOverflowFlag))
{
diff --git a/src/coreclr/pal/src/include/pal/mutex.hpp b/src/coreclr/pal/src/include/pal/mutex.hpp
index 8aeaf9f62586ed..8a70fd6c7cd418 100644
--- a/src/coreclr/pal/src/include/pal/mutex.hpp
+++ b/src/coreclr/pal/src/include/pal/mutex.hpp
@@ -120,9 +120,16 @@ Miscellaneous
existing shared memory, naming, and waiting infrastructure is not suitable for this purpose, and is not used.
*/
-// Temporarily disabling usage of pthread process-shared mutexes on ARM/ARM64 due to functional issues that cannot easily be
-// detected with code due to hangs. See https://github.com/dotnet/runtime/issues/6014.
-#if HAVE_FULLY_FEATURED_PTHREAD_MUTEXES && HAVE_FUNCTIONAL_PTHREAD_ROBUST_MUTEXES && !(defined(HOST_ARM) || defined(HOST_ARM64) || defined(__FreeBSD__))
+// - Temporarily disabling usage of pthread process-shared mutexes on ARM/ARM64 due to functional issues that cannot easily be
+// detected with code due to hangs. See https://github.com/dotnet/runtime/issues/6014.
+// - On FreeBSD, pthread process-shared robust mutexes cannot be placed in shared memory mapped independently by the processes
+// involved. See https://github.com/dotnet/runtime/issues/10519.
+// - On OSX, pthread robust mutexes were/are not available at the time of this writing. In case they are made available in the
+// future, their use is disabled for compatibility.
+#if HAVE_FULLY_FEATURED_PTHREAD_MUTEXES && \
+ HAVE_FUNCTIONAL_PTHREAD_ROBUST_MUTEXES && \
+ !(defined(HOST_ARM) || defined(HOST_ARM64) || defined(__FreeBSD__) || defined(TARGET_OSX))
+
#define NAMED_MUTEX_USE_PTHREAD_MUTEX 1
#else
#define NAMED_MUTEX_USE_PTHREAD_MUTEX 0
diff --git a/src/coreclr/pal/src/include/pal/palinternal.h b/src/coreclr/pal/src/include/pal/palinternal.h
index b0abe2aa9be0ac..3fc42942be695d 100644
--- a/src/coreclr/pal/src/include/pal/palinternal.h
+++ b/src/coreclr/pal/src/include/pal/palinternal.h
@@ -430,6 +430,7 @@ function_name() to call the system's implementation
#undef va_list
#undef va_start
#undef va_end
+#undef va_arg
#undef va_copy
#undef stdin
#undef stdout
@@ -695,30 +696,30 @@ T* InterlockedCompareExchangePointerT(
template
inline T* InterlockedExchangePointerT(
T* volatile * target,
- int value) // When NULL is provided as argument.
+ std::nullptr_t value) // When NULL is provided as argument.
{
//STATIC_ASSERT(value == 0);
- return InterlockedExchangePointerT(target, reinterpret_cast(value));
+ return InterlockedExchangePointerT(target, (T*)(void*)value);
}
template
inline T* InterlockedCompareExchangePointerT(
T* volatile * destination,
- int exchange, // When NULL is provided as argument.
+ std::nullptr_t exchange, // When NULL is provided as argument.
T* comparand)
{
//STATIC_ASSERT(exchange == 0);
- return InterlockedCompareExchangePointerT(destination, reinterpret_cast(exchange), comparand);
+ return InterlockedCompareExchangePointerT(destination, (T*)(void*)exchange, comparand);
}
template
inline T* InterlockedCompareExchangePointerT(
T* volatile * destination,
T* exchange,
- int comparand) // When NULL is provided as argument.
+ std::nullptr_t comparand) // When NULL is provided as argument.
{
//STATIC_ASSERT(comparand == 0);
- return InterlockedCompareExchangePointerT(destination, exchange, reinterpret_cast(comparand));
+ return InterlockedCompareExchangePointerT(destination, exchange, (T*)(void*)comparand);
}
#undef InterlockedExchangePointer
diff --git a/src/coreclr/pal/src/include/pal/process.h b/src/coreclr/pal/src/include/pal/process.h
index b1de472ad427f1..71788cb2d00866 100644
--- a/src/coreclr/pal/src/include/pal/process.h
+++ b/src/coreclr/pal/src/include/pal/process.h
@@ -151,11 +151,12 @@ BOOL PROCAbortInitialize();
Parameters:
signal - POSIX signal number
+ siginfo - POSIX signal info
Does not return
--*/
PAL_NORETURN
-VOID PROCAbort(int signal = SIGABRT);
+VOID PROCAbort(int signal = SIGABRT, siginfo_t* siginfo = nullptr);
/*++
Function:
@@ -180,7 +181,7 @@ VOID PROCNotifyProcessShutdown(bool isExecutingOnAltStack = false);
(no return value)
--*/
-VOID PROCCreateCrashDumpIfEnabled(int signal);
+VOID PROCCreateCrashDumpIfEnabled(int signal, siginfo_t* siginfo);
/*++
Function:
diff --git a/src/coreclr/pal/src/include/pal/seh.hpp b/src/coreclr/pal/src/include/pal/seh.hpp
index 6ad89df0fdd650..327fe0d7fb03e2 100644
--- a/src/coreclr/pal/src/include/pal/seh.hpp
+++ b/src/coreclr/pal/src/include/pal/seh.hpp
@@ -145,5 +145,10 @@ CorUnix::PAL_ERROR SEHDisable(CorUnix::CPalThread *pthrCurrent);
}
+// Offset of the local variable containing pointer to windows style context in the common_signal_handler / PAL_DispatchException function.
+// This offset is relative to the frame pointer.
+extern int g_hardware_exception_context_locvar_offset;
+
+
#endif /* _PAL_SEH_HPP_ */
diff --git a/src/coreclr/pal/src/include/pal/sharedmemory.h b/src/coreclr/pal/src/include/pal/sharedmemory.h
index 1ded94e12fcc59..c6e5abe97c3a78 100644
--- a/src/coreclr/pal/src/include/pal/sharedmemory.h
+++ b/src/coreclr/pal/src/include/pal/sharedmemory.h
@@ -173,7 +173,8 @@ class SharedMemorySharedDataHeader
};
public:
- static SIZE_T DetermineTotalByteCount(SIZE_T dataByteCount);
+ static SIZE_T GetUsedByteCount(SIZE_T dataByteCount);
+ static SIZE_T GetTotalByteCount(SIZE_T dataByteCount);
public:
SharedMemorySharedDataHeader(SharedMemoryType type, UINT8 version);
diff --git a/src/coreclr/pal/src/include/pal/signal.hpp b/src/coreclr/pal/src/include/pal/signal.hpp
index a1b721b8fd3ce5..c5a1e276a05b53 100644
--- a/src/coreclr/pal/src/include/pal/signal.hpp
+++ b/src/coreclr/pal/src/include/pal/signal.hpp
@@ -117,14 +117,4 @@ Function :
--*/
void SEHCleanupSignals();
-/*++
-Function :
- SEHCleanupAbort()
-
- Restore default SIGABORT signal handlers
-
- (no parameters, no return value)
---*/
-void SEHCleanupAbort();
-
#endif /* _PAL_SIGNAL_HPP_ */
diff --git a/src/coreclr/pal/src/init/pal.cpp b/src/coreclr/pal/src/init/pal.cpp
index fee6957306635e..9babab4ea35d4f 100644
--- a/src/coreclr/pal/src/init/pal.cpp
+++ b/src/coreclr/pal/src/init/pal.cpp
@@ -134,7 +134,7 @@ static bool RunningNatively()
{
int ret = 0;
size_t sz = sizeof(ret);
- if (sysctlbyname("sysctl.proc_native", &ret, &sz, NULL, 0) != 0)
+ if (sysctlbyname("sysctl.proc_native", &ret, &sz, nullptr, 0) != 0)
{
// if the sysctl failed, we'll assume this OS does not support
// binary translation - so we must be running natively.
@@ -207,7 +207,7 @@ int
PALAPI
PAL_InitializeDLL()
{
- return Initialize(0, NULL, g_initializeDLLFlags);
+ return Initialize(0, nullptr, g_initializeDLLFlags);
}
/*++
@@ -269,12 +269,12 @@ void
InitializeDefaultStackSize()
{
char* defaultStackSizeStr = getenv("COMPlus_DefaultStackSize");
- if (defaultStackSizeStr != NULL)
+ if (defaultStackSizeStr != nullptr)
{
errno = 0;
// Like all numeric values specific by the COMPlus_xxx variables, it is a
// hexadecimal string without any prefix.
- long int size = strtol(defaultStackSizeStr, NULL, 16);
+ long int size = strtol(defaultStackSizeStr, nullptr, 16);
if (errno == 0)
{
@@ -311,10 +311,10 @@ Initialize(
DWORD flags)
{
PAL_ERROR palError = ERROR_GEN_FAILURE;
- CPalThread *pThread = NULL;
- CSharedMemoryObjectManager *pshmom = NULL;
- LPWSTR command_line = NULL;
- LPWSTR exe_path = NULL;
+ CPalThread *pThread = nullptr;
+ CSharedMemoryObjectManager *pshmom = nullptr;
+ LPWSTR command_line = nullptr;
+ LPWSTR exe_path = nullptr;
int retval = -1;
bool fFirstTimeInit = false;
@@ -336,18 +336,18 @@ Initialize(
CriticalSectionSubSysInitialize();
- if(NULL == init_critsec)
+ if(nullptr == init_critsec)
{
pthread_mutex_lock(&init_critsec_mutex); // prevents race condition of two threads
// initializing the critical section.
- if(NULL == init_critsec)
+ if(nullptr == init_critsec)
{
static CRITICAL_SECTION temp_critsec;
// Want this critical section to NOT be internal to avoid the use of unsafe region markers.
InternalInitializeCriticalSectionAndSpinCount(&temp_critsec, 0, false);
- if(NULL != InterlockedCompareExchangePointer(&init_critsec, &temp_critsec, NULL))
+ if(nullptr != InterlockedCompareExchangePointer(&init_critsec, &temp_critsec, nullptr))
{
// Another thread got in before us! shouldn't happen, if the PAL
// isn't initialized there shouldn't be any other threads
@@ -358,7 +358,7 @@ Initialize(
pthread_mutex_unlock(&init_critsec_mutex);
}
- InternalEnterCriticalSection(pThread, init_critsec); // here pThread is always NULL
+ InternalEnterCriticalSection(pThread, init_critsec); // here pThread is always nullptr
if (init_count == 0)
{
@@ -407,12 +407,12 @@ Initialize(
#ifdef FEATURE_ENABLE_NO_ADDRESS_SPACE_RANDOMIZATION
char* useDefaultBaseAddr = getenv("COMPlus_UseDefaultBaseAddr");
- if (useDefaultBaseAddr != NULL)
+ if (useDefaultBaseAddr != nullptr)
{
errno = 0;
// Like all numeric values specific by the COMPlus_xxx variables, it is a
// hexadecimal string without any prefix.
- long int flag = strtol(useDefaultBaseAddr, NULL, 16);
+ long int flag = strtol(useDefaultBaseAddr, nullptr, 16);
if (errno == 0)
{
@@ -508,7 +508,7 @@ Initialize(
//
pshmom = InternalNew();
- if (NULL == pshmom)
+ if (nullptr == pshmom)
{
ERROR("Unable to allocate new object manager\n");
palError = ERROR_OUTOFMEMORY;
@@ -531,7 +531,7 @@ Initialize(
g_pSynchronizationManager =
CPalSynchMgrController::CreatePalSynchronizationManager();
- if (NULL == g_pSynchronizationManager)
+ if (nullptr == g_pSynchronizationManager)
{
palError = ERROR_NOT_ENOUGH_MEMORY;
ERROR("Failure creating synchronization manager\n");
@@ -545,11 +545,11 @@ Initialize(
palError = ERROR_GEN_FAILURE;
- if (argc > 0 && argv != NULL)
+ if (argc > 0 && argv != nullptr)
{
/* build the command line */
command_line = INIT_FormatCommandLine(argc, argv);
- if (NULL == command_line)
+ if (nullptr == command_line)
{
ERROR("Error building command line\n");
palError = ERROR_PALINIT_COMMAND_LINE;
@@ -558,7 +558,7 @@ Initialize(
/* find out the application's full path */
exe_path = INIT_GetCurrentEXEPath();
- if (NULL == exe_path)
+ if (nullptr == exe_path)
{
ERROR("Unable to find exe path\n");
palError = ERROR_PALINIT_CONVERT_EXE_PATH;
@@ -576,7 +576,7 @@ Initialize(
}
// InitializeProcessCommandLine took ownership of this memory.
- command_line = NULL;
+ command_line = nullptr;
#ifdef PAL_PERF
// Initialize the Profiling structure
@@ -597,7 +597,7 @@ Initialize(
}
// LOADSetExeName took ownership of this memory.
- exe_path = NULL;
+ exe_path = nullptr;
}
if (init_count == 0)
@@ -742,7 +742,7 @@ Initialize(
if (fFirstTimeInit && 0 == retval)
{
- _ASSERTE(NULL != pThread);
+ _ASSERTE(nullptr != pThread);
}
if (retval != 0 && GetLastError() == ERROR_SUCCESS)
@@ -858,7 +858,7 @@ PAL_IsDebuggerPresent()
struct kinfo_proc info = {};
size_t size = sizeof(info);
int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid() };
- int ret = sysctl(mib, sizeof(mib)/sizeof(*mib), &info, &size, NULL, 0);
+ int ret = sysctl(mib, sizeof(mib)/sizeof(*mib), &info, &size, nullptr, 0);
if (ret == 0)
return ((info.kp_proc.p_flag & P_TRACED) != 0);
@@ -871,12 +871,12 @@ PAL_IsDebuggerPresent()
struct kinfo_proc *info;
- kd = kvm_open(NULL, NULL, NULL, KVM_NO_FILES, "kvm_open");
- if (kd == NULL)
+ kd = kvm_open(nullptr, nullptr, nullptr, KVM_NO_FILES, "kvm_open");
+ if (kd == nullptr)
return FALSE;
info = kvm_getprocs(kd, KERN_PROC_PID, getpid(), &cnt);
- if (info == NULL || cnt < 1)
+ if (info == nullptr || cnt < 1)
{
kvm_close(kd);
return FALSE;
@@ -960,7 +960,7 @@ PAL_TerminateEx(
{
ENTRY_EXTERNAL("PAL_TerminateEx()\n");
- if (NULL == init_critsec)
+ if (nullptr == init_critsec)
{
/* note that these macros probably won't output anything, since the
debug channels haven't been initialized yet */
@@ -1057,7 +1057,7 @@ BOOL PALInitLock(void)
}
CPalThread * pThread =
- (PALIsThreadDataInitialized() ? InternalGetCurrentThread() : NULL);
+ (PALIsThreadDataInitialized() ? InternalGetCurrentThread() : nullptr);
InternalEnterCriticalSection(pThread, init_critsec);
return TRUE;
@@ -1079,7 +1079,7 @@ void PALInitUnlock(void)
}
CPalThread * pThread =
- (PALIsThreadDataInitialized() ? InternalGetCurrentThread() : NULL);
+ (PALIsThreadDataInitialized() ? InternalGetCurrentThread() : nullptr);
InternalLeaveCriticalSection(pThread, init_critsec);
}
@@ -1138,7 +1138,7 @@ static BOOL INIT_IncreaseDescriptorLimit(void)
Parameters :
int argc : number of arguments in argv
- char **argv : argument list in an array of NULL-terminated strings
+ char **argv : argument list in an array of nullptr-terminated strings
Return value :
pointer to Unicode command line. This is a buffer allocated with malloc;
@@ -1161,7 +1161,7 @@ Note : not all peculiarities of Windows command-line processing are supported;
static LPWSTR INIT_FormatCommandLine (int argc, const char * const *argv)
{
LPWSTR retval;
- LPSTR command_line=NULL, command_ptr;
+ LPSTR command_line=nullptr, command_ptr;
LPCSTR arg_ptr;
INT length, i,j;
BOOL bQuoted = FALSE;
@@ -1186,7 +1186,7 @@ static LPWSTR INIT_FormatCommandLine (int argc, const char * const *argv)
if(!command_line)
{
ERROR("couldn't allocate memory for command line!\n");
- return NULL;
+ return nullptr;
}
command_ptr=command_line;
@@ -1220,32 +1220,32 @@ static LPWSTR INIT_FormatCommandLine (int argc, const char * const *argv)
}
*command_ptr++=' ';
}
- /* replace the last space with a NULL terminator */
+ /* replace the last space with a nullptr terminator */
command_ptr--;
*command_ptr='\0';
/* convert to Unicode */
- i = MultiByteToWideChar(CP_ACP, 0,command_line, -1, NULL, 0);
+ i = MultiByteToWideChar(CP_ACP, 0,command_line, -1, nullptr, 0);
if (i == 0)
{
ASSERT("MultiByteToWideChar failure\n");
free(command_line);
- return NULL;
+ return nullptr;
}
retval = reinterpret_cast(InternalMalloc((sizeof(WCHAR)*i)));
- if(retval == NULL)
+ if(retval == nullptr)
{
ERROR("can't allocate memory for Unicode command line!\n");
free(command_line);
- return NULL;
+ return nullptr;
}
if(!MultiByteToWideChar(CP_ACP, 0,command_line, i, retval, i))
{
ASSERT("MultiByteToWideChar failure\n");
free(retval);
- retval = NULL;
+ retval = nullptr;
}
else
TRACE("Command line is %s\n", command_line);
@@ -1275,25 +1275,25 @@ static LPWSTR INIT_GetCurrentEXEPath()
if (!path)
{
ERROR( "Cannot get current exe path\n" );
- return NULL;
+ return nullptr;
}
PathCharString real_path;
real_path.Set(path, strlen(path));
free(path);
- return_size = MultiByteToWideChar(CP_ACP, 0, real_path, -1, NULL, 0);
+ return_size = MultiByteToWideChar(CP_ACP, 0, real_path, -1, nullptr, 0);
if (0 == return_size)
{
ASSERT("MultiByteToWideChar failure\n");
- return NULL;
+ return nullptr;
}
return_value = reinterpret_cast(InternalMalloc((return_size*sizeof(WCHAR))));
- if (NULL == return_value)
+ if (nullptr == return_value)
{
ERROR("Not enough memory to create full path\n");
- return NULL;
+ return nullptr;
}
else
{
@@ -1302,7 +1302,7 @@ static LPWSTR INIT_GetCurrentEXEPath()
{
ASSERT("MultiByteToWideChar failure\n");
free(return_value);
- return_value = NULL;
+ return_value = nullptr;
}
else
{
diff --git a/src/coreclr/pal/src/map/map.cpp b/src/coreclr/pal/src/map/map.cpp
index af97934f7ca845..7d0635c4abea2e 100644
--- a/src/coreclr/pal/src/map/map.cpp
+++ b/src/coreclr/pal/src/map/map.cpp
@@ -2045,14 +2045,48 @@ MAPmmapAndRecord(
// Mojave hardened runtime doesn't allow executable mappings of a file. So we have to create an
// anonymous mapping and read the file contents into it instead.
+#if defined(HOST_ARM64)
+ // Set the requested mapping with forced PROT_WRITE, mmap the file, and copy its contents there.
+ // Once PROT_WRITE and PROT_EXEC are set together, Apple Silicon will require the use of
+ // PAL_JitWriteProtect to switch between executable and writable.
+ LPVOID pvMappedFile = mmap(NULL, len + adjust, PROT_READ, MAP_PRIVATE, fd, offset - adjust);
+ if (MAP_FAILED == pvMappedFile)
+ {
+ ERROR_(LOADER)("mmap failed with code %d: %s.\n", errno, strerror(errno));
+ palError = FILEGetLastErrorFromErrno();
+ }
+ else
+ {
+ if (-1 == mprotect(pvBaseAddress, len + adjust, prot | PROT_WRITE))
+ {
+ ERROR_(LOADER)("mprotect failed with code %d: %s.\n", errno, strerror(errno));
+ palError = FILEGetLastErrorFromErrno();
+ }
+ else
+ {
+ PAL_JitWriteProtect(true);
+ memcpy(pvBaseAddress, pvMappedFile, len + adjust);
+ PAL_JitWriteProtect(false);
+ }
+ if (-1 == munmap(pvMappedFile, len + adjust))
+ {
+ ERROR_(LOADER)("Unable to unmap the file. Expect trouble.\n");
+ if (NO_ERROR == palError)
+ palError = FILEGetLastErrorFromErrno();
+ }
+ }
+#else
// Set the requested mapping with forced PROT_WRITE to ensure data from the file can be read there,
- // read the data in and finally remove the forced PROT_WRITE
+ // read the data in and finally remove the forced PROT_WRITE. On Intel we can still switch the
+ // protection later with mprotect.
if ((mprotect(pvBaseAddress, len + adjust, prot | PROT_WRITE) == -1) ||
(pread(fd, pvBaseAddress, len + adjust, offset - adjust) == -1) ||
(((prot & PROT_WRITE) == 0) && mprotect(pvBaseAddress, len + adjust, prot) == -1))
{
palError = FILEGetLastErrorFromErrno();
}
+#endif
+
}
else
#endif
diff --git a/src/coreclr/pal/src/sharedmemory/sharedmemory.cpp b/src/coreclr/pal/src/sharedmemory/sharedmemory.cpp
index 4c946cc5257b74..2cec2008582119 100644
--- a/src/coreclr/pal/src/sharedmemory/sharedmemory.cpp
+++ b/src/coreclr/pal/src/sharedmemory/sharedmemory.cpp
@@ -188,7 +188,12 @@ bool SharedMemoryHelpers::EnsureDirectoryExists(
}
if (!createIfNotExist || chmod(path, PermissionsMask_AllUsers_ReadWriteExecute) != 0)
{
- throw SharedMemoryException(static_cast(SharedMemoryError::IO));
+ // We were not asked to create the path or we weren't able to set the new permissions.
+ // As a last resort, check that at least the current user has full access.
+ if ((statInfo.st_mode & PermissionsMask_CurrentUser_ReadWriteExecute) != PermissionsMask_CurrentUser_ReadWriteExecute)
+ {
+ throw SharedMemoryException(static_cast(SharedMemoryError::IO));
+ }
}
return true;
}
@@ -519,9 +524,14 @@ bool SharedMemoryId::AppendSessionDirectoryName(PathCharString& path) const
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// SharedMemorySharedDataHeader
-SIZE_T SharedMemorySharedDataHeader::DetermineTotalByteCount(SIZE_T dataByteCount)
+SIZE_T SharedMemorySharedDataHeader::GetUsedByteCount(SIZE_T dataByteCount)
+{
+ return sizeof(SharedMemorySharedDataHeader) + dataByteCount;
+}
+
+SIZE_T SharedMemorySharedDataHeader::GetTotalByteCount(SIZE_T dataByteCount)
{
- return SharedMemoryHelpers::AlignUp(sizeof(SharedMemorySharedDataHeader) + dataByteCount, GetVirtualPageSize());
+ return SharedMemoryHelpers::AlignUp(GetUsedByteCount(dataByteCount), GetVirtualPageSize());
}
SharedMemorySharedDataHeader::SharedMemorySharedDataHeader(SharedMemoryType type, UINT8 version)
@@ -642,7 +652,7 @@ SharedMemoryProcessDataHeader *SharedMemoryProcessDataHeader::CreateOrOpen(
{
_ASSERTE(
processDataHeader->GetSharedDataTotalByteCount() ==
- SharedMemorySharedDataHeader::DetermineTotalByteCount(sharedDataByteCount));
+ SharedMemorySharedDataHeader::GetTotalByteCount(sharedDataByteCount));
processDataHeader->IncRefCount();
return processDataHeader;
}
@@ -697,14 +707,23 @@ SharedMemoryProcessDataHeader *SharedMemoryProcessDataHeader::CreateOrOpen(
}
// Set or validate the file length
- SIZE_T sharedDataTotalByteCount = SharedMemorySharedDataHeader::DetermineTotalByteCount(sharedDataByteCount);
+ SIZE_T sharedDataUsedByteCount = SharedMemorySharedDataHeader::GetUsedByteCount(sharedDataByteCount);
+ SIZE_T sharedDataTotalByteCount = SharedMemorySharedDataHeader::GetTotalByteCount(sharedDataByteCount);
if (createdFile)
{
SharedMemoryHelpers::SetFileSize(fileDescriptor, sharedDataTotalByteCount);
}
- else if (SharedMemoryHelpers::GetFileSize(fileDescriptor) != sharedDataTotalByteCount)
+ else
{
- throw SharedMemoryException(static_cast(SharedMemoryError::HeaderMismatch));
+ SIZE_T currentFileSize = SharedMemoryHelpers::GetFileSize(fileDescriptor);
+ if (currentFileSize < sharedDataUsedByteCount)
+ {
+ throw SharedMemoryException(static_cast(SharedMemoryError::HeaderMismatch));
+ }
+ if (currentFileSize < sharedDataTotalByteCount)
+ {
+ SharedMemoryHelpers::SetFileSize(fileDescriptor, sharedDataTotalByteCount);
+ }
}
// Acquire and hold a shared file lock on the shared memory file as long as it is open, to indicate that this process is
@@ -726,7 +745,7 @@ SharedMemoryProcessDataHeader *SharedMemoryProcessDataHeader::CreateOrOpen(
{
if (clearContents)
{
- memset(mappedBuffer, 0, sharedDataTotalByteCount);
+ memset(mappedBuffer, 0, sharedDataUsedByteCount);
}
sharedDataHeader = new(mappedBuffer) SharedMemorySharedDataHeader(requiredSharedDataHeader);
}
diff --git a/src/coreclr/pal/src/thread/process.cpp b/src/coreclr/pal/src/thread/process.cpp
index 0ae3f2eecafd05..5be5d1b90360e0 100644
--- a/src/coreclr/pal/src/thread/process.cpp
+++ b/src/coreclr/pal/src/thread/process.cpp
@@ -85,7 +85,6 @@ SET_DEFAULT_DEBUG_CHANNEL(PROCESS); // some headers have code with asserts, so d
#include
#include
#include
-#if defined(HOST_ARM64)
#include
#include
extern "C"
@@ -103,7 +102,6 @@ extern "C"
} \
} while (false)
-#endif // defined(HOST_ARM64)
#endif // __APPLE__
#ifdef __NetBSD__
@@ -3108,6 +3106,28 @@ PROCFormatInt(ULONG32 value)
return buffer;
}
+/*++
+Function:
+ PROCFormatInt64
+
+ Helper function to format an ULONG64 as a string.
+
+--*/
+char*
+PROCFormatInt64(ULONG64 value)
+{
+ char* buffer = (char*)InternalMalloc(128);
+ if (buffer != nullptr)
+ {
+ if (sprintf_s(buffer, 128, "%lld", value) == -1)
+ {
+ free(buffer);
+ buffer = nullptr;
+ }
+ }
+ return buffer;
+}
+
/*++
Function
PROCBuildCreateDumpCommandLine
@@ -3124,10 +3144,9 @@ PROCBuildCreateDumpCommandLine(
std::vector& argv,
char** pprogram,
char** ppidarg,
- char* dumpName,
- char* dumpType,
- BOOL diag,
- BOOL crashReport)
+ const char* dumpName,
+ const char* dumpType,
+ ULONG32 flags)
{
if (g_szCoreCLRPath == nullptr)
{
@@ -3190,12 +3209,17 @@ PROCBuildCreateDumpCommandLine(
}
}
- if (diag)
+ if (flags & GenerateDumpFlagsLoggingEnabled)
{
argv.push_back("--diag");
}
- if (crashReport)
+ if (flags & GenerateDumpFlagsVerboseLoggingEnabled)
+ {
+ argv.push_back("--verbose");
+ }
+
+ if (flags & GenerateDumpFlagsCrashReportEnabled)
{
argv.push_back("--crashreport");
}
@@ -3284,12 +3308,26 @@ PROCAbortInitialize()
char* dumpType = getenv("COMPlus_DbgMiniDumpType");
char* diagStr = getenv("COMPlus_CreateDumpDiagnostics");
BOOL diag = diagStr != nullptr && strcmp(diagStr, "1") == 0;
+ char* verboseStr = getenv("COMPlus_CreateDumpVerboseDiagnostics");
+ BOOL verbose = verboseStr != nullptr && strcmp(verboseStr, "1") == 0;
char* crashReportStr = getenv("COMPlus_EnableCrashReport");
BOOL crashReport = crashReportStr != nullptr && strcmp(crashReportStr, "1") == 0;
-
+ ULONG32 flags = GenerateDumpFlagsNone;
+ if (diag)
+ {
+ flags |= GenerateDumpFlagsLoggingEnabled;
+ }
+ if (verbose)
+ {
+ flags |= GenerateDumpFlagsVerboseLoggingEnabled;
+ }
+ if (crashReport)
+ {
+ flags |= GenerateDumpFlagsCrashReportEnabled;
+ }
char* program = nullptr;
char* pidarg = nullptr;
- if (!PROCBuildCreateDumpCommandLine(g_argvCreateDump, &program, &pidarg, dumpName, dumpType, diag, crashReport))
+ if (!PROCBuildCreateDumpCommandLine(g_argvCreateDump, &program, &pidarg, dumpName, dumpType, flags))
{
return FALSE;
}
@@ -3311,8 +3349,8 @@ PROCAbortInitialize()
WithHeap = 2,
Triage = 3,
Full = 4
- diag
- true - log createdump diagnostics to console
+ flags
+ See enum
Return:
TRUE success
@@ -3322,7 +3360,7 @@ BOOL
PAL_GenerateCoreDump(
LPCSTR dumpName,
INT dumpType,
- BOOL diag)
+ ULONG32 flags)
{
std::vector argvCreateDump;
char dumpTypeStr[16];
@@ -3341,7 +3379,7 @@ PAL_GenerateCoreDump(
}
char* program = nullptr;
char* pidarg = nullptr;
- BOOL result = PROCBuildCreateDumpCommandLine(argvCreateDump, &program, &pidarg, (char*)dumpName, dumpTypeStr, diag, false);
+ BOOL result = PROCBuildCreateDumpCommandLine(argvCreateDump, &program, &pidarg, dumpName, dumpTypeStr, flags);
if (result)
{
result = PROCCreateCrashDump(argvCreateDump);
@@ -3364,7 +3402,7 @@ PAL_GenerateCoreDump(
(no return value)
--*/
VOID
-PROCCreateCrashDumpIfEnabled(int signal)
+PROCCreateCrashDumpIfEnabled(int signal, siginfo_t* siginfo)
{
// If enabled, launch the create minidump utility and wait until it completes
if (!g_argvCreateDump.empty())
@@ -3372,13 +3410,16 @@ PROCCreateCrashDumpIfEnabled(int signal)
std::vector argv(g_argvCreateDump);
char* signalArg = nullptr;
char* crashThreadArg = nullptr;
+ char* signalCodeArg = nullptr;
+ char* signalErrnoArg = nullptr;
+ char* signalAddressArg = nullptr;
if (signal != 0)
{
// Remove the terminating nullptr
argv.pop_back();
- // Add the Windows exception code to the command line
+ // Add the signal number to the command line
signalArg = PROCFormatInt(signal);
if (signalArg != nullptr)
{
@@ -3393,6 +3434,29 @@ PROCCreateCrashDumpIfEnabled(int signal)
argv.push_back("--crashthread");
argv.push_back(crashThreadArg);
}
+
+ if (siginfo != nullptr)
+ {
+ signalCodeArg = PROCFormatInt(siginfo->si_code);
+ if (signalCodeArg != nullptr)
+ {
+ argv.push_back("--code");
+ argv.push_back(signalCodeArg);
+ }
+ signalErrnoArg = PROCFormatInt(siginfo->si_errno);
+ if (signalErrnoArg != nullptr)
+ {
+ argv.push_back("--errno");
+ argv.push_back(signalErrnoArg);
+ }
+ signalAddressArg = PROCFormatInt64((ULONG64)siginfo->si_addr);
+ if (signalAddressArg != nullptr)
+ {
+ argv.push_back("--address");
+ argv.push_back(signalAddressArg);
+ }
+ }
+
argv.push_back(nullptr);
}
@@ -3400,6 +3464,9 @@ PROCCreateCrashDumpIfEnabled(int signal)
free(signalArg);
free(crashThreadArg);
+ free(signalCodeArg);
+ free(signalErrnoArg);
+ free(signalAddressArg);
}
}
@@ -3417,15 +3484,16 @@ PROCCreateCrashDumpIfEnabled(int signal)
--*/
PAL_NORETURN
VOID
-PROCAbort(int signal)
+PROCAbort(int signal, siginfo_t* siginfo)
{
// Do any shutdown cleanup before aborting or creating a core dump
PROCNotifyProcessShutdown();
- PROCCreateCrashDumpIfEnabled(signal);
+ PROCCreateCrashDumpIfEnabled(signal, siginfo);
- // Restore the SIGABORT handler to prevent recursion
- SEHCleanupAbort();
+ // Restore all signals; the SIGABORT handler to prevent recursion and
+ // the others to prevent multiple core dumps from being generated.
+ SEHCleanupSignals();
// Abort the process after waiting for the core dump to complete
abort();
@@ -3460,7 +3528,7 @@ InitializeFlushProcessWriteBuffers()
}
}
-#if defined(TARGET_OSX) && defined(HOST_ARM64)
+#ifdef TARGET_OSX
return TRUE;
#else
s_helperPage = static_cast(mmap(0, GetVirtualPageSize(), PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0));
@@ -3490,7 +3558,7 @@ InitializeFlushProcessWriteBuffers()
}
return status == 0;
-#endif // defined(TARGET_OSX) && defined(HOST_ARM64)
+#endif // TARGET_OSX
}
#define FATAL_ASSERT(e, msg) \
@@ -3540,7 +3608,7 @@ FlushProcessWriteBuffers()
status = pthread_mutex_unlock(&flushProcessWriteBuffersMutex);
FATAL_ASSERT(status == 0, "Failed to unlock the flushProcessWriteBuffersMutex lock");
}
-#if defined(TARGET_OSX) && defined(HOST_ARM64)
+#ifdef TARGET_OSX
else
{
mach_msg_type_number_t cThreads;
@@ -3566,7 +3634,7 @@ FlushProcessWriteBuffers()
machret = vm_deallocate(mach_task_self(), (vm_address_t)pThreads, cThreads * sizeof(thread_act_t));
CHECK_MACH("vm_deallocate()", machret);
}
-#endif // defined(TARGET_OSX) && defined(HOST_ARM64)
+#endif // TARGET_OSX
}
/*++
diff --git a/src/coreclr/scripts/superpmi_setup.py b/src/coreclr/scripts/superpmi_setup.py
index 0d0bc0bb341232..0b4b9ecc2ae063 100644
--- a/src/coreclr/scripts/superpmi_setup.py
+++ b/src/coreclr/scripts/superpmi_setup.py
@@ -23,12 +23,12 @@
# 4. Lastly, it sets the pipeline variables.
# Below are the helix queues it sets depending on the OS/architecture:
-# | Arch | windows | Linux |
-# |-------|----------------------|--------------------------------------------------------------------------------------------------------------------------------------|
-# | x86 | Windows.10.Amd64.X86 | |
-# | x64 | Windows.10.Amd64.X86 | Ubuntu.1804.Amd64 |
-# | arm | - | (Ubuntu.1804.Arm32)Ubuntu.1804.Armarch@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-18.04-helix-arm32v7-bfcd90a-20200121150440 |
-# | arm64 | Windows.10.Arm64 | (Ubuntu.1804.Arm64)Ubuntu.1804.ArmArch@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-18.04-helix-arm64v8-20210531091519-97d8652 |
+# | Arch | windows | Linux |
+# |-------|----------------------|---------------------------------------------------------------------------------------------------------------|
+# | x86 | Windows.10.Amd64.X86 | |
+# | x64 | Windows.10.Amd64.X86 | Ubuntu.1804.Amd64 |
+# | arm | - | (Ubuntu.1804.Arm32)Ubuntu.1804.Armarch@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-18.04-helix-arm32v7 |
+# | arm64 | Windows.10.Arm64 | (Ubuntu.1804.Arm64)Ubuntu.1804.ArmArch@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-18.04-helix-arm64v8 |
################################################################################
################################################################################
@@ -490,9 +490,9 @@ def main(main_args):
helix_queue = "Windows.10.Arm64" if arch == "arm64" else "Windows.10.Amd64.X86"
else:
if arch == "arm":
- helix_queue = "(Ubuntu.1804.Arm32)Ubuntu.1804.Armarch@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-18.04-helix-arm32v7-bfcd90a-20200121150440"
+ helix_queue = "(Ubuntu.1804.Arm32)Ubuntu.1804.Armarch@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-18.04-helix-arm32v7-20230201170255-8b7d579"
elif arch == "arm64":
- helix_queue = "(Ubuntu.1804.Arm64)Ubuntu.1804.ArmArch@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-18.04-helix-arm64v8-20210531091519-97d8652"
+ helix_queue = "(Ubuntu.1804.Arm64)Ubuntu.1804.ArmArch@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-18.04-helix-arm64v8"
else:
helix_queue = "Ubuntu.1804.Amd64"
diff --git a/src/coreclr/tools/Common/JitInterface/CorInfoBase.cs b/src/coreclr/tools/Common/JitInterface/CorInfoBase.cs
index db9eb3f137a588..6fd7ca33bfb8db 100644
--- a/src/coreclr/tools/Common/JitInterface/CorInfoBase.cs
+++ b/src/coreclr/tools/Common/JitInterface/CorInfoBase.cs
@@ -2549,10 +2549,25 @@ static uint _getJitFlags(IntPtr thisHandle, IntPtr* ppException, CORJIT_FLAGS* f
}
}
+ [UnmanagedCallersOnly]
+ static byte _doesFieldBelongToClass(IntPtr thisHandle, IntPtr* ppException, CORINFO_FIELD_STRUCT_* fldHnd, CORINFO_CLASS_STRUCT_* cls)
+ {
+ var _this = GetThis(thisHandle);
+ try
+ {
+ return _this.doesFieldBelongToClass(fldHnd, cls) ? (byte)1 : (byte)0;
+ }
+ catch (Exception ex)
+ {
+ *ppException = _this.AllocException(ex);
+ return default;
+ }
+ }
+
static IntPtr GetUnmanagedCallbacks()
{
- void** callbacks = (void**)Marshal.AllocCoTaskMem(sizeof(IntPtr) * 172);
+ void** callbacks = (void**)Marshal.AllocCoTaskMem(sizeof(IntPtr) * 173);
callbacks[0] = (delegate* unmanaged)&_isJitIntrinsic;
callbacks[1] = (delegate* unmanaged)&_getMethodAttribs;
@@ -2726,6 +2741,7 @@ static IntPtr GetUnmanagedCallbacks()
callbacks[169] = (delegate* unmanaged)&_getRelocTypeHint;
callbacks[170] = (delegate* unmanaged)&_getExpectedTargetArchitecture;
callbacks[171] = (delegate* unmanaged)&_getJitFlags;
+ callbacks[172] = (delegate* unmanaged)&_doesFieldBelongToClass;
return (IntPtr)callbacks;
}
diff --git a/src/coreclr/tools/Common/JitInterface/CorInfoImpl.cs b/src/coreclr/tools/Common/JitInterface/CorInfoImpl.cs
index a0ccb4400f0758..cbc776a932870c 100644
--- a/src/coreclr/tools/Common/JitInterface/CorInfoImpl.cs
+++ b/src/coreclr/tools/Common/JitInterface/CorInfoImpl.cs
@@ -392,9 +392,9 @@ private void PublishCode()
_methodCodeNode.InitializeEHInfo(ehInfo);
_methodCodeNode.InitializeDebugLocInfos(_debugLocInfos);
- _methodCodeNode.InitializeDebugVarInfos(_debugVarInfos);
+ _methodCodeNode.InitializeDebugVarInfos(_debugVarInfos, _compilation.TypeSystemContext.Target);
#if READYTORUN
- _methodCodeNode.InitializeInliningInfo(_inlinedMethods.ToArray());
+ _methodCodeNode.InitializeInliningInfo(_inlinedMethods.ToArray(), _compilation.NodeFactory);
// Detect cases where the instruction set support used is a superset of the baseline instruction set specification
var baselineSupport = _compilation.InstructionSetSupport;
@@ -604,7 +604,8 @@ private bool Get_CORINFO_METHOD_INFO(MethodDesc method, MethodIL methodIL, CORIN
methodInfo->ILCode = (byte*)GetPin(ilCode);
methodInfo->ILCodeSize = (uint)ilCode.Length;
methodInfo->maxStack = (uint)methodIL.MaxStack;
- methodInfo->EHcount = (uint)methodIL.GetExceptionRegions().Length;
+ var exceptionRegions = methodIL.GetExceptionRegions();
+ methodInfo->EHcount = (uint)exceptionRegions.Length;
methodInfo->options = methodIL.IsInitLocals ? CorInfoOptions.CORINFO_OPT_INIT_LOCALS : (CorInfoOptions)0;
if (method.AcquiresInstMethodTableFromThis())
@@ -623,6 +624,24 @@ private bool Get_CORINFO_METHOD_INFO(MethodDesc method, MethodIL methodIL, CORIN
Get_CORINFO_SIG_INFO(method, sig: &methodInfo->args);
Get_CORINFO_SIG_INFO(methodIL.GetLocals(), &methodInfo->locals);
+#if READYTORUN
+ if ((methodInfo->options & CorInfoOptions.CORINFO_GENERICS_CTXT_MASK) != 0)
+ {
+ foreach (var region in exceptionRegions)
+ {
+ if (region.Kind == ILExceptionRegionKind.Catch)
+ {
+ TypeDesc catchType = (TypeDesc)methodIL.GetObject(region.ClassToken);
+ if (catchType.IsCanonicalSubtype(CanonicalFormKind.Any))
+ {
+ methodInfo->options |= CorInfoOptions.CORINFO_GENERICS_CTXT_KEEP_ALIVE;
+ break;
+ }
+ }
+ }
+ }
+#endif
+
return true;
}
@@ -3531,6 +3550,42 @@ private uint getExpectedTargetArchitecture()
}
}
+ private bool doesFieldBelongToClass(CORINFO_FIELD_STRUCT_* fld, CORINFO_CLASS_STRUCT_* cls)
+ {
+ var field = HandleToObject(fld);
+ var queryType = HandleToObject(cls);
+
+ Debug.Assert(!field.IsStatic);
+
+ // doesFieldBelongToClass implements the predicate of...
+ // if field is not associated with the class in any way, return false.
+ // if field is the only FieldDesc that the JIT might see for a given class handle
+ // and logical field pair then return true. This is needed as the field handle here
+ // is used as a key into a hashtable mapping writes to fields to value numbers.
+ //
+ // In this implmentation this is made more complex as the JIT is exposed to CORINFO_FIELD_STRUCT
+ // pointers which represent exact instantions, so performing exact matching is the necessary approach
+
+ // BaseType._field, BaseType -> true
+ // BaseType._field, DerivedType -> true
+ // BaseType<__Canon>._field, BaseType<__Canon> -> true
+ // BaseType<__Canon>._field, BaseType -> false
+ // BaseType<__Canon>._field, BaseType