summaryrefslogtreecommitdiff
path: root/src/pal
diff options
context:
space:
mode:
authorWilliam Godbe <wigodbe@microsoft.com>2018-01-25 10:23:01 -0800
committerGitHub <noreply@github.com>2018-01-25 10:23:01 -0800
commite5a17bac5f0fd0b0137be7c8cf23391adc59958f (patch)
treea7ec970bb54af2ffdbe407e07e6369333781507d /src/pal
parent8dfd31f3297203578a9915676805cfaeb64da813 (diff)
downloadcoreclr-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.h5
-rw-r--r--src/pal/src/loader/module.cpp38
-rw-r--r--src/pal/src/loader/modulename.cpp2
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);
}