mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-21 02:59:15 +00:00
Stub out a Path::GetMainExecutable call to find the path to the
main executable of a program. This needs to be implemented on windows. llvm-svn: 47835
This commit is contained in:
parent
f818270d43
commit
5b84600196
@ -161,6 +161,10 @@ namespace sys {
|
||||
/// @returns The dynamic link library suffix for the current platform.
|
||||
/// @brief Return the dynamic link library suffix.
|
||||
static std::string GetDLLSuffix();
|
||||
|
||||
/// GetMainExecutable - Return the path to the main executable, given the
|
||||
/// value of argv[0] from program startup and the address of main itself.
|
||||
static Path GetMainExecutable(const char *argv0, void *MainAddr);
|
||||
|
||||
/// This is one of the very few ways in which a path can be constructed
|
||||
/// with a syntactically invalid name. The only *legal* invalid name is an
|
||||
|
@ -47,6 +47,10 @@
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if HAVE_DLFCN_H
|
||||
#include <dlfcn.h>
|
||||
#endif
|
||||
|
||||
// Put in a hack for Cygwin which falsely reports that the mkdtemp function
|
||||
// is available when it is not.
|
||||
#ifdef __CYGWIN__
|
||||
@ -244,6 +248,20 @@ Path::GetCurrentDirectory() {
|
||||
return Path(pathname);
|
||||
}
|
||||
|
||||
/// GetMainExecutable - Return the path to the main executable, given the
|
||||
/// value of argv[0] from program startup.
|
||||
Path Path::GetMainExecutable(const char *argv0, void *MainAddr) {
|
||||
// Use dladdr to get executable path if available.
|
||||
#ifdef HAVE_DLFCN_H
|
||||
Dl_info DLInfo;
|
||||
int err = dladdr(MainAddr, &DLInfo);
|
||||
if (err != 0)
|
||||
return Path(std::string(DLInfo.dli_fname));
|
||||
#endif
|
||||
return Path();
|
||||
}
|
||||
|
||||
|
||||
std::string
|
||||
Path::getBasename() const {
|
||||
// Find the last slash
|
||||
|
@ -214,6 +214,12 @@ Path::GetCurrentDirectory() {
|
||||
return Path(pathname);
|
||||
}
|
||||
|
||||
/// GetMainExecutable - Return the path to the main executable, given the
|
||||
/// value of argv[0] from program startup.
|
||||
Path Path::GetMainExecutable(const char *argv0, void *MainAddr) {
|
||||
return Path();
|
||||
}
|
||||
|
||||
|
||||
// FIXME: the above set of functions don't map to Windows very well.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user