86 lines
2.8 KiB
Diff
86 lines
2.8 KiB
Diff
diff -ur root-5.32.03.orig/core/unix/src/TUnixSystem.cxx root-5.32.03/core/unix/src/TUnixSystem.cxx
|
|
--- root-5.32.03.orig/core/unix/src/TUnixSystem.cxx 2012-05-09 12:59:38.000000000 +0200
|
|
+++ root-5.32.03/core/unix/src/TUnixSystem.cxx 2012-06-28 19:25:22.486639614 +0200
|
|
@@ -453,6 +453,9 @@
|
|
|
|
TString lib = _dyld_get_image_name(i++);
|
|
|
|
+ TRegexp sovers = "libCore\\.[0-9]+\\.*[0-9]*\\.so";
|
|
+ TRegexp dyvers = "libCore\\.[0-9]+\\.*[0-9]*\\.dylib";
|
|
+
|
|
#ifndef ROOTPREFIX
|
|
#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR
|
|
// first loaded is the app so set ROOTSYS to app bundle
|
|
@@ -467,7 +470,8 @@
|
|
}
|
|
}
|
|
#else
|
|
- if (lib.EndsWith("libCore.dylib") || lib.EndsWith("libCore.so")) {
|
|
+ if (lib.EndsWith("libCore.dylib") || lib.EndsWith("libCore.so") ||
|
|
+ lib.Index(sovers) != kNPOS || lib.Index(dyvers) != kNPOS) {
|
|
char respath[kMAXPATHLEN];
|
|
if (!realpath(lib, respath)) {
|
|
if (!gSystem->Getenv("ROOTSYS"))
|
|
@@ -489,9 +493,23 @@
|
|
|
|
// add all libs loaded before libSystem.B.dylib
|
|
if (!gotFirstSo && (lib.EndsWith(".dylib") || lib.EndsWith(".so"))) {
|
|
- if (linkedDylibs.Length())
|
|
- linkedDylibs += " ";
|
|
- linkedDylibs += lib;
|
|
+ sovers = "\\.[0-9]+\\.*[0-9]*\\.so";
|
|
+ Ssiz_t idx = lib.Index(sovers);
|
|
+ if (idx != kNPOS) {
|
|
+ lib.Remove(idx);
|
|
+ lib += ".so";
|
|
+ }
|
|
+ dyvers = "\\.[0-9]+\\.*[0-9]*\\.dylib";
|
|
+ idx = lib.Index(dyvers);
|
|
+ if (idx != kNPOS) {
|
|
+ lib.Remove(idx);
|
|
+ lib += ".dylib";
|
|
+ }
|
|
+ if (!gSystem->AccessPathName(lib, kReadPermission)) {
|
|
+ if (linkedDylibs.Length())
|
|
+ linkedDylibs += " ";
|
|
+ linkedDylibs += lib;
|
|
+ }
|
|
}
|
|
}
|
|
#endif
|
|
@@ -2849,12 +2867,15 @@
|
|
delete [] exe;
|
|
exe = longerexe;
|
|
}
|
|
+ TRegexp sovers = "\\.so\\.[0-9]+";
|
|
#else
|
|
const char *cLDD="ldd";
|
|
#if defined(R__AIX)
|
|
const char *cSOEXT=".a";
|
|
+ TRegexp sovers = "\\.a\\.[0-9]+";
|
|
#else
|
|
const char *cSOEXT=".so";
|
|
+ TRegexp sovers = "\\.so\\.[0-9]+";
|
|
#endif
|
|
#endif
|
|
FILE *p = OpenPipe(TString::Format("%s %s", cLDD, exe), "r");
|
|
@@ -2874,10 +2895,15 @@
|
|
}
|
|
if (solibName) {
|
|
TString solib = solibName->String();
|
|
- if (solib.EndsWith(cSOEXT)) {
|
|
- if (!linkedLibs.IsNull())
|
|
- linkedLibs += " ";
|
|
- linkedLibs += solib;
|
|
+ Ssiz_t idx = solib.Index(sovers);
|
|
+ if (solib.EndsWith(cSOEXT) || idx != kNPOS) {
|
|
+ if (idx != kNPOS)
|
|
+ solib.Remove(idx+3);
|
|
+ if (!AccessPathName(solib, kReadPermission)) {
|
|
+ if (!linkedLibs.IsNull())
|
|
+ linkedLibs += " ";
|
|
+ linkedLibs += solib;
|
|
+ }
|
|
}
|
|
}
|
|
delete tok;
|