This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH] Enable VDSO on statically linked programs.
- From: Rafael Avila de Espindola <rafael at espindo dot la>
- To: libc-alpha at sourceware dot org
- Date: Wed, 05 Sep 2018 02:04:02 +0000
- Subject: [PATCH] Enable VDSO on statically linked programs.
- Reply-to: Rafael Avila de Espindola <rafael at espindo dot la>
All the required code already existed, and some of it was already
running.
AT_SYSINFO_EHDR is processed if NEED_DL_SYSINFO_DSO is defined, but it
looks like it always is. The call to setup_vdso is also unconditional,
so all that was left to do was setup the function pointers and use
them. This patch just deletes some #ifdef to enable that.
---
Any ideas on how to test this would be appreciated. Locally I have used
strace to check that the vdso is used, but it is not clear if I can use
strace in an automated test.
Is the copyright paperwork required when deleting code? :-)
2018-09-04 Rafael Ávila de Espíndola <rafael@espindo.la>
* sysdeps/unix/sysv/linux/sysdep-vdso.h: remove #ifdef SHARED.
* sysdeps/unix/sysv/linux/x86/libc-vdso.h: remove #ifdef SHARED.
* sysdeps/unix/sysv/linux/x86_64/init-first.c: remove #ifdef SHARED.
sysdeps/unix/sysv/linux/sysdep-vdso.h | 11 -----------
sysdeps/unix/sysv/linux/x86/libc-vdso.h | 4 ----
sysdeps/unix/sysv/linux/x86_64/init-first.c | 2 --
3 files changed, 17 deletions(-)
diff --git a/sysdeps/unix/sysv/linux/sysdep-vdso.h b/sysdeps/unix/sysv/linux/sysdep-vdso.h
index 1912c1c156..6736752de6 100644
--- a/sysdeps/unix/sysv/linux/sysdep-vdso.h
+++ b/sysdeps/unix/sysv/linux/sysdep-vdso.h
@@ -26,8 +26,6 @@
funcptr (args)
#endif
-#ifdef SHARED
-
# ifdef HAVE_VSYSCALL
# include <libc-vdso.h>
@@ -86,13 +84,4 @@
INTERNAL_SYSCALL (name, err, nr, ##args)
# endif /* HAVE_VSYSCALL */
-# else /* SHARED */
-
-# define INLINE_VSYSCALL(name, nr, args...) \
- INLINE_SYSCALL (name, nr, ##args)
-# define INTERNAL_VSYSCALL(name, err, nr, args...) \
- INTERNAL_SYSCALL (name, err, nr, ##args)
-
-#endif /* SHARED */
-
#endif /* SYSDEP_VDSO_LINUX_H */
diff --git a/sysdeps/unix/sysv/linux/x86/libc-vdso.h b/sysdeps/unix/sysv/linux/x86/libc-vdso.h
index 6f86073dae..669561166f 100644
--- a/sysdeps/unix/sysv/linux/x86/libc-vdso.h
+++ b/sysdeps/unix/sysv/linux/x86/libc-vdso.h
@@ -22,8 +22,6 @@
#include <time.h>
#include <sys/time.h>
-#ifdef SHARED
-
# include <sysdep-vdso.h>
extern long int (*VDSO_SYMBOL(clock_gettime)) (clockid_t, struct timespec *)
@@ -32,6 +30,4 @@ extern long int (*VDSO_SYMBOL(clock_gettime)) (clockid_t, struct timespec *)
extern long int (*VDSO_SYMBOL(getcpu)) (unsigned *, unsigned *, void *)
attribute_hidden;
-#endif
-
#endif /* _LIBC_VDSO_H */
diff --git a/sysdeps/unix/sysv/linux/x86_64/init-first.c b/sysdeps/unix/sysv/linux/x86_64/init-first.c
index 2320505804..57d4f9838e 100644
--- a/sysdeps/unix/sysv/linux/x86_64/init-first.c
+++ b/sysdeps/unix/sysv/linux/x86_64/init-first.c
@@ -16,7 +16,6 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifdef SHARED
# include <time.h>
# include <sysdep.h>
# include <dl-vdso.h>
@@ -47,6 +46,5 @@ __vdso_platform_setup (void)
}
# define VDSO_SETUP __vdso_platform_setup
-#endif
#include <csu/init-first.c>
--
2.17.1