diff options
Diffstat (limited to 'test/API/driver/kwsys/testDynamicLoader.cxx')
-rw-r--r-- | test/API/driver/kwsys/testDynamicLoader.cxx | 133 |
1 files changed, 0 insertions, 133 deletions
diff --git a/test/API/driver/kwsys/testDynamicLoader.cxx b/test/API/driver/kwsys/testDynamicLoader.cxx deleted file mode 100644 index 2421ac0..0000000 --- a/test/API/driver/kwsys/testDynamicLoader.cxx +++ /dev/null @@ -1,133 +0,0 @@ -/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying - file Copyright.txt or https://cmake.org/licensing#kwsys for details. */ -#include "kwsysPrivate.h" - -#include KWSYS_HEADER(DynamicLoader.hxx) - -#if defined(__BEOS__) || defined(__HAIKU__) -# include <be/kernel/OS.h> /* disable_debugger() API. */ -#endif - -// Work-around CMake dependency scanning limitation. This must -// duplicate the above list of headers. -#if 0 -# include "DynamicLoader.hxx.in" -#endif - -#include <iostream> -#include <string> - -// Include with <> instead of "" to avoid getting any in-source copy -// left on disk. -#include <testSystemTools.h> - -static std::string GetLibName(const char* lname, const char* subdir = nullptr) -{ - // Construct proper name of lib - std::string slname; - slname = EXECUTABLE_OUTPUT_PATH; - if (subdir) { - slname += "/"; - slname += subdir; - } -#ifdef CMAKE_INTDIR - slname += "/"; - slname += CMAKE_INTDIR; -#endif - slname += "/"; - slname += kwsys::DynamicLoader::LibPrefix(); - slname += lname; - slname += kwsys::DynamicLoader::LibExtension(); - - return slname; -} - -/* libname = Library name (proper prefix, proper extension) - * System = symbol to lookup in libname - * r1: should OpenLibrary succeed ? - * r2: should GetSymbolAddress succeed ? - * r3: should CloseLibrary succeed ? - */ -static int TestDynamicLoader(const char* libname, const char* symbol, int r1, - int r2, int r3, int flags = 0) -{ - std::cerr << "Testing: " << libname << std::endl; - kwsys::DynamicLoader::LibraryHandle l = - kwsys::DynamicLoader::OpenLibrary(libname, flags); - // If result is incompatible with expectation just fails (xor): - if ((r1 && !l) || (!r1 && l)) { - std::cerr << "OpenLibrary: " << kwsys::DynamicLoader::LastError() - << std::endl; - return 1; - } - kwsys::DynamicLoader::SymbolPointer f = - kwsys::DynamicLoader::GetSymbolAddress(l, symbol); - if ((r2 && !f) || (!r2 && f)) { - std::cerr << "GetSymbolAddress: " << kwsys::DynamicLoader::LastError() - << std::endl; - return 1; - } -#ifndef __APPLE__ - int s = kwsys::DynamicLoader::CloseLibrary(l); - if ((r3 && !s) || (!r3 && s)) { - std::cerr << "CloseLibrary: " << kwsys::DynamicLoader::LastError() - << std::endl; - return 1; - } -#else - (void)r3; -#endif - return 0; -} - -int testDynamicLoader(int argc, char* argv[]) -{ -#if defined(_WIN32) - SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX); -#elif defined(__BEOS__) || defined(__HAIKU__) - disable_debugger(1); -#endif - int res = 0; - if (argc == 3) { - // User specify a libname and symbol to check. - res = TestDynamicLoader(argv[1], argv[2], 1, 1, 1); - return res; - } - -// dlopen() on Syllable before 11/22/2007 doesn't return 0 on error -#ifndef __SYLLABLE__ - // Make sure that inexistent lib is giving correct result - res += TestDynamicLoader("azerty_", "foo_bar", 0, 0, 0); - // Make sure that random binary file cannot be assimilated as dylib - res += TestDynamicLoader(TEST_SYSTEMTOOLS_SOURCE_DIR "/testSystemTools.bin", - "wp", 0, 0, 0); -#endif - -#ifdef __linux__ - // This one is actually fun to test, since dlopen is by default - // loaded...wonder why :) - res += TestDynamicLoader("foobar.lib", "dlopen", 0, 1, 0); - res += TestDynamicLoader("libdl.so", "dlopen", 1, 1, 1); - res += TestDynamicLoader("libdl.so", "TestDynamicLoader", 1, 0, 1); -#endif - // Now try on the generated library - std::string libname = GetLibName(KWSYS_NAMESPACE_STRING "TestDynload"); - res += TestDynamicLoader(libname.c_str(), "dummy", 1, 0, 1); - res += TestDynamicLoader(libname.c_str(), "TestDynamicLoaderSymbolPointer", - 1, 1, 1); - res += TestDynamicLoader(libname.c_str(), "_TestDynamicLoaderSymbolPointer", - 1, 0, 1); - res += TestDynamicLoader(libname.c_str(), "TestDynamicLoaderData", 1, 1, 1); - res += TestDynamicLoader(libname.c_str(), "_TestDynamicLoaderData", 1, 0, 1); - -#ifdef _WIN32 - libname = GetLibName(KWSYS_NAMESPACE_STRING "TestDynloadUse", "dynloaddir"); - res += TestDynamicLoader(libname.c_str(), "dummy", 0, 0, 0); - res += TestDynamicLoader(libname.c_str(), "TestLoad", 1, 1, 1, - kwsys::DynamicLoader::SearchBesideLibrary); - res += TestDynamicLoader(libname.c_str(), "_TestLoad", 1, 0, 1, - kwsys::DynamicLoader::SearchBesideLibrary); -#endif - - return res; -} |