Skip to content

Commit e346656

Browse files
authored
Merge pull request #111376 from carlossanlop/release/8.0-staging
[manual] Merge release/8.0-staging into release/8.0
2 parents b704dce + 06672a3 commit e346656

File tree

45 files changed

+7235
-178
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+7235
-178
lines changed

NuGet.config

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,9 @@
1010
<!--Begin: Package sources managed by Dependency Flow automation. Do not edit the sources below.-->
1111
<!-- Begin: Package sources from dotnet-emsdk -->
1212
<add key="darc-pub-dotnet-emsdk-c458a76" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-dotnet-emsdk-c458a764/nuget/v3/index.json" />
13-
<add key="darc-pub-dotnet-emsdk-f623714" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-dotnet-emsdk-f6237140/nuget/v3/index.json" />
14-
<add key="darc-pub-dotnet-emsdk-f623714-4" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-dotnet-emsdk-f6237140-4/nuget/v3/index.json" />
15-
<add key="darc-pub-dotnet-emsdk-f623714-3" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-dotnet-emsdk-f6237140-3/nuget/v3/index.json" />
16-
<add key="darc-pub-dotnet-emsdk-f623714-2" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-dotnet-emsdk-f6237140-2/nuget/v3/index.json" />
17-
<add key="darc-pub-dotnet-emsdk-f623714-1" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-dotnet-emsdk-f6237140-1/nuget/v3/index.json" />
13+
<add key="darc-pub-dotnet-emsdk-c458a76-3" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-dotnet-emsdk-c458a764-3/nuget/v3/index.json" />
14+
<add key="darc-pub-dotnet-emsdk-c458a76-2" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-dotnet-emsdk-c458a764-2/nuget/v3/index.json" />
15+
<add key="darc-pub-dotnet-emsdk-c458a76-1" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-dotnet-emsdk-c458a764-1/nuget/v3/index.json" />
1816
<!-- End: Package sources from dotnet-emsdk -->
1917
<!-- Begin: Package sources from dotnet-sdk -->
2018
<!-- End: Package sources from dotnet-sdk -->

eng/Version.Details.xml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -99,14 +99,14 @@
9999
<Sha>c458a7647c04e323c238f381eb176af24254b3ff</Sha>
100100
<SourceBuild RepoName="emsdk" ManagedOnly="true" />
101101
</Dependency>
102-
<Dependency Name="Microsoft.SourceBuild.Intermediate.source-build-reference-packages" Version="8.0.0-alpha.1.24415.1">
102+
<Dependency Name="Microsoft.SourceBuild.Intermediate.source-build-reference-packages" Version="8.0.0-alpha.1.25060.2">
103103
<Uri>https://github.com/dotnet/source-build-reference-packages</Uri>
104-
<Sha>fe3794a68bd668d36d4d5014a9e6c9d22c0e6d86</Sha>
104+
<Sha>f9542c50beaefc38dd9d7ec9ea38d54fd154f21a</Sha>
105105
<SourceBuild RepoName="source-build-reference-packages" ManagedOnly="true" />
106106
</Dependency>
107-
<Dependency Name="Microsoft.SourceBuild.Intermediate.source-build-externals" Version="8.0.0-alpha.1.24516.2">
107+
<Dependency Name="Microsoft.SourceBuild.Intermediate.source-build-externals" Version="8.0.0-alpha.1.25060.2">
108108
<Uri>https://github.com/dotnet/source-build-externals</Uri>
109-
<Sha>3b85d089311e89b47758ba6a84eeb79374476dc8</Sha>
109+
<Sha>c7cb4da26e74ef645e3e98fcb4534a7d66247a82</Sha>
110110
<SourceBuild RepoName="source-build-externals" ManagedOnly="true" />
111111
</Dependency>
112112
</ProductDependencies>
@@ -354,9 +354,9 @@
354354
<Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-optimization</Uri>
355355
<Sha>67613417f5e1af250e6ddfba79f8f2885d8e90fb</Sha>
356356
</Dependency>
357-
<Dependency Name="Microsoft.DotNet.HotReload.Utils.Generator.BuildTool" Version="8.0.0-alpha.0.24530.1">
357+
<Dependency Name="Microsoft.DotNet.HotReload.Utils.Generator.BuildTool" Version="8.0.0-alpha.0.25063.2">
358358
<Uri>https://github.com/dotnet/hotreload-utils</Uri>
359-
<Sha>b1aa9c34c5eaaf5a71b9b54db6978230fae4eb36</Sha>
359+
<Sha>a07c4f8a8393191ab5b65f4a3b4546ed1cbd8cdf</Sha>
360360
</Dependency>
361361
<Dependency Name="System.Runtime.Numerics.TestData" Version="8.0.0-beta.24517.1">
362362
<Uri>https://github.com/dotnet/runtime-assets</Uri>

