diff options
author | Swaroop Sridhar <Swaroop.Sridhar@microsoft.com> | 2019-01-12 22:25:25 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-01-12 22:25:25 -0800 |
commit | 8b7d300c164971f573d8186e78204597a679c7d8 (patch) | |
tree | 4bae0726ff3cb5b97c43ad127b8b41a117e2c06f /src/vm/mscorlib.h | |
parent | 908891ce9df8d94f28ec6a53a012d39d00c8e65d (diff) | |
download | coreclr-8b7d300c164971f573d8186e78204597a679c7d8.tar.gz coreclr-8b7d300c164971f573d8186e78204597a679c7d8.tar.bz2 coreclr-8b7d300c164971f573d8186e78204597a679c7d8.zip |
Add NativeLibrary Resolve Event (#21929)
This change adds the Native library resolving event, to be raised as the last attempt to resolve a native DLL in an AssemblyLoadContext.
With this change, the DllImport resolution sequence is as follows (stopping at any step with successful resolution):
* If the invoking-assembly is not in the default load context, call AssemblyLoadContext.LoadUnmanagedDll()
* Run the default load logic, try loading from:
* AppDomain cache
* NATIVE_DLL_SEARCH_DIRECTORIES
* Invoking-assembly directory, System32, etc. based on DllImportSearchPaths
* Raise the ResolvingUnmanagedDll event
API Review: https://github.com/dotnet/corefx/issues/32850
The ResolveEventTests triggered a pre-existing bug in the exception handling code (#21964).
Disabling the test on ARM64 Windows until the issue is fixed.
Diffstat (limited to 'src/vm/mscorlib.h')
-rw-r--r-- | src/vm/mscorlib.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/vm/mscorlib.h b/src/vm/mscorlib.h index 62205d39bc..a1341dd70f 100644 --- a/src/vm/mscorlib.h +++ b/src/vm/mscorlib.h @@ -864,6 +864,7 @@ DEFINE_METHOD(FIRSTCHANCE_EVENTARGS, CTOR, .ctor, DEFINE_CLASS(ASSEMBLYLOADCONTEXT, Loader, AssemblyLoadContext) DEFINE_METHOD(ASSEMBLYLOADCONTEXT, RESOLVE, Resolve, SM_IntPtr_AssemblyName_RetAssemblyBase) DEFINE_METHOD(ASSEMBLYLOADCONTEXT, RESOLVEUNMANAGEDDLL, ResolveUnmanagedDll, SM_Str_IntPtr_RetIntPtr) +DEFINE_METHOD(ASSEMBLYLOADCONTEXT, RESOLVEUNMANAGEDDLLUSINGEVENT, ResolveUnmanagedDllUsingEvent, SM_Str_AssemblyBase_IntPtr_RetIntPtr) DEFINE_METHOD(ASSEMBLYLOADCONTEXT, RESOLVEUSINGEVENT, ResolveUsingResolvingEvent, SM_IntPtr_AssemblyName_RetAssemblyBase) DEFINE_FIELD(ASSEMBLYLOADCONTEXT, ASSEMBLY_LOAD, AssemblyLoad) DEFINE_METHOD(ASSEMBLYLOADCONTEXT, ON_ASSEMBLY_LOAD, OnAssemblyLoad, SM_Assembly_RetVoid) |