[3/3] x86: clock_gettime and timespec_get vDSO cleanup

Message ID 55352DC3.40900@linaro.org
State New
Headers show

Commit Message

Adhemerval Zanella April 20, 2015, 4:48 p.m.
This patch removes the x86 specific timespec_get and clock_gettime
implementation to use generic HAVE_CLOCK_GETTIME_VSYSCALL way.]

--

	* sysdeps/unix/sysv/linux/i386/sysdep.h (HAVE_CLOCK_GETTIME_VSYSCALL):
	Define.
	(HAVE_GETTIMEOFDAY_VSYSCALL): Likewise.
	* sysdeps/unix/sysv/linux/x86_64/sysdep.h
	(HAVE_CLOCK_GETTIME_VSYSCALL): Likewise.
	(HAVE_GETTIMEOFDAY_VSYSCALL): Likewise.
	* sysdeps/unix/sysv/linux/timespec_get.c: Include errno.h.
	* sysdeps/unix/sysv/linux/x86/clock_gettime.c: Remove file.
	* sysdeps/unix/sysv/linux/x86/timespec_get.c: Likewise.

---

Comments

Adhemerval Zanella May 11, 2015, 7:12 p.m. | #1
Ping.

On 20-04-2015 13:48, Adhemerval Zanella wrote:
> This patch removes the x86 specific timespec_get and clock_gettime
> implementation to use generic HAVE_CLOCK_GETTIME_VSYSCALL way.]
> 
> --
> 
> 	* sysdeps/unix/sysv/linux/i386/sysdep.h (HAVE_CLOCK_GETTIME_VSYSCALL):
> 	Define.
> 	(HAVE_GETTIMEOFDAY_VSYSCALL): Likewise.
> 	* sysdeps/unix/sysv/linux/x86_64/sysdep.h
> 	(HAVE_CLOCK_GETTIME_VSYSCALL): Likewise.
> 	(HAVE_GETTIMEOFDAY_VSYSCALL): Likewise.
> 	* sysdeps/unix/sysv/linux/timespec_get.c: Include errno.h.
> 	* sysdeps/unix/sysv/linux/x86/clock_gettime.c: Remove file.
> 	* sysdeps/unix/sysv/linux/x86/timespec_get.c: Likewise.
> 
> ---
> 
> diff --git a/sysdeps/unix/sysv/linux/i386/sysdep.h b/sysdeps/unix/sysv/linux/i386/sysdep.h
> index 7f6fcf3..d76aca5 100644
> --- a/sysdeps/unix/sysv/linux/i386/sysdep.h
> +++ b/sysdeps/unix/sysv/linux/i386/sysdep.h
> @@ -328,6 +328,10 @@ struct libc_do_syscall_args
>        }									      \
>      (int) resultvar; })
>  
> +/* List of system calls which are supported as vsyscalls.  */
> +# define HAVE_CLOCK_GETTIME_VSYSCALL    1
> +# define HAVE_GETTIMEOFDAY_VSYSCALL     1
> +
>  /* Define a macro which expands inline into the wrapper code for a system
>     call.  This use is for internal calls that do not need to handle errors
>     normally.  It will never touch errno.  This returns just what the kernel
> diff --git a/sysdeps/unix/sysv/linux/timespec_get.c b/sysdeps/unix/sysv/linux/timespec_get.c
> index 0e5f513..b42a44f 100644
> --- a/sysdeps/unix/sysv/linux/timespec_get.c
> +++ b/sysdeps/unix/sysv/linux/timespec_get.c
> @@ -17,6 +17,7 @@
>  
>  #include <time.h>
>  #include <sysdep.h>
> +#include <errno.h>
>  
>  #ifdef HAVE_CLOCK_GETTIME_VSYSCALL
>  # define HAVE_VSYSCALL
> diff --git a/sysdeps/unix/sysv/linux/x86/clock_gettime.c b/sysdeps/unix/sysv/linux/x86/clock_gettime.c
> deleted file mode 100644
> index 98ffb01..0000000
> --- a/sysdeps/unix/sysv/linux/x86/clock_gettime.c
> +++ /dev/null
> @@ -1,34 +0,0 @@
> -/* Get the current value of a clock.  Linux/x86 version.
> -   Copyright (C) 2015 Free Software Foundation, Inc.
> -   This file is part of the GNU C Library.
> -
> -   The GNU C Library is free software; you can redistribute it and/or
> -   modify it under the terms of the GNU Lesser General Public
> -   License as published by the Free Software Foundation; either
> -   version 2.1 of the License, or (at your option) any later version.
> -
> -   The GNU C Library is distributed in the hope that it will be useful,
> -   but WITHOUT ANY WARRANTY; without even the implied warranty of
> -   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> -   Lesser General Public License for more details.
> -
> -   You should have received a copy of the GNU Lesser General Public
> -   License along with the GNU C Library; if not, see
> -   <http://www.gnu.org/licenses/>.  */
> -
> -#include <libc-vdso.h>
> -
> -#ifdef SHARED
> -# define SYSCALL_GETTIME(id, tp) \
> -  ({ long int (*f) (clockid_t, struct timespec *) = __vdso_clock_gettime; \
> -  long int v_ret;							  \
> -  PTR_DEMANGLE (f);							  \
> -  v_ret = (*f) (id, tp);						  \
> -  if (INTERNAL_SYSCALL_ERROR_P (v_ret, )) {				  \
> -    __set_errno (INTERNAL_SYSCALL_ERRNO (v_ret, ));			  \
> -    v_ret = -1;								  \
> -  }									  \
> -  v_ret; })
> -#endif
> -
> -#include <sysdeps/unix/sysv/linux/clock_gettime.c>
> diff --git a/sysdeps/unix/sysv/linux/x86/timespec_get.c b/sysdeps/unix/sysv/linux/x86/timespec_get.c
> deleted file mode 100644
> index b21efce..0000000
> --- a/sysdeps/unix/sysv/linux/x86/timespec_get.c
> +++ /dev/null
> @@ -1,29 +0,0 @@
> -/* timespec_get -- returns the calendar time based on a given time base.
> -   Linux/x86 version.
> -   Copyright (C) 2015 Free Software Foundation, Inc.
> -   This file is part of the GNU C Library.
> -
> -   The GNU C Library is free software; you can redistribute it and/or
> -   modify it under the terms of the GNU Lesser General Public
> -   License as published by the Free Software Foundation; either
> -   version 2.1 of the License, or (at your option) any later version.
> -
> -   The GNU C Library is distributed in the hope that it will be useful,
> -   but WITHOUT ANY WARRANTY; without even the implied warranty of
> -   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> -   Lesser General Public License for more details.
> -
> -   You should have received a copy of the GNU Lesser General Public
> -   License along with the GNU C Library; if not, see
> -   <http://www.gnu.org/licenses/>.  */
> -
> -#include <libc-vdso.h>
> -
> -#ifdef SHARED
> -# define INTERNAL_GETTIME(id, tp) \
> -  ({ long int (*f) (clockid_t, struct timespec *) = __vdso_clock_gettime; \
> -  PTR_DEMANGLE (f);							  \
> -  (*f) (id, tp); })
> -#endif
> -
> -#include <sysdeps/unix/sysv/linux/timespec_get.c>
> diff --git a/sysdeps/unix/sysv/linux/x86_64/sysdep.h b/sysdeps/unix/sysv/linux/x86_64/sysdep.h
> index cc66093..bea3192 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/sysdep.h
> +++ b/sysdeps/unix/sysv/linux/x86_64/sysdep.h
> @@ -252,6 +252,10 @@
>  # undef INTERNAL_SYSCALL_ERRNO
>  # define INTERNAL_SYSCALL_ERRNO(val, err)	(-(val))
>  
> +/* List of system calls which are supported as vsyscalls.  */
> +# define HAVE_CLOCK_GETTIME_VSYSCALL    1
> +# define HAVE_GETTIMEOFDAY_VSYSCALL     1
> +
>  # define LOAD_ARGS_0()
>  # define LOAD_REGS_0
>  # define ASM_ARGS_0
>
Adhemerval Zanella May 26, 2015, 8:41 p.m. | #2
Ping.