eng/Versions.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@
188188
<MicrosoftDotNetXHarnessTestRunnersCommonVersion>8.0.0-prerelease.24510.2</MicrosoftDotNetXHarnessTestRunnersCommonVersion>
189189
<MicrosoftDotNetXHarnessTestRunnersXunitVersion>8.0.0-prerelease.24510.2</MicrosoftDotNetXHarnessTestRunnersXunitVersion>
190190
<MicrosoftDotNetXHarnessCLIVersion>8.0.0-prerelease.24510.2</MicrosoftDotNetXHarnessCLIVersion>
191-
<MicrosoftDotNetHotReloadUtilsGeneratorBuildToolVersion>8.0.0-alpha.0.24530.1</MicrosoftDotNetHotReloadUtilsGeneratorBuildToolVersion>
191+
<MicrosoftDotNetHotReloadUtilsGeneratorBuildToolVersion>8.0.0-alpha.0.25063.2</MicrosoftDotNetHotReloadUtilsGeneratorBuildToolVersion>
192192
<XUnitVersion>2.4.2</XUnitVersion>
193193
<XUnitAnalyzersVersion>1.0.0</XUnitAnalyzersVersion>
194194
<XUnitRunnerVisualStudioVersion>2.4.5</XUnitRunnerVisualStudioVersion>

eng/common/cross/toolchain.cmake

Lines changed: 30 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ if(TARGET_ARCH_NAME STREQUAL "arm")
4040
set(TOOLCHAIN "arm-linux-gnueabihf")
4141
endif()
4242
if(TIZEN)
43-
set(TIZEN_TOOLCHAIN "armv7hl-tizen-linux-gnueabihf/9.2.0")
43+
set(TIZEN_TOOLCHAIN "armv7hl-tizen-linux-gnueabihf")
4444
endif()
4545
elseif(TARGET_ARCH_NAME STREQUAL "arm64")
4646
set(CMAKE_SYSTEM_PROCESSOR aarch64)
@@ -49,7 +49,7 @@ elseif(TARGET_ARCH_NAME STREQUAL "arm64")
4949
elseif(LINUX)
5050
set(TOOLCHAIN "aarch64-linux-gnu")
5151
if(TIZEN)
52-
set(TIZEN_TOOLCHAIN "aarch64-tizen-linux-gnu/9.2.0")
52+
set(TIZEN_TOOLCHAIN "aarch64-tizen-linux-gnu")
5353
endif()
5454
elseif(FREEBSD)
5555
set(triple "aarch64-unknown-freebsd12")
@@ -58,7 +58,7 @@ elseif(TARGET_ARCH_NAME STREQUAL "armel")
5858
set(CMAKE_SYSTEM_PROCESSOR armv7l)
5959
set(TOOLCHAIN "arm-linux-gnueabi")
6060
if(TIZEN)
61-
set(TIZEN_TOOLCHAIN "armv7l-tizen-linux-gnueabi/9.2.0")
61+
set(TIZEN_TOOLCHAIN "armv7l-tizen-linux-gnueabi")
6262
endif()
6363
elseif(TARGET_ARCH_NAME STREQUAL "armv6")
6464
set(CMAKE_SYSTEM_PROCESSOR armv6l)
@@ -95,7 +95,7 @@ elseif(TARGET_ARCH_NAME STREQUAL "x64")
9595
elseif(LINUX)
9696
set(TOOLCHAIN "x86_64-linux-gnu")
9797
if(TIZEN)
98-
set(TIZEN_TOOLCHAIN "x86_64-tizen-linux-gnu/9.2.0")
98+
set(TIZEN_TOOLCHAIN "x86_64-tizen-linux-gnu")
9999
endif()
100100
elseif(FREEBSD)
101101
set(triple "x86_64-unknown-freebsd12")
@@ -112,7 +112,7 @@ elseif(TARGET_ARCH_NAME STREQUAL "x86")
112112
set(TOOLCHAIN "i686-linux-gnu")
113113
endif()
114114
if(TIZEN)
115-
set(TIZEN_TOOLCHAIN "i586-tizen-linux-gnu/9.2.0")
115+
set(TIZEN_TOOLCHAIN "i586-tizen-linux-gnu")
116116
endif()
117117
else()
118118
message(FATAL_ERROR "Arch is ${TARGET_ARCH_NAME}. Only arm, arm64, armel, armv6, ppc64le, riscv64, s390x, x64 and x86 are supported!")
@@ -124,26 +124,25 @@ endif()
124124

