about summary refs log tree commit diff stats
path: root/src/librarian/library.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/librarian/library.c')
-rwxr-xr-xsrc/librarian/library.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/librarian/library.c b/src/librarian/library.c
index 86638591..647d014c 100755
--- a/src/librarian/library.c
+++ b/src/librarian/library.c
@@ -704,6 +704,14 @@ static int getSymbolInSymbolMaps(library_t*lib, const char* name, int noweak, ui
             strcat(newname, name);
             symbol = dlsym(lib->priv.w.lib, newname);
         }
+        if(!symbol)
+            symbol = GetNativeSymbolUnversionned(lib->priv.w.lib, name);
+        if(!symbol && lib->priv.w.altprefix) {
+            char newname[200];
+            strcpy(newname, lib->priv.w.altprefix);
+            strcat(newname, name);
+            symbol = GetNativeSymbolUnversionned(lib->priv.w.lib, newname);
+        }
         if(!symbol) {
             printf_log(LOG_INFO, "Warning, function %s not found in lib %s\n", name, lib->name);
             return 0;
@@ -741,6 +749,14 @@ static int getSymbolInSymbolMaps(library_t*lib, const char* name, int noweak, ui
                 strcat(newname, name);
                 symbol = dlsym(lib->priv.w.lib, newname);
             }
+            if(!symbol)
+                symbol = GetNativeSymbolUnversionned(lib->priv.w.lib, name);
+            if(!symbol && lib->priv.w.altprefix) {
+                char newname[200];
+                strcpy(newname, lib->priv.w.altprefix);
+                strcat(newname, name);
+                symbol = GetNativeSymbolUnversionned(lib->priv.w.lib, newname);
+            }
             if(!symbol) {
                 printf_log(LOG_INFO, "Warning, function %s not found in lib %s\n", name, lib->name);
                 return 0;
@@ -759,6 +775,8 @@ static int getSymbolInSymbolMaps(library_t*lib, const char* name, int noweak, ui
             symbol = dlsym(lib->priv.w.lib, kh_value(lib->symbol2map, k).name);
             if(!symbol)
                 symbol = dlsym(RTLD_DEFAULT, kh_value(lib->symbol2map, k).name);    // search globaly maybe
+            if(!symbol)
+                symbol = GetNativeSymbolUnversionned(lib->priv.w.lib, kh_value(lib->symbol2map, k).name);
             if(!symbol) {
                 printf_log(LOG_INFO, "Warning, function %s not found in lib %s\n", kh_value(lib->symbol2map, k).name, lib->name);
                 return 0;