This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Enable VDSO on statically linked programs.


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



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]