125125
# Specify include paths
126126
if(TIZEN)
127-
if(TARGET_ARCH_NAME STREQUAL "arm")
128-
include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/)
129-
include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/armv7hl-tizen-linux-gnueabihf)
130-
endif()
131-
if(TARGET_ARCH_NAME STREQUAL "armel")
132-
include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/)
133-
include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/armv7l-tizen-linux-gnueabi)
134-
endif()
135-
if(TARGET_ARCH_NAME STREQUAL "arm64")
136-
include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}/include/c++/)
137-
include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}/include/c++/aarch64-tizen-linux-gnu)
138-
endif()
139-
if(TARGET_ARCH_NAME STREQUAL "x86")
140-
include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/)
141-
include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}/include/c++/i586-tizen-linux-gnu)
142-
endif()
143-
if(TARGET_ARCH_NAME STREQUAL "x64")
144-
include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}/include/c++/)
145-
include_directories(SYSTEM ${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}/include/c++/x86_64-tizen-linux-gnu)
127+
function(find_toolchain_dir prefix)
128+
# Dynamically find the version subdirectory
129+
file(GLOB DIRECTORIES "${prefix}/*")
130+
list(GET DIRECTORIES 0 FIRST_MATCH)
131+
get_filename_component(TOOLCHAIN_VERSION ${FIRST_MATCH} NAME)
132+
133+
set(TIZEN_TOOLCHAIN_PATH "${prefix}/${TOOLCHAIN_VERSION}" PARENT_SCOPE)
134+
endfunction()
135+
136+
if(TARGET_ARCH_NAME MATCHES "^(arm|armel|x86)$")
137+
find_toolchain_dir("${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}")
138+
else()
139+
find_toolchain_dir("${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}")
146140
endif()
141+
142+
message(STATUS "TIZEN_TOOLCHAIN_PATH set to: ${TIZEN_TOOLCHAIN_PATH}")
143+
144+
include_directories(SYSTEM ${TIZEN_TOOLCHAIN_PATH}/include/c++)
145+
include_directories(SYSTEM ${TIZEN_TOOLCHAIN_PATH}/include/c++/${TIZEN_TOOLCHAIN})
147146
endif()
148147

149148
if(ANDROID)
@@ -265,21 +264,21 @@ endif()
265264

