diff options
author | William Godbe <wigodbe@microsoft.com> | 2018-01-25 10:23:01 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-25 10:23:01 -0800 |
commit | e5a17bac5f0fd0b0137be7c8cf23391adc59958f (patch) | |
tree | a7ec970bb54af2ffdbe407e07e6369333781507d /src/pal | |
parent | 8dfd31f3297203578a9915676805cfaeb64da813 (diff) | |
download | coreclr-e5a17bac5f0fd0b0137be7c8cf23391adc59958f.tar.gz coreclr-e5a17bac5f0fd0b0137be7c8cf23391adc59958f.tar.bz2 coreclr-e5a17bac5f0fd0b0137be7c8cf23391adc59958f.zip |
Add GetLoadLibrary function for PAL & use in TrackErrorCode (#15831)
* Add GetLoadLibrary function for PAL & use in TrackErrorCode
* Finish changes to dllimport.cpp
* Fix unix build errors
* fix windows issues
* Address feedback
* Fix return type
* Address feedback
* Fix return type
* Fix usage of LPCWSTR
* Use shared library string
* Append message strings
* Fix append
* Append newline
* Fix spelling
* Modify error messages
* Resolve conflicts
* Add mac message & stop appending all exceptions
* Fix another error message
* Fix NoName Error
* Add newline to .h file
Diffstat (limited to 'src/pal')
-rw-r--r-- | src/pal/inc/pal.h | 5 | ||||
-rw-r--r-- | src/pal/src/loader/module.cpp | 38 | ||||
-rw-r--r-- | src/pal/src/loader/modulename.cpp | 2 |
3 files changed, 38 insertions, 7 deletions
diff --git a/src/pal/inc/pal.h b/src/pal/inc/pal.h index aff205d7dd..75a68956a1 100644 --- a/src/pal/inc/pal.h +++ b/src/pal/inc/pal.h @@ -2719,6 +2719,11 @@ LPCVOID PAL_GetSymbolModuleBase(void *symbol); PALIMPORT +LPCSTR +PALAPI +PAL_GetLoadLibraryError(); + +PALIMPORT LPVOID PALAPI PAL_VirtualReserveFromExecutableMemoryAllocatorWithinRange( diff --git a/src/pal/src/loader/module.cpp b/src/pal/src/loader/module.cpp index 9e8f2ac302..f73adfa56a 100644 --- a/src/pal/src/loader/module.cpp +++ b/src/pal/src/loader/module.cpp @@ -367,8 +367,8 @@ GetProcAddress( } else { - TRACE("Symbol %s not found in module %p (named %S), dlerror message is \"%s\"\n", - lpProcName, module, MODNAME(module), dlerror()); + TRACE("Symbol %s not found in module %p (named %S)\n", + lpProcName, module, MODNAME(module)); SetLastError(ERROR_PROC_NOT_FOUND); } done: @@ -840,6 +840,33 @@ PAL_GetSymbolModuleBase(void *symbol) return retval; } +/*++ + PAL_GetLoadLibraryError + + Wrapper for dlerror() to be used by PAL functions + +Return value: + +A LPCSTR containing the output of dlerror() + +--*/ +PALIMPORT +LPCSTR +PALAPI +PAL_GetLoadLibraryError() +{ + + PERF_ENTRY(PAL_GetLoadLibraryError); + ENTRY("PAL_GetLoadLibraryError"); + + LPCSTR last_error = dlerror(); + + LOGEXIT("PAL_GetLoadLibraryError returns %p\n", last_error); + PERF_EXIT(PAL_GetLoadLibraryError); + return last_error; +} + + /* Internal PAL functions *****************************************************/ /*++ @@ -870,7 +897,7 @@ BOOL LOADInitializeModules() exe_module.dl_handle = dlopen(nullptr, RTLD_LAZY); if (exe_module.dl_handle == nullptr) { - ERROR("Executable module will be broken : dlopen(nullptr) failed dlerror message is \"%s\" \n", dlerror()); + ERROR("Executable module will be broken : dlopen(nullptr) failed\n"); return FALSE; } exe_module.lib_name = nullptr; @@ -1107,7 +1134,7 @@ static BOOL LOADFreeLibrary(MODSTRUCT *module, BOOL fCallDllMain) if (module->dl_handle && 0 != dlclose(module->dl_handle)) { /* report dlclose() failure, but proceed anyway. */ - WARN("dlclose() call failed! error message is \"%s\"\n", dlerror()); + WARN("dlclose() call failed!\n"); } /* release all memory */ @@ -1376,7 +1403,6 @@ static void *LOADLoadLibraryDirect(LPCSTR libraryNameOrPath) void *dl_handle = dlopen(libraryNameOrPath, RTLD_LAZY); if (dl_handle == nullptr) { - WARN("dlopen() failed; dlerror says '%s'\n", dlerror()); SetLastError(ERROR_MOD_NOT_FOUND); } else @@ -1696,7 +1722,7 @@ MODSTRUCT *LOADGetPalLibrary() Dl_info info; if (dladdr((PVOID)&LOADGetPalLibrary, &info) == 0) { - ERROR("LOADGetPalLibrary: dladdr() failed. dlerror message is \"%s\"\n", dlerror()); + ERROR("LOADGetPalLibrary: dladdr() failed.\n"); goto exit; } // Stash a copy of the CoreCLR installation path in a global variable. diff --git a/src/pal/src/loader/modulename.cpp b/src/pal/src/loader/modulename.cpp index 87c1b026c2..e6a371f582 100644 --- a/src/pal/src/loader/modulename.cpp +++ b/src/pal/src/loader/modulename.cpp @@ -60,7 +60,7 @@ const char *PAL_dladdr(LPVOID ProcAddress) Dl_info dl_info; if (!dladdr(ProcAddress, &dl_info)) { - WARN("dladdr() call failed! dlerror says '%s'\n", dlerror()); + WARN("dladdr() call failed!\n"); /* If we get an error, return NULL */ return (NULL); } |