Changeset 2496 in Sophya
- Timestamp:
- Feb 3, 2004, 12:05:44 PM (22 years ago)
- Location:
- trunk/SophyaLib/SysTools
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/SysTools/cxxcmplnk.cc
r2443 r2496 101 101 linkCmd = compCmd; 102 102 #else 103 linkCmd = "c c -bundle -flat_namespace -undefined suppress";104 linkOptions = "- L/usr/lib/gcc/darwin/default -lstdc++ -lcc_dynamic -lpthread";103 linkCmd = "c++ -bundle "; 104 linkOptions = "-lSystem -lm"; 105 105 #endif 106 106 -
trunk/SophyaLib/SysTools/pdlmgr.cc
r2322 r2496 172 172 cmd = "ld -b -o " + fnameso + " " + fnameobj + " -lm -lc"; 173 173 #elif defined(Darwin) 174 cmd = "cc -bundle -flat_namespace -undefined suppress -o " + fnameso + " " + fnameobj + " -lm -lcc_dynamic -lSystem "; 174 // cmd = "cc -bundle -flat_namespace -undefined suppress -o " + fnameso + " " + fnameobj + " -lm -lcc_dynamic -lSystem "; 175 cmd = "cc -bundle -o " + fnameso + " " + fnameobj + " -lSystem -lm"; 175 176 #else 176 177 cmd = "ld -o " + fnameso + " " + fnameobj + " -lm -lc"; … … 195 196 PDynLinkMgr::PDynLinkMgr(string& soname, bool cp) 196 197 { 197 #ifndef Darwin 198 dlhandle = NULL; 199 #endif 198 dylok = false; 200 199 soName = ""; 201 200 … … 230 229 soName = fnameso; 231 230 231 string sdylerr; 232 232 #if defined(HPUX) 233 dlhandle = NULL;234 233 cerr << "PDynLinkMgr::PDynLinkMgr() Not yet available on HP-UX " << endl; 235 234 return; 236 #else 235 #elif defined(Darwin) 236 NSObjectFileImageReturnCode nsrc = NSCreateObjectFileImageFromFile(fnameso.c_str(), &nsobjfile); 237 if (nsrc == NSObjectFileImageSuccess) { 238 nsmod = NSLinkModule(nsobjfile, fnameso.c_str(), 239 NSLINKMODULE_OPTION_BINDNOW | NSLINKMODULE_OPTION_PRIVATE | 240 NSLINKMODULE_OPTION_RETURN_ON_ERROR); 241 // The second argument of NSLinkModule is the module name 242 // We might associate later a name for the module in the PDynLinkMgr object 243 if (nsmod != NULL) dylok = true; 244 else cerr << "PDynLinkMgr::PDynLinkMgr()/ Error from NSLinkModule ... " << endl; 245 } 246 else { 247 cerr << "PDynLinkMgr::PDynLinkMgr()/ Error from NSCreateObjectFileImageFromFile ... " << endl; 248 if (nsrc == NSObjectFileImageFailure) cerr << " ErrCode= NSObjectFileImageFailure " << endl; 249 else if (nsrc == NSObjectFileImageInappropriateFile) cerr << " ErrCode= NSObjectFileImageInappropriateFile" << endl; 250 else if (nsrc == NSObjectFileImageArch ) cerr << " ErrCode= NSObjectFileImageArch" << endl; 251 else if (nsrc == NSObjectFileImageFormat) cerr << " ErrCode= NSObjectFileImageFormat" << endl; 252 else if (nsrc == NSObjectFileImageAccess) cerr << " ErrCode= NSObjectFileImageAccess" << endl; 253 } 254 #else 255 dlhandle = NULL; 237 256 dlhandle = dlopen(fnameso.c_str(), RTLD_NOW); 238 if (dlhandle == NULL) { 257 if (dlhandle != NULL) dylok = true; 258 else { 259 sdylerr = "Loader Error (dlerror()):"; 260 sdylerr += dlerror(); 261 #endif 262 263 if (!dylok) { 239 264 cerr << "PDynLinkMgr::PDynLinkMgr(): Error opening SO " << fnameso 240 265 << " (" << soname << ")" << endl; 241 string sn = dlerror(); 242 cerr << "Loader Error (dlerror()) :" << sn << endl; 266 if (sdylerr.length() > 0) cerr << sdylerr; 243 267 return; 244 268 } 245 #endif246 269 } 247 270 … … 253 276 #if defined(HPUX) 254 277 cerr << "PDynLinkMgr::~PDynLinkMgr() Not yet available on HP-UX " << endl; 255 return; 256 #else 257 if (dlhandle) dlclose(dlhandle); dlhandle = NULL; 278 // return; 279 #elif defined(Darwin) 280 if (dylok) { 281 if (nsmod != NULL) NSUnLinkModule(nsmod, NSUNLINKMODULE_OPTION_NONE); 282 NSDestroyObjectFileImage(nsobjfile); 283 } 284 #else 285 if (dylok) { 286 if (dlhandle) dlclose(dlhandle); dlhandle = NULL; 287 } 288 #endif 258 289 if (copy) { 259 290 string cmd = "rm -f " + soName; 260 291 system(cmd.c_str()); 261 292 } 262 #endif263 293 } 264 294 … … 269 299 { 270 300 DlFunction f = NULL; 301 if (!dylok) { 302 cerr << "PDynLinkMgr::GetFunction() Error:sharedobjet/dynamic library not open -> f=NULL" << endl; 303 return f; 304 } 271 305 #if defined(HPUX) 272 306 cerr << "PDynLinkMgr::GetFunction() Not yet available on HP-UX " << endl; 273 307 return f; 274 #e lse308 #endif 275 309 #if defined(Darwin) 276 310 string funame = "_" + funcname; 311 NSSymbol nsf = NSLookupSymbolInModule(nsmod, funame.c_str()); 312 f = (DlFunction)NSAddressOfSymbol(nsf); 277 313 #else 278 314 string const & funame = funcname; 279 #endif280 315 if (dlhandle != NULL) 281 316 f = (DlFunction)dlsym(dlhandle, funame.c_str()); 317 #endif 318 282 319 if (f == NULL) cerr << "PDynLinkMgr::GetFunction(): Error linking " << funcname << endl; 283 320 return(f); 284 #endif 285 } 286 287 321 } 322 323 -
trunk/SophyaLib/SysTools/pdlmgr.h
r1900 r2496 13 13 #include <dl.h> 14 14 #elif defined(Darwin) 15 #include < /sw/include/dlfcn.h>15 #include <mach-o/dyld.h> 16 16 #else 17 17 #include <dlfcn.h> … … 35 35 36 36 virtual DlFunction GetFunction(string const & funcname); 37 inline DlFunction GetFunction(const char * funcname) 38 { string fname = funcname; return GetFunction(fname); } 39 40 inline string GetName() const { return soName; } 37 41 38 42 protected : … … 43 47 #if defined(HPUX) 44 48 shl_t dlhandle; 49 #elif defined(Darwin) 50 NSObjectFileImage nsobjfile; 51 NSModule nsmod; 45 52 #else 46 53 void * dlhandle; 47 54 #endif 55 bool dylok; 48 56 string soName; 49 57 bool copy; -
trunk/SophyaLib/SysTools/zthread.h
r2488 r2496 98 98 { 99 99 if (_mtx) { 100 _mtx->unlock();101 100 if (_sigbr == 1) _mtx->signal(); 102 101 else if (_sigbr == 2) _mtx->broadcast(); 102 _mtx->unlock(); 103 103 } 104 104 }
Note:
See TracChangeset
for help on using the changeset viewer.