aboutsummaryrefslogtreecommitdiff
path: root/elf/ldconfig.c
diff options
context:
space:
mode:
Diffstat (limited to 'elf/ldconfig.c')
-rw-r--r--elf/ldconfig.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/elf/ldconfig.c b/elf/ldconfig.c
index bbcf8f5c5c..28ed637a29 100644
--- a/elf/ldconfig.c
+++ b/elf/ldconfig.c
@@ -655,6 +655,7 @@ manual_link (char *library)
struct stat64 stat_buf;
int flag;
unsigned int osversion;
+ unsigned int isa_level;
/* Prepare arguments for create_links call. Split library name in
directory and filename first. Since path is allocated, we've got
@@ -721,7 +722,7 @@ manual_link (char *library)
}
if (process_file (real_library, library, libname, &flag, &osversion,
- &soname, 0, &stat_buf))
+ &isa_level, &soname, 0, &stat_buf))
{
error (0, 0, _("No link created since soname could not be found for %s"),
library);
@@ -768,6 +769,7 @@ struct dlib_entry
int flag;
int is_link;
unsigned int osversion;
+ unsigned int isa_level;
struct dlib_entry *next;
};
@@ -980,17 +982,21 @@ search_dir (const struct dir_entry *entry)
library already and it's not changed. */
char *soname;
unsigned int osversion;
- if (!search_aux_cache (&lstat_buf, &flag, &osversion, &soname))
+ unsigned int isa_level;
+ if (!search_aux_cache (&lstat_buf, &flag, &osversion, &isa_level,
+ &soname))
{
if (process_file (real_name, file_name, direntry->d_name, &flag,
- &osversion, &soname, is_link, &lstat_buf))
+ &osversion, &isa_level, &soname, is_link,
+ &lstat_buf))
{
if (real_name != real_file_name)
free (real_name);
continue;
}
else if (opt_build_cache)
- add_to_aux_cache (&lstat_buf, flag, osversion, soname);
+ add_to_aux_cache (&lstat_buf, flag, osversion, isa_level,
+ soname);
}
if (soname == NULL)
@@ -1096,6 +1102,7 @@ search_dir (const struct dir_entry *entry)
dlib_ptr->name = xstrdup (direntry->d_name);
dlib_ptr->is_link = is_link;
dlib_ptr->osversion = osversion;
+ dlib_ptr->isa_level = isa_level;
}
/* Don't add this library, abort loop. */
/* Also free soname, since it's dynamically allocated. */
@@ -1112,6 +1119,7 @@ search_dir (const struct dir_entry *entry)
dlib_ptr->flag = flag;
dlib_ptr->is_link = is_link;
dlib_ptr->osversion = osversion;
+ dlib_ptr->isa_level = isa_level;
/* Add at head of list. */
dlib_ptr->next = dlibs;
dlibs = dlib_ptr;
@@ -1149,7 +1157,7 @@ search_dir (const struct dir_entry *entry)
if (opt_build_cache)
add_to_cache (entry->path, filename, dlib_ptr->soname,
dlib_ptr->flag, dlib_ptr->osversion,
- hwcap, entry->hwcaps);
+ dlib_ptr->isa_level, hwcap, entry->hwcaps);
}
/* Free all resources. */