266265
if(TARGET_ARCH_NAME MATCHES "^(arm|armel)$")
267266
if(TIZEN)
268-
add_toolchain_linker_flag("-B${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}")
267+
add_toolchain_linker_flag("-B${TIZEN_TOOLCHAIN_PATH}")
269268
add_toolchain_linker_flag("-L${CROSS_ROOTFS}/lib")
270269
add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib")
271-
add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}")
270+
add_toolchain_linker_flag("-L${TIZEN_TOOLCHAIN_PATH}")
272271
endif()
273272
elseif(TARGET_ARCH_NAME MATCHES "^(arm64|x64)$")
274273
if(TIZEN)
275-
add_toolchain_linker_flag("-B${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}")
274+
add_toolchain_linker_flag("-B${TIZEN_TOOLCHAIN_PATH}")
276275
add_toolchain_linker_flag("-L${CROSS_ROOTFS}/lib64")
277276
add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib64")
278-
add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}")
277+
add_toolchain_linker_flag("-L${TIZEN_TOOLCHAIN_PATH}")
279278

280279
add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS}/lib64")
281280
add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS}/usr/lib64")
282-
add_toolchain_linker_flag("-Wl,--rpath-link=${CROSS_ROOTFS}/usr/lib64/gcc/${TIZEN_TOOLCHAIN}")
281+
add_toolchain_linker_flag("-Wl,--rpath-link=${TIZEN_TOOLCHAIN_PATH}")
283282
endif()
284283
elseif(TARGET_ARCH_NAME STREQUAL "x86")
285284
if(EXISTS ${CROSS_ROOTFS}/usr/lib/gcc/i586-alpine-linux-musl)
@@ -288,10 +287,10 @@ elseif(TARGET_ARCH_NAME STREQUAL "x86")
288287
endif()
289288
add_toolchain_linker_flag(-m32)
290289
if(TIZEN)
291-
add_toolchain_linker_flag("-B${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}")
290+
add_toolchain_linker_flag("-B${TIZEN_TOOLCHAIN_PATH}")
292291
add_toolchain_linker_flag("-L${CROSS_ROOTFS}/lib")
293292
add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib")
294-
add_toolchain_linker_flag("-L${CROSS_ROOTFS}/usr/lib/gcc/${TIZEN_TOOLCHAIN}")
293+
add_toolchain_linker_flag("-L${TIZEN_TOOLCHAIN_PATH}")
295294
endif()
296295
elseif(ILLUMOS)
297296
add_toolchain_linker_flag("-L${CROSS_ROOTFS}/lib/amd64")

