From 3857ce6cbdd9f4507612b38e8fec33ef2e3edb20 Mon Sep 17 00:00:00 2001 From: Elinor Fung <47805090+elinor-fung@users.noreply.github.com> Date: Mon, 11 Nov 2019 19:55:30 -0800 Subject: [PATCH] Add tracing for Resolving/AssemblyResolve event handler invocation (dotnet/coreclr#27788) Commit migrated from https://github.com/dotnet/coreclr/commit/ba0ab50cccb1e04f4e209cb426fcf05952c4fad0 --- .../Runtime/Loader/AssemblyLoadContext.CoreCLR.cs | 6 + src/coreclr/src/vm/ClrEtwAll.man | 53 ++++ src/coreclr/src/vm/assemblynative.cpp | 24 ++ src/coreclr/src/vm/assemblynative.hpp | 2 + src/coreclr/src/vm/ecalllist.h | 2 + .../Loader/binding/tracing/AssemblyToLoad.csproj | 2 + .../Loader/binding/tracing/BinderEventListener.cs | 166 ++++++++-- .../tracing/BinderTracingTest.EventHandlers.cs | 334 +++++++++++++++++++++ .../Loader/binding/tracing/BinderTracingTest.cs | 82 ++++- .../binding/tracing/BinderTracingTest.csproj | 24 ++ .../System/Runtime/Loader/AssemblyLoadContext.cs | 42 ++- 11 files changed, 683 insertions(+), 54 deletions(-) create mode 100644 src/coreclr/tests/src/Loader/binding/tracing/BinderTracingTest.EventHandlers.cs diff --git a/src/coreclr/src/System.Private.CoreLib/src/System/Runtime/Loader/AssemblyLoadContext.CoreCLR.cs b/src/coreclr/src/System.Private.CoreLib/src/System/Runtime/Loader/AssemblyLoadContext.CoreCLR.cs index c50cdc7..0700ec3 100644 --- a/src/coreclr/src/System.Private.CoreLib/src/System/Runtime/Loader/AssemblyLoadContext.CoreCLR.cs +++ b/src/coreclr/src/System.Private.CoreLib/src/System/Runtime/Loader/AssemblyLoadContext.CoreCLR.cs @@ -35,6 +35,12 @@ namespace System.Runtime.Loader [MethodImpl(MethodImplOptions.InternalCall)] internal static extern bool IsTracingEnabled(); + [DllImport(RuntimeHelpers.QCall, CharSet = CharSet.Unicode)] + internal static extern bool TraceResolvingHandlerInvoked(string assemblyName, string handlerName, string? alcName, string? resultAssemblyName, string? resultAssemblyPath); + + [DllImport(RuntimeHelpers.QCall, CharSet = CharSet.Unicode)] + internal static extern bool TraceAssemblyResolveHandlerInvoked(string assemblyName, string handlerName, string? resultAssemblyName, string? resultAssemblyPath); + private Assembly InternalLoadFromPath(string? assemblyPath, string? nativeImagePath) { RuntimeAssembly? loadedAssembly = null; diff --git a/src/coreclr/src/vm/ClrEtwAll.man b/src/coreclr/src/vm/ClrEtwAll.man index 286575d..2ca30d1 100644 --- a/src/coreclr/src/vm/ClrEtwAll.man +++ b/src/coreclr/src/vm/ClrEtwAll.man @@ -394,6 +394,8 @@ value="32" eventGUID="{BCF2339E-B0A6-452D-966C-33AC9DD82573}" message="$(string.RuntimePublisher.AssemblyLoaderTaskMessage)"> + + @@ -1705,6 +1707,42 @@ + + + +