diff options
Diffstat (limited to 'elf')
-rw-r--r-- | elf/dl-load.c | 8 | ||||
-rw-r--r-- | elf/ldsodefs.h | 23 | ||||
-rw-r--r-- | elf/link.h | 4 |
3 files changed, 26 insertions, 9 deletions
diff --git a/elf/dl-load.c b/elf/dl-load.c index c75a91392e..212b22307a 100644 --- a/elf/dl-load.c +++ b/elf/dl-load.c @@ -331,6 +331,10 @@ _dl_init_paths (const char *llp) variable. */ struct link_map *l; + /* Names of important hardware capabilities. */ + char **hwcap_names; + size_t nhwcap_names; + /* Number of elements in the library path. */ size_t nllp; @@ -347,6 +351,10 @@ _dl_init_paths (const char *llp) else nllp = 0; + /* Get the capabilities. */ + hwcap_names = _dl_important_hwcaps (&nhwcap_names, + _dl_platform, _dl_platformlen); + l = _dl_loaded; if (l != NULL) { diff --git a/elf/ldsodefs.h b/elf/ldsodefs.h index 3154bf2a2b..578e085d75 100644 --- a/elf/ldsodefs.h +++ b/elf/ldsodefs.h @@ -53,20 +53,22 @@ enum r_dir_status { unknown, nonexisting, existing }; struct r_search_path_elem { - const char *dirname; - - size_t dirnamelen; - enum r_dir_status dirstatus; - - size_t machdirnamelen; - enum r_dir_status machdirstatus; + /* This link is only used in the `all_dirs' member of `r_search_path'. */ + struct r_search_path_elem *next; /* Strings saying where the definition came from. */ const char *what; const char *where; - /* This link is only used in the `all_dirs' member of `r_search_path'. */ - struct r_search_path_elem *next; + const char *dirname; + + enum r_dir_status exists[0]; + }; + +struct r_strlenpair + { + const char *str; + size_t len; }; @@ -383,6 +385,9 @@ extern void _dl_show_auxv (void); other. */ extern char *_dl_next_ld_env_entry (char ***position); +/* Return an array with the names of the important hardware capabilities. */ +extern char **_dl_important_hwcap (size_t *sz); + __END_DECLS #endif /* ldsodefs.h */ diff --git a/elf/link.h b/elf/link.h index 30efa0ed25..edf1303595 100644 --- a/elf/link.h +++ b/elf/link.h @@ -156,6 +156,10 @@ struct link_map /* Collected information about own RPATH directories. */ struct r_search_path_elem **l_rpath_dirs; + /* Directory names composed from capability names. */ + struct r_strlenpair *l_capstrs; + size_t l_ncapstrs; + /* Collected results of relocation while profiling. */ ElfW(Addr) *l_reloc_result; |