On 11-05-2015 16:12, Adhemerval Zanella wrote:
> Ping.
> 
> On 20-04-2015 13:48, Adhemerval Zanella wrote:
>> This patch removes the x86 specific timespec_get and clock_gettime
>> implementation to use generic HAVE_CLOCK_GETTIME_VSYSCALL way.]
>>
>> --
>>
>> 	* sysdeps/unix/sysv/linux/i386/sysdep.h (HAVE_CLOCK_GETTIME_VSYSCALL):
>> 	Define.
>> 	(HAVE_GETTIMEOFDAY_VSYSCALL): Likewise.
>> 	* sysdeps/unix/sysv/linux/x86_64/sysdep.h
>> 	(HAVE_CLOCK_GETTIME_VSYSCALL): Likewise.
>> 	(HAVE_GETTIMEOFDAY_VSYSCALL): Likewise.
>> 	* sysdeps/unix/sysv/linux/timespec_get.c: Include errno.h.
>> 	* sysdeps/unix/sysv/linux/x86/clock_gettime.c: Remove file.
>> 	* sysdeps/unix/sysv/linux/x86/timespec_get.c: Likewise.
>>
>> ---
>>
>> diff --git a/sysdeps/unix/sysv/linux/i386/sysdep.h b/sysdeps/unix/sysv/linux/i386/sysdep.h
>> index 7f6fcf3..d76aca5 100644
>> --- a/sysdeps/unix/sysv/linux/i386/sysdep.h
>> +++ b/sysdeps/unix/sysv/linux/i386/sysdep.h
>> @@ -328,6 +328,10 @@ struct libc_do_syscall_args
>>        }									      \
>>      (int) resultvar; })
>>  
>> +/* List of system calls which are supported as vsyscalls.  */
>> +# define HAVE_CLOCK_GETTIME_VSYSCALL    1
>> +# define HAVE_GETTIMEOFDAY_VSYSCALL     1
>> +
>>  /* Define a macro which expands inline into the wrapper code for a system
>>     call.  This use is for internal calls that do not need to handle errors
>>     normally.  It will never touch errno.  This returns just what the kernel
>> diff --git a/sysdeps/unix/sysv/linux/timespec_get.c b/sysdeps/unix/sysv/linux/timespec_get.c
>> index 0e5f513..b42a44f 100644
>> --- a/sysdeps/unix/sysv/linux/timespec_get.c
>> +++ b/sysdeps/unix/sysv/linux/timespec_get.c
>> @@ -17,6 +17,7 @@
>>  
>>  #include <time.h>
>>  #include <sysdep.h>
>> +#include <errno.h>
>>  
>>  #ifdef HAVE_CLOCK_GETTIME_VSYSCALL
>>  # define HAVE_VSYSCALL
>> diff --git a/sysdeps/unix/sysv/linux/x86/clock_gettime.c b/sysdeps/unix/sysv/linux/x86/clock_gettime.c
>> deleted file mode 100644
>> index 98ffb01..0000000
>> --- a/sysdeps/unix/sysv/linux/x86/clock_gettime.c
>> +++ /dev/null
>> @@ -1,34 +0,0 @@
>> -/* Get the current value of a clock.  Linux/x86 version.
>> -   Copyright (C) 2015 Free Software Foundation, Inc.
>> -   This file is part of the GNU C Library.
>> -
>> -   The GNU C Library is free software; you can redistribute it and/or
>> -   modify it under the terms of the GNU Lesser General Public
>> -   License as published by the Free Software Foundation; either
>> -   version 2.1 of the License, or (at your option) any later version.
>> -
>> -   The GNU C Library is distributed in the hope that it will be useful,
>> -   but WITHOUT ANY WARRANTY; without even the implied warranty of
>> -   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
>> -   Lesser General Public License for more details.
>> -
>> -   You should have received a copy of the GNU Lesser General Public
>> -   License along with the GNU C Library; if not, see
>> -   <http://www.gnu.org/licenses/>.  */
>> -
>> -#include <libc-vdso.h>
>> -
>> -#ifdef SHARED
>> -# define SYSCALL_GETTIME(id, tp) \
>> -  ({ long int (*f) (clockid_t, struct timespec *) = __vdso_clock_gettime; \
>> -  long int v_ret;							  \
>> -  PTR_DEMANGLE (f);							  \
>> -  v_ret = (*f) (id, tp);						  \
>> -  if (INTERNAL_SYSCALL_ERROR_P (v_ret, )) {				  \
>> -    __set_errno (INTERNAL_SYSCALL_ERRNO (v_ret, ));			  \
>> -    v_ret = -1;								  \
>> -  }									  \
>> -  v_ret; })
>> -#endif
>> -
>> -#include <sysdeps/unix/sysv/linux/clock_gettime.c>
>> diff --git a/sysdeps/unix/sysv/linux/x86/timespec_get.c b/sysdeps/unix/sysv/linux/x86/timespec_get.c
>> deleted file mode 100644
>> index b21efce..0000000
>> --- a/sysdeps/unix/sysv/linux/x86/timespec_get.c
>> +++ /dev/null
>> @@ -1,29 +0,0 @@
>> -/* timespec_get -- returns the calendar time based on a given time base.
>> -   Linux/x86 version.
>> -   Copyright (C) 2015 Free Software Foundation, Inc.
>> -   This file is part of the GNU C Library.
>> -
>> -   The GNU C Library is free software; you can redistribute it and/or
>> -   modify it under the terms of the GNU Lesser General Public
>> -   License as published by the Free Software Foundation; either
>> -   version 2.1 of the License, or (at your option) any later version.
>> -
>> -   The GNU C Library is distributed in the hope that it will be useful,
>> -   but WITHOUT ANY WARRANTY; without even the implied warranty of
>> -   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
>> -   Lesser General Public License for more details.
>> -
>> -   You should have received a copy of the GNU Lesser General Public
>> -   License along with the GNU C Library; if not, see
>> -   <http://www.gnu.org/licenses/>.  */
>> -
>> -#include <libc-vdso.h>
>> -
>> -#ifdef SHARED
>> -# define INTERNAL_GETTIME(id, tp) \
>> -  ({ long int (*f) (clockid_t, struct timespec *) = __vdso_clock_gettime; \
>> -  PTR_DEMANGLE (f);							  \
>> -  (*f) (id, tp); })
>> -#endif
>> -
>> -#include <sysdeps/unix/sysv/linux/timespec_get.c>
>> diff --git a/sysdeps/unix/sysv/linux/x86_64/sysdep.h b/sysdeps/unix/sysv/linux/x86_64/sysdep.h
>> index cc66093..bea3192 100644
>> --- a/sysdeps/unix/sysv/linux/x86_64/sysdep.h
>> +++ b/sysdeps/unix/sysv/linux/x86_64/sysdep.h
>> @@ -252,6 +252,10 @@
>>  # undef INTERNAL_SYSCALL_ERRNO
>>  # define INTERNAL_SYSCALL_ERRNO(val, err)	(-(val))
>>  
>> +/* List of system calls which are supported as vsyscalls.  */
>> +# define HAVE_CLOCK_GETTIME_VSYSCALL    1
>> +# define HAVE_GETTIMEOFDAY_VSYSCALL     1
>> +
>>  # define LOAD_ARGS_0()
>>  # define LOAD_REGS_0
>>  # define ASM_ARGS_0
>>
Adhemerval Zanella June 1, 2015, 8:11 p.m. | #3
Since it is a refactor based on already committed patches, I will push it
soon if anyone opposes it.

