@@ -1927,6 +1927,7 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
{
ElfW(Lib) *liblist, *liblistend;
struct link_map **r_list, **r_listend, *l;
+ const char *soname;
const char *strtab = (const void *) D_PTR (main_map, l_info[DT_STRTAB]);
assert (main_map->l_info[VALIDX (DT_GNU_LIBLISTSZ)] != NULL);
@@ -1961,7 +1962,14 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
break;
if (! _dl_name_match_p (strtab + liblist->l_name, l))
- break;
+ {
+ if (l->l_info[DT_SONAME] == NULL)
+ break;
+ soname = ((const char *) D_PTR (l, l_info[DT_STRTAB]) +
+ l->l_info[DT_SONAME]->d_un.d_val);
+ if (strcmp(strtab + liblist->l_name, soname) != 0)
+ break;
+ }
++liblist;
}