summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/DynamicLibrary.cpp
diff options
context:
space:
mode:
authorBernard Normier <bernard@zeroc.com>2004-06-08 02:22:42 +0000
committerBernard Normier <bernard@zeroc.com>2004-06-08 02:22:42 +0000
commita60f1f651d60e48cc4f4a8e477c5b7813d24418d (patch)
treeab6fb426a1cad77c9ba865799e542fda62e8d4b1 /cpp/src/Ice/DynamicLibrary.cpp
parentRemoved substition ".cpp" -> ".cs". This is now done by slice2cs itself. (diff)
downloadice-a60f1f651d60e48cc4f4a8e477c5b7813d24418d.tar.bz2
ice-a60f1f651d60e48cc4f4a8e477c5b7813d24418d.tar.xz
ice-a60f1f651d60e48cc4f4a8e477c5b7813d24418d.zip
AIX port
Diffstat (limited to 'cpp/src/Ice/DynamicLibrary.cpp')
-rw-r--r--cpp/src/Ice/DynamicLibrary.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/cpp/src/Ice/DynamicLibrary.cpp b/cpp/src/Ice/DynamicLibrary.cpp
index 9b67ca50ce2..1624c53575e 100644
--- a/cpp/src/Ice/DynamicLibrary.cpp
+++ b/cpp/src/Ice/DynamicLibrary.cpp
@@ -104,6 +104,13 @@ IceInternal::DynamicLibrary::loadEntryPoint(const string& entryPoint, bool useIc
{
lib += ".sl";
}
+#elif defined(_AIX)
+ lib = "lib" + libName + ".a(lib" + libName + ".so";
+ if(!version.empty())
+ {
+ lib += "." + version;
+ }
+ lib += ")";
#else
lib = "lib" + libName + ".so";
if(!version.empty())
@@ -126,13 +133,20 @@ IceInternal::DynamicLibrary::load(const string& lib)
#ifdef _WIN32
_hnd = LoadLibrary(lib.c_str());
#else
- _hnd = dlopen(lib.c_str(), RTLD_NOW);
+
+ int flags = RTLD_NOW;
+#ifdef _AIX
+ flags |= RTLD_MEMBER;
+#endif
+
+ _hnd = dlopen(lib.c_str(), flags);
if(_hnd == 0)
{
//
// Remember the most recent error in _err.
//
const char* err = dlerror();
+
if(err)
{
_err = err;