Merge "Look into ld_preloads before current library" into lmp-dev
diff --git a/linker/linker.cpp b/linker/linker.cpp
index 2d8e07e..cf65705 100644
--- a/linker/linker.cpp
+++ b/linker/linker.cpp
@@ -495,6 +495,15 @@
*lsi = si;
goto done;
}
+
+ /* Next, look for it in the preloads list */
+ for (int i = 0; g_ld_preloads[i] != NULL; i++) {
+ s = soinfo_elf_lookup(g_ld_preloads[i], elf_hash, name);
+ if (s != NULL) {
+ *lsi = g_ld_preloads[i];
+ goto done;
+ }
+ }
} else {
/* Order of symbol lookup is controlled by DT_SYMBOLIC flag */
@@ -512,6 +521,15 @@
*lsi = somain;
goto done;
}
+
+ /* Next, look for it in the preloads list */
+ for (int i = 0; g_ld_preloads[i] != NULL; i++) {
+ s = soinfo_elf_lookup(g_ld_preloads[i], elf_hash, name);
+ if (s != NULL) {
+ *lsi = g_ld_preloads[i];
+ goto done;
+ }
+ }
}
/* Look for symbols in the local scope (the object who is
@@ -543,16 +561,16 @@
*lsi = somain;
goto done;
}
- }
- }
- }
- /* Next, look for it in the preloads list */
- for (int i = 0; g_ld_preloads[i] != NULL; i++) {
- s = soinfo_elf_lookup(g_ld_preloads[i], elf_hash, name);
- if (s != NULL) {
- *lsi = g_ld_preloads[i];
- goto done;
+ /* Next, look for it in the preloads list */
+ for (int i = 0; g_ld_preloads[i] != NULL; i++) {
+ s = soinfo_elf_lookup(g_ld_preloads[i], elf_hash, name);
+ if (s != NULL) {
+ *lsi = g_ld_preloads[i];
+ goto done;
+ }
+ }
+ }
}
}