summaryrefslogtreecommitdiff
path: root/src/dlls
diff options
context:
space:
mode:
authorMike McLaughlin <mikem@microsoft.com>2016-06-03 14:15:43 -0700
committerMike McLaughlin <mikem@microsoft.com>2016-06-03 14:15:43 -0700
commit0a4675b32fee372e458852ba3ec703d3abd89831 (patch)
treef9a6b8b4fe08fdb486c81adbe06e9af4c5019b95 /src/dlls
parent924b56813d3b1c7cde0c7ea9ea9d8d86370581e3 (diff)
downloadcoreclr-0a4675b32fee372e458852ba3ec703d3abd89831.tar.gz
coreclr-0a4675b32fee372e458852ba3ec703d3abd89831.tar.bz2
coreclr-0a4675b32fee372e458852ba3ec703d3abd89831.zip
Limit exports on debugger modules. (#5442)
Remove obsolete ExecuteAssembly hosting API from coreclr. Needed to add palrt to dbi instead of trying to export from palrt. Didn't end up adding the --no-allow-shlib-undefined linker option because Centos and FreeBSD link with lots of undefined symbols from the C++ runtime libraries.
Diffstat (limited to 'src/dlls')
-rw-r--r--src/dlls/dbgshim/CMakeLists.txt32
-rw-r--r--src/dlls/dbgshim/dbgshim_unixexports.src16
-rw-r--r--src/dlls/mscordac/CMakeLists.txt42
-rw-r--r--src/dlls/mscordac/mscordac_unixexports.src174
-rw-r--r--src/dlls/mscordbi/CMakeLists.txt41
-rw-r--r--src/dlls/mscordbi/mscordbi_unixexports.src18
-rw-r--r--src/dlls/mscoree/coreclr/CMakeLists.txt2
-rw-r--r--src/dlls/mscoree/mscorwks_unixexports.src3
-rw-r--r--src/dlls/mscoree/unixinterface.cpp86
9 files changed, 296 insertions, 118 deletions
diff --git a/src/dlls/dbgshim/CMakeLists.txt b/src/dlls/dbgshim/CMakeLists.txt
index 5024642ca5..4e72ee219a 100644
--- a/src/dlls/dbgshim/CMakeLists.txt
+++ b/src/dlls/dbgshim/CMakeLists.txt
@@ -18,20 +18,38 @@ if(WIN32)
preprocess_def_file(${CMAKE_CURRENT_SOURCE_DIR}/dbgshim.ntdef ${CMAKE_CURRENT_BINARY_DIR}/dbgshim.def)
list(APPEND DBGSHIM_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/dbgshim.def)
+else(WIN32)
+ set(DEF_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/dbgshim_unixexports.src)
+ set(EXPORTS_FILE ${CMAKE_CURRENT_BINARY_DIR}/dbgshim.exports)
+ generate_exports_file(${DEF_SOURCES} ${EXPORTS_FILE})
endif(WIN32)
-if(CLR_CMAKE_PLATFORM_UNIX)
- add_compile_options(-fPIC)
-endif(CLR_CMAKE_PLATFORM_UNIX)
-
-if(CLR_CMAKE_PLATFORM_LINUX OR CLR_CMAKE_PLATFORM_NETBSD)
+if(CLR_CMAKE_PLATFORM_LINUX OR CLR_CMAKE_PLATFORM_FREEBSD OR CLR_CMAKE_PLATFORM_NETBSD)
# This option is necessary to ensure that the overloaded delete operator defined inside
# of the utilcode will be used instead of the standard library delete operator.
- set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Xlinker -Bsymbolic -Bsymbolic-functions")
-endif(CLR_CMAKE_PLATFORM_LINUX OR CLR_CMAKE_PLATFORM_NETBSD)
+ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Xlinker -Bsymbolic -Xlinker -Bsymbolic-functions")
+
+ # Add linker exports file option
+ set(EXPORTS_LINKER_OPTION -Wl,--version-script=${EXPORTS_FILE})
+endif(CLR_CMAKE_PLATFORM_LINUX OR CLR_CMAKE_PLATFORM_FREEBSD OR CLR_CMAKE_PLATFORM_NETBSD)
+
+if(CLR_CMAKE_PLATFORM_DARWIN)
+ # Add linker exports file option
+ set(EXPORTS_LINKER_OPTION -Wl,-exported_symbols_list,${EXPORTS_FILE})
+endif(CLR_CMAKE_PLATFORM_DARWIN)
add_library_clr(dbgshim SHARED ${DBGSHIM_SOURCES})
+if(CLR_CMAKE_PLATFORM_UNIX)
+ add_compile_options(-fPIC)
+
+ add_custom_target(dbgshim_exports DEPENDS ${EXPORTS_FILE})
+ add_dependencies(dbgshim dbgshim_exports)
+
+ set_property(TARGET dbgshim APPEND_STRING PROPERTY LINK_FLAGS ${EXPORTS_LINKER_OPTION})
+ set_property(TARGET dbgshim APPEND_STRING PROPERTY LINK_DEPENDS ${EXPORTS_FILE})
+endif(CLR_CMAKE_PLATFORM_UNIX)
+
set(DBGSHIM_LIBRARIES
debug-pal
debugshim
diff --git a/src/dlls/dbgshim/dbgshim_unixexports.src b/src/dlls/dbgshim/dbgshim_unixexports.src
new file mode 100644
index 0000000000..b1cc36bc2f
--- /dev/null
+++ b/src/dlls/dbgshim/dbgshim_unixexports.src
@@ -0,0 +1,16 @@
+; 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.
+
+CreateProcessForLaunch
+ResumeProcess
+CloseResumeHandle
+RegisterForRuntimeStartup
+UnregisterForRuntimeStartup
+GetStartupNotificationEvent
+EnumerateCLRs
+CloseCLREnumeration
+CreateVersionStringFromModule
+CreateDebuggingInterfaceFromVersion
+CreateDebuggingInterfaceFromVersionEx
+CLRCreateInstance
diff --git a/src/dlls/mscordac/CMakeLists.txt b/src/dlls/mscordac/CMakeLists.txt
index 8c2cec1b81..8ef0a54432 100644
--- a/src/dlls/mscordac/CMakeLists.txt
+++ b/src/dlls/mscordac/CMakeLists.txt
@@ -30,20 +30,40 @@ if(WIN32)
set(START_LIBRARY_GROUP)
set(END_LIBRARY_GROUP)
else(WIN32)
- if(CLR_CMAKE_PLATFORM_LINUX OR CLR_CMAKE_PLATFORM_NETBSD)
- # This option is necessary to ensure that the overloaded delete operator defined inside
- # of the utilcode will be used instead of the standard library delete operator.
- set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Xlinker -Bsymbolic -Bsymbolic-functions")
-
- # The following linked options can be inserted into the linker libraries list to
- # ensure proper resolving of circular references between a subset of the libraries.
- set(START_LIBRARY_GROUP -Wl,--start-group)
- set(END_LIBRARY_GROUP -Wl,--end-group)
- endif(CLR_CMAKE_PLATFORM_LINUX OR CLR_CMAKE_PLATFORM_NETBSD)
+ set(DEF_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/mscordac_unixexports.src)
+ set(EXPORTS_FILE ${CMAKE_CURRENT_BINARY_DIR}/mscordac.exports)
+ generate_exports_file(${DEF_SOURCES} ${EXPORTS_FILE})
endif(WIN32)
+if(CLR_CMAKE_PLATFORM_LINUX OR CLR_CMAKE_PLATFORM_FREEBSD OR CLR_CMAKE_PLATFORM_NETBSD)
+ # This option is necessary to ensure that the overloaded delete operator defined inside
+ # of the utilcode will be used instead of the standard library delete operator.
+ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Xlinker -Bsymbolic -Xlinker -Bsymbolic-functions")
+
+ # The following linked options can be inserted into the linker libraries list to
+ # ensure proper resolving of circular references between a subset of the libraries.
+ set(START_LIBRARY_GROUP -Wl,--start-group)
+ set(END_LIBRARY_GROUP -Wl,--end-group)
+
+ # Add linker exports file option
+ set(EXPORTS_LINKER_OPTION -Wl,--version-script=${EXPORTS_FILE})
+endif(CLR_CMAKE_PLATFORM_LINUX OR CLR_CMAKE_PLATFORM_FREEBSD OR CLR_CMAKE_PLATFORM_NETBSD)
+
+if(CLR_CMAKE_PLATFORM_DARWIN)
+ # Add linker exports file option
+ set(EXPORTS_LINKER_OPTION -Wl,-exported_symbols_list,${EXPORTS_FILE})
+endif(CLR_CMAKE_PLATFORM_DARWIN)
+
add_library_clr(mscordaccore SHARED ${CLR_DAC_SOURCES})
+if(CLR_CMAKE_PLATFORM_UNIX)
+ add_custom_target(mscordaccore_exports DEPENDS ${EXPORTS_FILE})
+ add_dependencies(mscordaccore mscordaccore_exports)
+
+ set_property(TARGET mscordaccore APPEND_STRING PROPERTY LINK_FLAGS ${EXPORTS_LINKER_OPTION})
+ set_property(TARGET mscordaccore APPEND_STRING PROPERTY LINK_DEPENDS ${EXPORTS_FILE})
+endif(CLR_CMAKE_PLATFORM_UNIX)
+
# IMPORTANT! Please do not rearrange the order of the libraries. The linker on Linux is
# order dependent and changing the order can result in undefined symbols in the shared
# library.
@@ -96,7 +116,7 @@ else(WIN32)
)
endif(WIN32)
-target_link_libraries(mscordaccore ${COREDAC_LIBRARIES})
+target_link_libraries(mscordaccore PRIVATE ${COREDAC_LIBRARIES})
# add the install targets
install_clr(mscordaccore) \ No newline at end of file
diff --git a/src/dlls/mscordac/mscordac_unixexports.src b/src/dlls/mscordac/mscordac_unixexports.src
new file mode 100644
index 0000000000..466a1bf1f5
--- /dev/null
+++ b/src/dlls/mscordac/mscordac_unixexports.src
@@ -0,0 +1,174 @@
+; 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.
+
+DacDbiInterfaceInstance
+CLRDataCreateInstance
+
+; PAL module registration
+DllMain
+PAL_RegisterModule
+PAL_UnregisterModule
+
+PAL_BindResources
+PAL_bsearch
+PAL_errno
+PAL_fflush
+PAL__flushall
+PAL_free
+PAL_fwprintf
+PAL_swprintf
+PAL_GetPALDirectoryW
+PAL_GetResourceString
+PAL_get_stdout
+PAL_get_stderr
+PAL_GetSymbolModuleBase
+PAL_GetTransportPipeName
+PAL_InitializeDLL
+PAL_IsDebuggerPresent
+PAL_iswspace
+PAL_memcpy
+PAL_malloc
+PAL_realloc
+PAL_printf
+PAL_qsort
+PAL_Reenter
+PAL_fprintf
+PAL__vsnprintf
+PAL__wcstoui64
+PAL_wcstoul
+PAL_iswprint
+PAL_wcslen
+PAL_wcsncmp
+PAL_wcsrchr
+PAL_wcscmp
+PAL_wcschr
+PAL_wcscspn
+PAL_wcscat
+PAL_wcsstr
+
+_wcsicmp
+_stricmp
+_snprintf
+_snwprintf
+_vsnwprintf
+_itow
+_i64tow
+memcpy_s
+
+CoCreateGuid
+CopyFileW
+CreateDirectoryW
+CreateFileMappingA
+CreateFileMappingW
+CreateFileA
+CreateFileW
+CreateMutexW
+CreateEventW
+CreateProcessW
+CreateSemaphoreExW
+CreateStreamOnHGlobal
+CreateThread
+CloseHandle
+DebugBreak
+DeleteCriticalSection
+DeleteFileW
+DuplicateHandle
+EnterCriticalSection
+FindClose
+FindFirstFileW
+FindNextFileW
+FlushFileBuffers
+FlushInstructionCache
+FormatMessageW
+FreeLibrary
+FileTimeToSystemTime
+GetACP
+GetCPInfo
+GetCurrentDirectoryW
+GetCurrentProcess
+GetCurrentProcessId
+GetCurrentThreadId
+GetEnvironmentVariableA
+GetEnvironmentVariableW
+GetFileAttributesExW
+GetFileAttributesW
+GetFileSize
+GetFullPathNameW
+GetLastError
+GetLongPathNameW
+GetModuleFileNameW
+GetProcAddress
+GetProcessHeap
+GetShortPathNameW
+GetStdHandle
+GetSystemInfo
+GetSystemTime
+GetSystemTimeAsFileTime
+GetTempFileNameW
+GetTempPathW
+HeapAlloc
+HeapFree
+HeapSetInformation
+IIDFromString
+IID_IClassFactory
+IID_ISequentialStream
+IID_IStream
+IID_IUnknown
+InitializeCriticalSection
+IsDBCSLeadByte
+LeaveCriticalSection
+LoadLibraryA
+LoadLibraryW
+LoadLibraryExW
+LocalAlloc
+LocalReAlloc
+LocalFree
+MapViewOfFile
+MoveFileExW
+MultiByteToWideChar
+OpenProcess
+OutputDebugStringW
+OpenEventW
+OutputDebugStringA
+QueryPerformanceCounter
+QueryPerformanceFrequency
+RaiseException
+ReadFile
+ReleaseMutex
+ReleaseSemaphore
+RemoveDirectoryW
+ResetEvent
+ResumeThread
+SearchPathW
+SetEvent
+SetFileAttributesW
+SetFilePointer
+SetLastError
+SetErrorMode
+Sleep
+SleepEx
+SwitchToThread
+TerminateProcess
+TlsAlloc
+TlsFree
+TlsGetValue
+TlsSetValue
+VirtualAlloc
+VirtualFree
+VirtualProtect
+VirtualQuery
+UnmapViewOfFile
+WaitForMultipleObjectsEx
+WaitForSingleObject
+WaitForSingleObjectEx
+WideCharToMultiByte
+WriteFile
+YieldProcessor
+
+nativeStringResourceTable_mscorrc_debug
+_ZN25NativeExceptionHolderBase4PushEv
+_ZN25NativeExceptionHolderBaseC2Ev
+_ZN25NativeExceptionHolderBaseD2Ev
+_ZN28CatchHardwareExceptionHolderC1Ev
+_ZN28CatchHardwareExceptionHolderD1Ev \ No newline at end of file
diff --git a/src/dlls/mscordbi/CMakeLists.txt b/src/dlls/mscordbi/CMakeLists.txt
index 28b006b58c..5f5ad5139e 100644
--- a/src/dlls/mscordbi/CMakeLists.txt
+++ b/src/dlls/mscordbi/CMakeLists.txt
@@ -26,16 +26,41 @@ if(WIN32)
set(DEF_SOURCES
mscordbi.src
)
+
convert_to_absolute_path(DEF_SOURCES ${DEF_SOURCES})
preprocess_def_file(${DEF_SOURCES} ${CMAKE_CURRENT_BINARY_DIR}/mscordbi.def)
list(APPEND MSCORDBI_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/mscordbi.def)
+else(WIN32)
+ set(DEF_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/mscordbi_unixexports.src)
+ set(EXPORTS_FILE ${CMAKE_CURRENT_BINARY_DIR}/mscordbi.exports)
+ generate_exports_file(${DEF_SOURCES} ${EXPORTS_FILE})
endif(WIN32)
-add_library_clr(mscordbi SHARED
- ${MSCORDBI_SOURCES}
-)
+if(CLR_CMAKE_PLATFORM_LINUX OR CLR_CMAKE_PLATFORM_FREEBSD OR CLR_CMAKE_PLATFORM_NETBSD)
+ # This option is necessary to ensure that the overloaded new/delete operators defined inside
+ # of the utilcode will be used instead of the standard library delete operator.
+ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Xlinker -Bsymbolic -Xlinker -Bsymbolic-functions")
+
+ # Add linker exports file option
+ set(EXPORTS_LINKER_OPTION -Wl,--version-script=${EXPORTS_FILE})
+endif(CLR_CMAKE_PLATFORM_LINUX OR CLR_CMAKE_PLATFORM_FREEBSD OR CLR_CMAKE_PLATFORM_NETBSD)
+
+if(CLR_CMAKE_PLATFORM_DARWIN)
+ # Add linker exports file option
+ set(EXPORTS_LINKER_OPTION -Wl,-exported_symbols_list,${EXPORTS_FILE})
+endif(CLR_CMAKE_PLATFORM_DARWIN)
+
+add_library_clr(mscordbi SHARED ${MSCORDBI_SOURCES})
+
+if(CLR_CMAKE_PLATFORM_UNIX)
+ add_custom_target(mscordbi_exports DEPENDS ${EXPORTS_FILE})
+ add_dependencies(mscordbi mscordbi_exports)
+
+ set_property(TARGET mscordbi APPEND_STRING PROPERTY LINK_FLAGS ${EXPORTS_LINKER_OPTION})
+ set_property(TARGET mscordbi APPEND_STRING PROPERTY LINK_DEPENDS ${EXPORTS_FILE})
+endif(CLR_CMAKE_PLATFORM_UNIX)
set(COREDBI_LIBRARIES
debug-pal
@@ -69,24 +94,20 @@ if(WIN32)
elseif(CLR_CMAKE_PLATFORM_UNIX)
- if(CLR_CMAKE_PLATFORM_LINUX OR CLR_CMAKE_PLATFORM_NETBSD)
- # This option is necessary to ensure that the overloaded new/delete operators defined inside
- # of the utilcode will be used instead of the standard library delete operator.
- set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Xlinker -Bsymbolic -Bsymbolic-functions")
- endif(CLR_CMAKE_PLATFORM_LINUX OR CLR_CMAKE_PLATFORM_NETBSD)
-
list(APPEND COREDBI_LIBRARIES
mdhotdata_full
+ palrt
# share the PAL in the dac module
mscordaccore
)
+ add_dependencies(mscordbi mscordaccore)
+
# 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.
target_link_libraries(mscordbi ${COREDBI_LIBRARIES} ${COREDBI_LIBRARIES})
- add_dependencies(mscordbi mscordaccore)
endif(WIN32)
# add the install targets
diff --git a/src/dlls/mscordbi/mscordbi_unixexports.src b/src/dlls/mscordbi/mscordbi_unixexports.src
new file mode 100644
index 0000000000..b4704aef63
--- /dev/null
+++ b/src/dlls/mscordbi/mscordbi_unixexports.src
@@ -0,0 +1,18 @@
+; 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.
+
+; COM-instantiation
+DllGetClassObjectInternal
+DllGetClassObject
+
+; CoreClr API
+CoreCLRCreateCordbObject
+
+; Out-of-proc creation path from the shim - ICLRDebugging
+OpenVirtualProcessImpl
+
+; PAL module registration
+DllMain
+PAL_RegisterModule
+PAL_UnregisterModule \ No newline at end of file
diff --git a/src/dlls/mscoree/coreclr/CMakeLists.txt b/src/dlls/mscoree/coreclr/CMakeLists.txt
index 42a3bc6550..a51e841c78 100644
--- a/src/dlls/mscoree/coreclr/CMakeLists.txt
+++ b/src/dlls/mscoree/coreclr/CMakeLists.txt
@@ -24,7 +24,7 @@ else()
if(CMAKE_SYSTEM_NAME STREQUAL Linux OR CMAKE_SYSTEM_NAME STREQUAL FreeBSD OR CMAKE_SYSTEM_NAME STREQUAL NetBSD)
# This option is necessary to ensure that the overloaded delete operator defined inside
# of the utilcode will be used instead of the standard library delete operator.
- set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Xlinker -Bsymbolic -Bsymbolic-functions")
+ set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Xlinker -Bsymbolic -Xlinker -Bsymbolic-functions")
# The following linked options can be inserted into the linker libraries list to
# ensure proper resolving of circular references between a subset of the libraries.
diff --git a/src/dlls/mscoree/mscorwks_unixexports.src b/src/dlls/mscoree/mscorwks_unixexports.src
index 7120337177..9c151a942c 100644
--- a/src/dlls/mscoree/mscorwks_unixexports.src
+++ b/src/dlls/mscoree/mscorwks_unixexports.src
@@ -10,9 +10,6 @@ GetMetaDataInternalInterface
GetMetaDataInternalInterfaceFromPublic
GetMetaDataPublicInterfaceFromInternal
-; Obsolete Unix hosting API, to be removed
-ExecuteAssembly
-
; PAL module registration
PAL_RegisterModule
PAL_UnregisterModule
diff --git a/src/dlls/mscoree/unixinterface.cpp b/src/dlls/mscoree/unixinterface.cpp
index 42f2d80054..be345b3ca1 100644
--- a/src/dlls/mscoree/unixinterface.cpp
+++ b/src/dlls/mscoree/unixinterface.cpp
@@ -352,89 +352,3 @@ int coreclr_execute_assembly(
return hr;
}
-
-#ifdef PLATFORM_UNIX
-//
-// Execute a managed assembly with given arguments
-//
-// Parameters:
-// exePath - Absolute path of the executable that invoked the ExecuteAssembly
-// coreClrPath - Absolute path of the libcoreclr.so
-// appDomainFriendlyName - Friendly name of the app domain that will be created to execute the assembly
-// propertyCount - Number of properties (elements of the following two arguments)
-// propertyKeys - Keys of properties of the app domain
-// propertyValues - Values of properties of the app domain
-// argc - Number of arguments passed to the executed assembly
-// argv - Array of arguments passed to the executed assembly
-// managedAssemblyPath - Path of the managed assembly to execute (or NULL if using a custom entrypoint).
-// enntyPointAssemblyName - Name of the assembly which holds the custom entry point (or NULL to use managedAssemblyPath).
-// entryPointTypeName - Name of the type which holds the custom entry point (or NULL to use managedAssemblyPath).
-// entryPointMethodName - Name of the method which is the custom entry point (or NULL to use managedAssemblyPath).
-// exitCode - Exit code returned by the executed assembly
-//
-// Returns:
-// HRESULT indicating status of the operation. S_OK if the assembly was successfully executed
-//
-extern "C"
-HRESULT ExecuteAssembly(
- LPCSTR exePath,
- LPCSTR coreClrPath,
- LPCSTR appDomainFriendlyName,
- int propertyCount,
- LPCSTR* propertyKeys,
- LPCSTR* propertyValues,
- int argc,
- LPCSTR* argv,
- LPCSTR managedAssemblyPath,
- LPCSTR entryPointAssemblyName,
- LPCSTR entryPointTypeName,
- LPCSTR entryPointMethodName,
- DWORD* exitCode)
-{
- if (exitCode == NULL)
- {
- return HRESULT_FROM_WIN32(ERROR_INVALID_PARAMETER);
- }
- *exitCode = -1;
-
- ReleaseHolder<ICLRRuntimeHost2> host; //(reinterpret_cast<ICLRRuntimeHost2*>(hostHandle));
- DWORD domainId;
-
- HRESULT hr = coreclr_initialize(exePath, appDomainFriendlyName, propertyCount, propertyKeys, propertyValues, &host, &domainId);
- IfFailRet(hr);
-
- ConstWStringArrayHolder argvW;
- argvW.Set(StringArrayToUnicode(argc, argv), argc);
-
- if (entryPointAssemblyName == NULL || entryPointTypeName == NULL || entryPointMethodName == NULL)
- {
- ConstWStringHolder managedAssemblyPathW = StringToUnicode(managedAssemblyPath);
-
- hr = host->ExecuteAssembly(domainId, managedAssemblyPathW, argc, argvW, exitCode);
- IfFailRet(hr);
- }
- else
- {
- ConstWStringHolder entryPointAssemblyNameW = StringToUnicode(entryPointAssemblyName);
- ConstWStringHolder entryPointTypeNameW = StringToUnicode(entryPointTypeName);
- ConstWStringHolder entryPointMethodNameW = StringToUnicode(entryPointMethodName);
-
- HostMain pHostMain;
-
- hr = host->CreateDelegate(
- domainId,
- entryPointAssemblyNameW,
- entryPointTypeNameW,
- entryPointMethodNameW,
- (INT_PTR*)&pHostMain);
-
- IfFailRet(hr);
-
- *exitCode = pHostMain(argc, argvW);
- }
-
- hr = coreclr_shutdown(host, domainId);
-
- return hr;
-}
-#endif