summaryrefslogtreecommitdiff
path: root/src/cppunit/ShlDynamicLibraryManager.cpp
diff options
context:
space:
mode:
authorBaptiste Lepilleur <gaiacrtn@free.fr>2003-05-07 19:07:17 +0000
committerBaptiste Lepilleur <gaiacrtn@free.fr>2003-05-07 19:07:17 +0000
commitad7d9b040b7a78e7ac14f7d3556b2eb5f09f5b81 (patch)
treedbfd72bd0f17fbf40d857aa14c121cf0a53f9aa8 /src/cppunit/ShlDynamicLibraryManager.cpp
parent31ca191eaeffb4288f01b78d64535c70a07473f2 (diff)
downloadcppunit-ad7d9b040b7a78e7ac14f7d3556b2eb5f09f5b81.tar.gz
Makefile.
Makefile.am * configure.in * config/ac_dll.m4 * examples/cppunittest/Makefile.am * examples/hierarchy/Makefile.am * examples/money/Makefile.am * examples/simple/Makefile.am * include/cppunit/config/SelectDllLoader.h * include/cppunit/plugin/TestPlugIn.h * include/cppunit/tools/Algorithm.h * src/DllPlugInTester/Makefile.am * src/cppunit/Makefile.am * src/cppunit/TestDecorator.cpp * src/cppunit/ShlDynamicLibraryManager.cpp * src/cppunit/UnixDynamicLibraryManager.cpp * src/cppunit/Win32DynamicLibraryManager.cpp: applied patch from Abdessattar Sassi <abdesassi@users.sourceforge.net> to add support for plug-in to hp-ux.
Diffstat (limited to 'src/cppunit/ShlDynamicLibraryManager.cpp')
-rw-r--r--src/cppunit/ShlDynamicLibraryManager.cpp52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/cppunit/ShlDynamicLibraryManager.cpp b/src/cppunit/ShlDynamicLibraryManager.cpp
new file mode 100644
index 0000000..a9849e9
--- /dev/null
+++ b/src/cppunit/ShlDynamicLibraryManager.cpp
@@ -0,0 +1,52 @@
+#include <cppunit/Portability.h>
+
+#if defined(CPPUNIT_HAVE_UNIX_SHL_LOADER)
+#include <cppunit/plugin/DynamicLibraryManager.h>
+
+#include <dl.h>
+#include <unistd.h>
+
+
+CPPUNIT_NS_BEGIN
+
+
+DynamicLibraryManager::LibraryHandle
+DynamicLibraryManager::doLoadLibrary( const std::string &libraryName )
+{
+ return ::shl_load(libraryName.c_str(), BIND_IMMEDIATE, 0L);
+ //return ::dlopen( libraryName.c_str(), RTLD_NOW ); // RTLD_LAZY ?
+}
+
+
+void
+DynamicLibraryManager::doReleaseLibrary()
+{
+ ::shl_unload( (shl_t)m_libraryHandle);
+ //::dlclose( m_libraryHandle);
+}
+
+
+DynamicLibraryManager::Symbol
+DynamicLibraryManager::doFindSymbol( const std::string &symbol )
+{
+ DynamicLibraryManager::Symbol L_symaddr = 0;
+ if ( ::shl_findsym ( (shl_t*)(&m_libraryHandle), symbol.c_str(), TYPE_UNDEFINED, &L_symaddr ) == 0 ) {
+ return L_symaddr;
+ } else {
+ return 0;
+ }
+ //return ::dlsym ( m_libraryHandle, symbol.c_str() );
+}
+
+
+std::string
+DynamicLibraryManager::getLastErrorDetail() const
+{
+ return "";
+}
+
+
+CPPUNIT_NS_END
+
+
+#endif // defined(CPPUNIT_HAVE_UNIX_SHL_LOADER)