diff options
Diffstat (limited to 'sysdeps')
-rw-r--r-- | sysdeps/generic/ldsodefs.h | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h index 0410f777a6..65a6a51633 100644 --- a/sysdeps/generic/ldsodefs.h +++ b/sysdeps/generic/ldsodefs.h @@ -245,6 +245,13 @@ enum allowmask }; +/* DSO sort algorithm to use (check dl-sort-maps.c). */ +enum dso_sort_algorithm + { + dso_sort_algorithm_original, + dso_sort_algorithm_dfs + }; + struct audit_ifaces { void (*activity) (uintptr_t *, unsigned int); @@ -678,6 +685,8 @@ struct rtld_global_ro platforms. */ EXTERN uint64_t _dl_hwcap2; + EXTERN enum dso_sort_algorithm _dl_dso_sort_algo; + #ifdef SHARED /* We add a function table to _rtld_global which is then used to call the function instead of going through the PLT. The result @@ -1104,7 +1113,7 @@ extern void _dl_fini (void) attribute_hidden; /* Sort array MAPS according to dependencies of the contained objects. */ extern void _dl_sort_maps (struct link_map **maps, unsigned int nmaps, - char *used, bool for_fini) attribute_hidden; + unsigned int skip, bool for_fini) attribute_hidden; /* The dynamic linker calls this function before and having changing any shared object mappings. The `r_state' member of `struct r_debug' @@ -1235,6 +1244,9 @@ extern struct link_map * _dl_get_dl_main_map (void) # endif #endif +/* Initialize the DSO sort algorithm to use. */ +extern void _dl_sort_maps_init (void) attribute_hidden; + /* Initialization of libpthread for statically linked applications. If libpthread is not linked in, this is an empty function. */ void __pthread_initialize_minimal (void) weak_function; |