public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] Enable VDSO on statically linked programs.
@ 2018-09-05  2:04 Rafael Avila de Espindola
  2018-09-10 19:39 ` Rafael Avila de Espindola
  0 siblings, 1 reply; 2+ messages in thread
From: Rafael Avila de Espindola @ 2018-09-05  2:04 UTC (permalink / raw)
  To: libc-alpha

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


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH] Enable VDSO on statically linked programs.
  2018-09-05  2:04 [PATCH] Enable VDSO on statically linked programs Rafael Avila de Espindola
@ 2018-09-10 19:39 ` Rafael Avila de Espindola
  0 siblings, 0 replies; 2+ messages in thread
From: Rafael Avila de Espindola @ 2018-09-10 19:39 UTC (permalink / raw)
  To: libc-alpha

Ping

"Rafael Avila de Espindola" <rafael@espindo.la> writes:

> 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

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2018-09-10 19:39 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-09-05  2:04 [PATCH] Enable VDSO on statically linked programs Rafael Avila de Espindola
2018-09-10 19:39 ` Rafael Avila de Espindola

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).