On 26-05-2015 17:41, Adhemerval Zanella wrote:
> Ping.
> 
> On 11-05-2015 16:12, Adhemerval Zanella wrote:
>> Ping.
>>
>> On 20-04-2015 13:48, Adhemerval Zanella wrote:
>>> This patch removes the x86 specific timespec_get and clock_gettime
>>> implementation to use generic HAVE_CLOCK_GETTIME_VSYSCALL way.]
>>>
>>> --
>>>
>>> 	* sysdeps/unix/sysv/linux/i386/sysdep.h (HAVE_CLOCK_GETTIME_VSYSCALL):
>>> 	Define.
>>> 	(HAVE_GETTIMEOFDAY_VSYSCALL): Likewise.
>>> 	* sysdeps/unix/sysv/linux/x86_64/sysdep.h
>>> 	(HAVE_CLOCK_GETTIME_VSYSCALL): Likewise.
>>> 	(HAVE_GETTIMEOFDAY_VSYSCALL): Likewise.
>>> 	* sysdeps/unix/sysv/linux/timespec_get.c: Include errno.h.
>>> 	* sysdeps/unix/sysv/linux/x86/clock_gettime.c: Remove file.
>>> 	* sysdeps/unix/sysv/linux/x86/timespec_get.c: Likewise.
>>>
>>> ---
>>>
>>> diff --git a/sysdeps/unix/sysv/linux/i386/sysdep.h b/sysdeps/unix/sysv/linux/i386/sysdep.h
>>> index 7f6fcf3..d76aca5 100644
>>> --- a/sysdeps/unix/sysv/linux/i386/sysdep.h
>>> +++ b/sysdeps/unix/sysv/linux/i386/sysdep.h
>>> @@ -328,6 +328,10 @@ struct libc_do_syscall_args
>>>        }									      \
>>>      (int) resultvar; })
>>>  
>>> +/* List of system calls which are supported as vsyscalls.  */
>>> +# define HAVE_CLOCK_GETTIME_VSYSCALL    1
>>> +# define HAVE_GETTIMEOFDAY_VSYSCALL     1
>>> +
>>>  /* Define a macro which expands inline into the wrapper code for a system
>>>     call.  This use is for internal calls that do not need to handle errors
>>>     normally.  It will never touch errno.  This returns just what the kernel
>>> diff --git a/sysdeps/unix/sysv/linux/timespec_get.c b/sysdeps/unix/sysv/linux/timespec_get.c
>>> index 0e5f513..b42a44f 100644
>>> --- a/sysdeps/unix/sysv/linux/timespec_get.c
>>> +++ b/sysdeps/unix/sysv/linux/timespec_get.c
>>> @@ -17,6 +17,7 @@
>>>  
>>>  #include <time.h>
>>>  #include <sysdep.h>
>>> +#include <errno.h>
>>>  
>>>  #ifdef HAVE_CLOCK_GETTIME_VSYSCALL
>>>  # define HAVE_VSYSCALL
>>> diff --git a/sysdeps/unix/sysv/linux/x86/clock_gettime.c b/sysdeps/unix/sysv/linux/x86/clock_gettime.c
>>> deleted file mode 100644
>>> index 98ffb01..0000000
>>> --- a/sysdeps/unix/sysv/linux/x86/clock_gettime.c
>>> +++ /dev/null
>>> @@ -1,34 +0,0 @@
>>> -/* Get the current value of a clock.  Linux/x86 version.
>>> -   Copyright (C) 2015 Free Software Foundation, Inc.
>>> -   This file is part of the GNU C Library.
>>> -
>>> -   The GNU C Library is free software; you can redistribute it and/or
>>> -   modify it under the terms of the GNU Lesser General Public
>>> -   License as published by the Free Software Foundation; either
>>> -   version 2.1 of the License, or (at your option) any later version.
>>> -
>>> -   The GNU C Library is distributed in the hope that it will be useful,
>>> -   but WITHOUT ANY WARRANTY; without even the implied warranty of
>>> -   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
>>> -   Lesser General Public License for more details.
>>> -
>>> -   You should have received a copy of the GNU Lesser General Public
>>> -   License along with the GNU C Library; if not, see
>>> -   <http://www.gnu.org/licenses/>.  */
>>> -
>>> -#include <libc-vdso.h>
>>> -
>>> -#ifdef SHARED
>>> -# define SYSCALL_GETTIME(id, tp) \
>>> -  ({ long int (*f) (clockid_t, struct timespec *) = __vdso_clock_gettime; \
>>> -  long int v_ret;							  \
>>> -  PTR_DEMANGLE (f);							  \
>>> -  v_ret = (*f) (id, tp);						  \
>>> -  if (INTERNAL_SYSCALL_ERROR_P (v_ret, )) {				  \
>>> -    __set_errno (INTERNAL_SYSCALL_ERRNO (v_ret, ));			  \
>>> -    v_ret = -1;								  \
>>> -  }									  \
>>> -  v_ret; })
>>> -#endif
>>> -
>>> -#include <sysdeps/unix/sysv/linux/clock_gettime.c>
>>> diff --git a/sysdeps/unix/sysv/linux/x86/timespec_get.c b/sysdeps/unix/sysv/linux/x86/timespec_get.c
>>> deleted file mode 100644
>>> index b21efce..0000000
>>> --- a/sysdeps/unix/sysv/linux/x86/timespec_get.c
>>> +++ /dev/null
>>> @@ -1,29 +0,0 @@
>>> -/* timespec_get -- returns the calendar time based on a given time base.
>>> -   Linux/x86 version.
>>> -   Copyright (C) 2015 Free Software Foundation, Inc.
>>> -   This file is part of the GNU C Library.
>>> -
>>> -   The GNU C Library is free software; you can redistribute it and/or
>>> -   modify it under the terms of the GNU Lesser General Public
>>> -   License as published by the Free Software Foundation; either
>>> -   version 2.1 of the License, or (at your option) any later version.
>>> -
>>> -   The GNU C Library is distributed in the hope that it will be useful,
>>> -   but WITHOUT ANY WARRANTY; without even the implied warranty of
>>> -   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
>>> -   Lesser General Public License for more details.
>>> -
>>> -   You should have received a copy of the GNU Lesser General Public
>>> -   License along with the GNU C Library; if not, see
>>> -   <http://www.gnu.org/licenses/>.  */
>>> -
>>> -#include <libc-vdso.h>
>>> -
>>> -#ifdef SHARED
>>> -# define INTERNAL_GETTIME(id, tp) \
>>> -  ({ long int (*f) (clockid_t, struct timespec *) = __vdso_clock_gettime; \
>>> -  PTR_DEMANGLE (f);							  \
>>> -  (*f) (id, tp); })
>>> -#endif
>>> -
>>> -#include <sysdeps/unix/sysv/linux/timespec_get.c>
>>> diff --git a/sysdeps/unix/sysv/linux/x86_64/sysdep.h b/sysdeps/unix/sysv/linux/x86_64/sysdep.h
>>> index cc66093..bea3192 100644
>>> --- a/sysdeps/unix/sysv/linux/x86_64/sysdep.h
>>> +++ b/sysdeps/unix/sysv/linux/x86_64/sysdep.h
>>> @@ -252,6 +252,10 @@
>>>  # undef INTERNAL_SYSCALL_ERRNO
>>>  # define INTERNAL_SYSCALL_ERRNO(val, err)	(-(val))
>>>  
>>> +/* List of system calls which are supported as vsyscalls.  */
>>> +# define HAVE_CLOCK_GETTIME_VSYSCALL    1
>>> +# define HAVE_GETTIMEOFDAY_VSYSCALL     1
>>> +
>>>  # define LOAD_ARGS_0()
>>>  # define LOAD_REGS_0
>>>  # define ASM_ARGS_0
>>>

