diff options
Diffstat (limited to 'sysdeps/generic/ldsodefs.h')
-rw-r--r-- | sysdeps/generic/ldsodefs.h | 44 |
1 files changed, 30 insertions, 14 deletions
diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h index 52303327c0..3249105ac1 100644 --- a/sysdeps/generic/ldsodefs.h +++ b/sysdeps/generic/ldsodefs.h @@ -29,10 +29,12 @@ #include <elf.h> #include <dlfcn.h> +#include <fpu_control.h> #include <sys/mman.h> #include <link.h> #include <dl-lookupcfg.h> #include <bits/libc-lock.h> +#include <hp-timing.h> __BEGIN_DECLS @@ -234,6 +236,15 @@ struct rtld_global /* Cached value of `getpagesize ()'. */ EXTERN size_t _dl_pagesize; + /* During the program run we must not modify the global data of + loaded shared object simultanously in two threads. Therefore we + protect `_dl_open' and `_dl_close' in dl-close.c. + + This must be a recursive lock since the initializer function of + the loaded object might as well require a call to this function. + At this time it is not anymore a problem to modify the tables. */ + __libc_lock_define_recursive (EXTERN, _dl_load_lock) + /* OS version. */ EXTERN unsigned int _dl_osversion; /* Platform name. */ @@ -251,12 +262,27 @@ struct rtld_global /* If nonzero print warnings messages. */ EXTERN int _dl_verbose; + /* Do we do lazy relocations? */ + EXTERN int _dl_lazy; + /* Nonzero if runtime lookups should not update the .got/.plt. */ EXTERN int _dl_bind_not; + /* Nonzero if references should be treated as weak during runtime + linking. */ + EXTERN int _dl_dynamic_weak; + + /* Default floating-point control word. */ + EXTERN fpu_control_t _dl_fpu_control; + /* The object to be initialized first. */ EXTERN struct link_map *_dl_initfirst; + /* Start time on CPU clock. */ +#if HP_TIMING_AVAIL + EXTERN hp_timing_t _dl_cpuclock_offset; +#endif + /* Name of the shared object to be profiled (if any). */ EXTERN const char *_dl_profile; /* Map of shared object to be profiled. */ @@ -268,7 +294,7 @@ struct rtld_global /* Name of the object we want to trace the prelinking. */ EXTERN const char *_dl_trace_prelink; - /* Expect cache ID. */ + /* Expected cache ID. */ EXTERN int _dl_correct_cache_id; /* Counters for the number of relocations performed. */ @@ -291,6 +317,9 @@ struct rtld_global EXTERN struct r_search_path_elem *_dl_all_dirs; EXTERN struct r_search_path_elem *_dl_init_all_dirs; + /* File descriptor to write debug messages to. */ + EXTERN int _dl_debug_fd; + /* Structure describing the dynamic linker itself. */ EXTERN struct link_map _dl_rtld_map; #ifdef SHARED @@ -303,22 +332,9 @@ extern struct rtld_global _rtld_global; extern int _dl_argc; extern char **_dl_argv; -/* Do we do lazy relocations? */ -extern int _dl_lazy; - /* The array with message we print as a last resort. */ extern const char _dl_out_of_memory[]; -/* File descriptor to write debug messages to. */ -extern int _dl_debug_fd; - -/* Nonzero if references should be treated as weak during runtime - linking. - - XXX Once we can set the default for this variable to zero move it - into _rtld_global. */ -extern int _dl_dynamic_weak; - /* OS-dependent function to open the zero-fill device. */ extern int _dl_sysdep_open_zero_fill (void); /* dl-sysdep.c */ |