diff options
author | Dimitry Andric <dimitry@andric.com> | 2017-05-14 18:35:38 +0000 |
---|---|---|
committer | Dimitry Andric <dimitry@andric.com> | 2017-05-14 18:35:38 +0000 |
commit | 4043373e840e6e635c27fa1d149653e574832e62 (patch) | |
tree | 002618d5a13663b6e159c8dc59ebb4b465fbbefa /llvm/unittests/Support/DynamicLibrary/DynamicLibraryTest.cpp | |
parent | ee97c5f0125e8f07ee53934bf607c5d518959cac (diff) | |
download | bcm5719-llvm-4043373e840e6e635c27fa1d149653e574832e62.tar.gz bcm5719-llvm-4043373e840e6e635c27fa1d149653e574832e62.zip |
Fix DynamicLibraryTest.cpp on FreeBSD and NetBSD
Summary:
After rL301562, on FreeBSD the DynamicLibrary unittests fail, because
the test uses getMainExecutable("DynamicLibraryTests", Ptr), and since
the path does not contain any slashes, retrieving the main executable
will not work.
Reimplement getMainExecutable() for FreeBSD and NetBSD using sysctl(3),
which is more reliable than fiddling with relative or absolute paths.
Also add retrieval of the original argv[] from the GoogleTest framework,
to use as a fallback for other OSes.
Reviewers: emaste, marsupial, hans, krytarowski
Reviewed By: krytarowski
Subscribers: krytarowski, llvm-commits
Differential Revision: https://reviews.llvm.org/D33171
llvm-svn: 303015
Diffstat (limited to 'llvm/unittests/Support/DynamicLibrary/DynamicLibraryTest.cpp')
-rw-r--r-- | llvm/unittests/Support/DynamicLibrary/DynamicLibraryTest.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/llvm/unittests/Support/DynamicLibrary/DynamicLibraryTest.cpp b/llvm/unittests/Support/DynamicLibrary/DynamicLibraryTest.cpp index d46eadc9a04..0674a91282a 100644 --- a/llvm/unittests/Support/DynamicLibrary/DynamicLibraryTest.cpp +++ b/llvm/unittests/Support/DynamicLibrary/DynamicLibraryTest.cpp @@ -23,8 +23,10 @@ using namespace llvm::sys; extern "C" PIPSQUEAK_EXPORT const char *TestA() { return "ProcessCall"; } std::string LibPath() { + const std::vector<testing::internal::string>& Argvs = testing::internal::GetArgvs(); + const char *Argv0 = Argvs.size() > 0 ? Argvs[0].c_str() : "DynamicLibraryTests"; void *Ptr = (void*)(intptr_t)TestA; - std::string Path = fs::getMainExecutable("DynamicLibraryTests", Ptr); + std::string Path = fs::getMainExecutable(Argv0, Ptr); llvm::SmallString<256> Buf(path::parent_path(Path)); path::append(Buf, "PipSqueak.so"); return Buf.str(); |