Patch

diff --git a/sysdeps/unix/sysv/linux/i386/sysdep.h b/sysdeps/unix/sysv/linux/i386/sysdep.h
index 7f6fcf3..d76aca5 100644
--- a/sysdeps/unix/sysv/linux/i386/sysdep.h
+++ b/sysdeps/unix/sysv/linux/i386/sysdep.h
@@ -328,6 +328,10 @@  struct libc_do_syscall_args
       }									      \
     (int) resultvar; })
 
+/* List of system calls which are supported as vsyscalls.  */
+# define HAVE_CLOCK_GETTIME_VSYSCALL    1
+# define HAVE_GETTIMEOFDAY_VSYSCALL     1
+
 /* Define a macro which expands inline into the wrapper code for a system
    call.  This use is for internal calls that do not need to handle errors
    normally.  It will never touch errno.  This returns just what the kernel
diff --git a/sysdeps/unix/sysv/linux/timespec_get.c b/sysdeps/unix/sysv/linux/timespec_get.c
index 0e5f513..b42a44f 100644
--- a/sysdeps/unix/sysv/linux/timespec_get.c
+++ b/sysdeps/unix/sysv/linux/timespec_get.c
@@ -17,6 +17,7 @@ 
 
 #include <time.h>
 #include <sysdep.h>
+#include <errno.h>
 
 #ifdef HAVE_CLOCK_GETTIME_VSYSCALL
 # define HAVE_VSYSCALL
diff --git a/sysdeps/unix/sysv/linux/x86/clock_gettime.c b/sysdeps/unix/sysv/linux/x86/clock_gettime.c
deleted file mode 100644
index 98ffb01..0000000
--- a/sysdeps/unix/sysv/linux/x86/clock_gettime.c
+++ /dev/null
@@ -1,34 +0,0 @@ 
-/* Get the current value of a clock.  Linux/x86 version.
-   Copyright (C) 2015 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <libc-vdso.h>
-
-#ifdef SHARED
-# define SYSCALL_GETTIME(id, tp) \
-  ({ long int (*f) (clockid_t, struct timespec *) = __vdso_clock_gettime; \
-  long int v_ret;							  \
-  PTR_DEMANGLE (f);							  \
-  v_ret = (*f) (id, tp);						  \
-  if (INTERNAL_SYSCALL_ERROR_P (v_ret, )) {				  \
-    __set_errno (INTERNAL_SYSCALL_ERRNO (v_ret, ));			  \
-    v_ret = -1;								  \
-  }									  \
-  v_ret; })
-#endif
-
-#include <sysdeps/unix/sysv/linux/clock_gettime.c>
diff --git a/sysdeps/unix/sysv/linux/x86/timespec_get.c b/sysdeps/unix/sysv/linux/x86/timespec_get.c
deleted file mode 100644
index b21efce..0000000
--- a/sysdeps/unix/sysv/linux/x86/timespec_get.c
+++ /dev/null
@@ -1,29 +0,0 @@ 
-/* timespec_get -- returns the calendar time based on a given time base.
-   Linux/x86 version.
-   Copyright (C) 2015 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <libc-vdso.h>
-
-#ifdef SHARED
-# define INTERNAL_GETTIME(id, tp) \
-  ({ long int (*f) (clockid_t, struct timespec *) = __vdso_clock_gettime; \
-  PTR_DEMANGLE (f);							  \
-  (*f) (id, tp); })
-#endif
-
-#include <sysdeps/unix/sysv/linux/timespec_get.c>
diff --git a/sysdeps/unix/sysv/linux/x86_64/sysdep.h b/sysdeps/unix/sysv/linux/x86_64/sysdep.h
index cc66093..bea3192 100644
--- a/sysdeps/unix/sysv/linux/x86_64/sysdep.h
+++ b/sysdeps/unix/sysv/linux/x86_64/sysdep.h
@@ -252,6 +252,10 @@ 
 # undef INTERNAL_SYSCALL_ERRNO
 # define INTERNAL_SYSCALL_ERRNO(val, err)	(-(val))
 
+/* List of system calls which are supported as vsyscalls.  */
+# define HAVE_CLOCK_GETTIME_VSYSCALL    1
+# define HAVE_GETTIMEOFDAY_VSYSCALL     1
+
 # define LOAD_ARGS_0()
 # define LOAD_REGS_0
 # define ASM_ARGS_0