eng/pipelines/coreclr/templates/helix-queues-setup.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -79,23 +79,23 @@ jobs:
7979
# Linux musl x64
8080
- ${{ if eq(parameters.platform, 'linux_musl_x64') }}:
8181
- ${{ if eq(variables['System.TeamProject'], 'public') }}:
82-
- (Alpine.318.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:alpine-3.18-helix-amd64
82+
- (Alpine.321.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:alpine-3.21-helix-amd64
8383
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
84-
- (Alpine.318.Amd64)[email protected]/dotnet-buildtools/prereqs:alpine-3.18-helix-amd64
84+
- (Alpine.321.Amd64)[email protected]/dotnet-buildtools/prereqs:alpine-3.21-helix-amd64
8585

8686
# Linux musl arm32
8787
- ${{ if eq(parameters.platform, 'linux_musl_arm') }}:
8888
- ${{ if eq(variables['System.TeamProject'], 'public') }}:
89-
- (Alpine.318.Arm32.Open)[email protected]/dotnet-buildtools/prereqs:alpine-3.18-helix-arm32v7
89+
- (Alpine.321.Arm32.Open)[email protected]/dotnet-buildtools/prereqs:alpine-3.21-helix-arm32v7
9090
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
91-
- (Alpine.318.Arm32)[email protected]/dotnet-buildtools/prereqs:alpine-3.18-helix-arm32v7
91+
- (Alpine.321.Arm32)[email protected]/dotnet-buildtools/prereqs:alpine-3.21-helix-arm32v7
9292

9393
# Linux musl arm64
9494
- ${{ if eq(parameters.platform, 'linux_musl_arm64') }}:
9595
- ${{ if eq(variables['System.TeamProject'], 'public') }}:
96-
- (Alpine.318.Arm64.Open)[email protected]/dotnet-buildtools/prereqs:alpine-3.18-helix-arm64v8
96+
- (Alpine.320.Arm64.Open)[email protected]/dotnet-buildtools/prereqs:alpine-3.20-helix-arm64v8
9797
- ${{ if eq(variables['System.TeamProject'], 'internal') }}:
98-
- (Alpine.318.Arm64)[email protected]/dotnet-buildtools/prereqs:alpine-3.18-helix-arm64v8
98+
- (Alpine.320.Arm64)[email protected]/dotnet-buildtools/prereqs:alpine-3.20-helix-arm64v8
9999

100100
# Linux x64
101101
- ${{ if eq(parameters.platform, 'linux_x64') }}:

eng/pipelines/libraries/helix-queues-setup.yml

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,28 +47,27 @@ jobs:
4747
# Linux musl x64
4848
- ${{ if eq(parameters.platform, 'linux_musl_x64') }}:
4949
- ${{ if or(ne(parameters.jobParameters.isExtraPlatforms, true), eq(parameters.jobParameters.includeAllPlatforms, true)) }}:
50-
- (Alpine.318.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:alpine-3.18-helix-amd64
50+
- (Alpine.321.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:alpine-3.21-helix-amd64
5151
- ${{ if or(eq(parameters.jobParameters.isExtraPlatforms, true), eq(parameters.jobParameters.includeAllPlatforms, true)) }}:
52-
- (Alpine.318.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:alpine-3.18-helix-amd64
52+
- (Alpine.321.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:alpine-3.21-helix-amd64
5353

5454
# Linux musl arm64
5555
- ${{ if and(eq(parameters.platform, 'linux_musl_arm64'), or(eq(parameters.jobParameters.isExtraPlatforms, true), eq(parameters.jobParameters.includeAllPlatforms, true))) }}:
56-
- (Alpine.318.Arm64.Open)[email protected]/dotnet-buildtools/prereqs:alpine-3.18-helix-arm64v8
57-
- (Alpine.319.Arm64.Open)[email protected]/dotnet-buildtools/prereqs:alpine-3.19-helix-arm64v8
56+
- (Alpine.320.Arm64.Open)[email protected]/dotnet-buildtools/prereqs:alpine-3.20-helix-arm64v8
5857

5958
# Linux x64
6059
- ${{ if eq(parameters.platform, 'linux_x64') }}:
6160
- ${{ if and(eq(parameters.jobParameters.interpreter, ''), ne(parameters.jobParameters.isSingleFile, true)) }}:
6261
- ${{ if and(eq(parameters.jobParameters.testScope, 'outerloop'), eq(parameters.jobParameters.runtimeFlavor, 'mono')) }}:
6362
- SLES.15.Amd64.Open
6463
- (Centos.9.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:centos-stream9-helix
65-
- (Fedora.38.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:fedora-38-helix
64+
- (Fedora.41.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:fedora-41-helix
6665
- (Ubuntu.2204.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:ubuntu-22.04-helix-amd64
6766
- (Debian.12.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:debian-12-helix-amd64
6867
- ${{ if or(ne(parameters.jobParameters.testScope, 'outerloop'), ne(parameters.jobParameters.runtimeFlavor, 'mono')) }}:
6968
- ${{ if or(eq(parameters.jobParameters.isExtraPlatforms, true), eq(parameters.jobParameters.includeAllPlatforms, true)) }}:
7069
- SLES.15.Amd64.Open
71-
- (Fedora.38.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:fedora-38-helix
70+
- (Fedora.41.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:fedora-41-helix
7271
- Ubuntu.2204.Amd64.Open
7372
- (Debian.12.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:debian-12-helix-amd64
7473
- (Mariner.2.0.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:cbl-mariner-2.0-helix-amd64

src/coreclr/debug/ee/controller.cpp

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@ const char *GetTType( TraceType tt);
2525

2626
#define IsSingleStep(exception) ((exception) == EXCEPTION_SINGLE_STEP)
2727

28+
typedef enum __TailCallFunctionType {
29+
TailCallThatReturns = 1,
30+
StoreTailCallArgs = 2
31+
} TailCallFunctionType;
32+
2833
// -------------------------------------------------------------------------
2934
// DebuggerController routines
3035
// -------------------------------------------------------------------------
@@ -5636,10 +5641,10 @@ static bool IsTailCallJitHelper(const BYTE * ip)
56365641
// control flow will be a little peculiar in that the function will return
56375642
// immediately, so we need special handling in the debugger for it. This
56385643
// function detects that case to be used for those scenarios.
5639-
static bool IsTailCallThatReturns(const BYTE * ip, ControllerStackInfo* info)
5644+
static bool IsTailCall(const BYTE * ip, ControllerStackInfo* info, TailCallFunctionType type)
56405645
{
56415646
MethodDesc* pTailCallDispatcherMD = TailCallHelp::GetTailCallDispatcherMD();
5642-
if (pTailCallDispatcherMD == NULL)
5647+
if (pTailCallDispatcherMD == NULL && type == TailCallFunctionType::TailCallThatReturns)
56435648
{
56445649
return false;
56455650
}
@@ -5655,6 +5660,11 @@ static bool IsTailCallThatReturns(const BYTE * ip, ControllerStackInfo* info)
56555660
? trace.GetMethodDesc()
56565661
: g_pEEInterface->GetNativeCodeMethodDesc(trace.GetAddress());
56575662

5663+
if (type == TailCallFunctionType::StoreTailCallArgs)
5664+
{
5665+
return (pTargetMD && pTargetMD->IsDynamicMethod() && pTargetMD->AsDynamicMethodDesc()->GetILStubType() == DynamicMethodDesc::StubTailCallStoreArgs);
5666+
}
5667+
56585668
if (pTargetMD != pTailCallDispatcherMD)
56595669
{
56605670
return false;
@@ -5886,6 +5896,13 @@ bool DebuggerStepper::TrapStep(ControllerStackInfo *info, bool in)
58865896
fCallingIntoFunclet = IsAddrWithinMethodIncludingFunclet(ji, info->m_activeFrame.md, walker.GetNextIP()) &&
58875897
((CORDB_ADDRESS)(SIZE_T)walker.GetNextIP() != ji->m_addrOfCode);
58885898
#endif
5899+
// If we are stepping into a tail call that uses the StoreTailCallArgs
5900+
// we need to enable the method enter, otherwise it will behave like a resume
5901+
if (in && IsTailCall(walker.GetNextIP(), info, TailCallFunctionType::StoreTailCallArgs))
5902+
{
5903+
EnableMethodEnter();
5904+
return true;
5905+
}
58895906
// At this point, we know that the call/branch target is not
58905907
// in the current method. The possible cases is that this is
58915908
// a jump or a tailcall-via-helper. There are two separate
@@ -5897,7 +5914,7 @@ bool DebuggerStepper::TrapStep(ControllerStackInfo *info, bool in)
58975914
// is done by stepping out to the previous user function
58985915
// (non IL stub).
58995916
if ((fIsJump && !fCallingIntoFunclet) || IsTailCallJitHelper(walker.GetNextIP()) ||
5900-
IsTailCallThatReturns(walker.GetNextIP(), info))
5917+
IsTailCall(walker.GetNextIP(), info, TailCallFunctionType::TailCallThatReturns))
59015918
{
59025919
// A step-over becomes a step-out for a tail call.
59035920
if (!in)
@@ -6043,7 +6060,7 @@ bool DebuggerStepper::TrapStep(ControllerStackInfo *info, bool in)
60436060
return true;
60446061
}
60456062

6046-
if (IsTailCallJitHelper(walker.GetNextIP()) || IsTailCallThatReturns(walker.GetNextIP(), info))
6063+
if (IsTailCallJitHelper(walker.GetNextIP()) || IsTailCall(walker.GetNextIP(), info, TailCallFunctionType::TailCallThatReturns))
60476064
{
60486065
if (!in)
60496066
{

0 commit comments

Comments
 (0)