aboutsummaryrefslogtreecommitdiff
path: root/elf
diff options
context:
space:
mode:
Diffstat (limited to 'elf')
-rw-r--r--elf/dl-support.c10
-rw-r--r--elf/rtld.c8
2 files changed, 18 insertions, 0 deletions
diff --git a/elf/dl-support.c b/elf/dl-support.c
index a7a8109..eae0895 100644
--- a/elf/dl-support.c
+++ b/elf/dl-support.c
@@ -131,6 +131,11 @@ int _dl_correct_cache_id = _DL_CACHE_DEFAULT_ID;
struct ElfW(Phdr) *_dl_phdr;
size_t _dl_phnum;
+#ifdef NEED_DL_SYSINFO
+/* Needed for improved syscall handling on at least x86/Linux. */
+uintptr_t _dl_sysinfo = DL_SYSINFO_DEFAULT;
+#endif
+
/* 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.
@@ -238,3 +243,8 @@ _dl_important_hwcaps (const char *platform, size_t platform_len, size_t *sz,
*sz = 1;
return &result;
}
+
+
+#ifdef DL_SYSINFO_IMPLEMENTATION
+DL_SYSINFO_IMPLEMENTATION
+#endif
diff --git a/elf/rtld.c b/elf/rtld.c
index a93be84..a05034e 100644
--- a/elf/rtld.c
+++ b/elf/rtld.c
@@ -97,6 +97,9 @@ struct rtld_global _rtld_global =
Bummer. --drepper */
._dl_dynamic_weak = 1,
#endif
+#ifdef NEED_DL_SYSINFO
+ ._dl_sysinfo = DL_SYSINFO_DEFAULT,
+#endif
._dl_lazy = 1,
._dl_fpu_control = _FPU_DEFAULT,
._dl_correct_cache_id = _DL_CACHE_DEFAULT_ID,
@@ -132,6 +135,11 @@ static hp_timing_t start_time;
TLS_INIT_HELPER
#endif
+/* Helper function for syscall implementation. */
+#ifdef DL_SYSINFO_IMPLEMENTATION
+DL_SYSINFO_IMPLEMENTATION
+#endif
+
/* Before ld.so is relocated we must not access variables which need
relocations. This means variables which are exported. Variables
declared as static are fine. If we can mark a variable hidden this