123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 |
- unchanged:
- --- a/sysdeps/unix/sysv/linux/x86_64/clock_gettime.c
- +++ b/sysdeps/unix/sysv/linux/x86_64/clock_gettime.c
- @@ -1,5 +1,6 @@
- #include "bits/libc-vdso.h"
-
- +#if 0 /* in Graphene, disallow VDSO calls */
- #ifdef SHARED
- # define SYSCALL_GETTIME(id, tp) \
- ({ long int (*f) (clockid_t, struct timespec *) = __vdso_clock_gettime; \
- @@ -16,5 +17,6 @@
- PTR_DEMANGLE (f); \
- f (id, tp); })
- #endif
- +#endif
-
- #include "../clock_gettime.c"
- unchanged:
- --- a/sysdeps/unix/sysv/linux/x86_64/gettimeofday.c
- +++ b/sysdeps/unix/sysv/linux/x86_64/gettimeofday.c
- @@ -17,6 +17,7 @@
-
- #include <sys/time.h>
-
- +#if 0 /* In graphene, do not use vsyscall or VDSO call */
- #ifdef SHARED
-
- # include <dl-vdso.h>
- @@ -42,7 +43,8 @@ asm (".type __gettimeofday, %gnu_indirect_function");
- asm (".globl __GI___gettimeofday\n"
- "__GI___gettimeofday = __gettimeofday");
-
- -#else
- +#endif
- +#endif
-
- # include <sysdep.h>
- # include <errno.h>
- @@ -54,6 +56,5 @@ __gettimeofday (struct timeval *tv, struct timezone *tz)
- }
- libc_hidden_def (__gettimeofday)
-
- -#endif
- weak_alias (__gettimeofday, gettimeofday)
- libc_hidden_weak (gettimeofday)
- unchanged:
- --- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S 2019-08-13 16:07:35.878486727 -0700
- +++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S 2019-08-13 16:07:56.166508488 -0700
- @@ -485,15 +485,8 @@ __pthread_cond_timedwait:
- /* Only clocks 0 and 1 are allowed so far. Both are handled in the
- kernel. */
- leaq 32(%rsp), %rsi
- -# ifdef SHARED
- - mov __vdso_clock_gettime@GOTPCREL(%rip), %RAX_LP
- - mov (%rax), %RAX_LP
- - PTR_DEMANGLE (%RAX_LP)
- - call *%rax
- -# else
- movl $__NR_clock_gettime, %eax
- SYSCALLDB
- -# endif
-
- /* Compute relative timeout. */
- movq (%r13), %rcx
- unchanged:
- --- a/sysdeps/unix/sysv/linux/x86_64/sched_getcpu.S 2019-08-13 16:02:43.550205689 -0700
- +++ b/sysdeps/unix/sysv/linux/x86_64/sched_getcpu.S 2019-08-13 16:03:29.282244893 -0700
- @@ -30,6 +30,7 @@ ENTRY (sched_getcpu)
- sub $0x8, %rsp
- cfi_adjust_cfa_offset(8)
-
- +#if 0 /* for Graphene, never do VDSO calls */
- movq %rsp, %rdi
- xorl %esi, %esi
- movl $VGETCPU_CACHE_OFFSET, %edx
- @@ -39,16 +40,19 @@ ENTRY (sched_getcpu)
- movq __vdso_getcpu(%rip), %rax
- PTR_DEMANGLE (%rax)
- callq *%rax
- -#else
- -# ifdef __NR_getcpu
- +#endif
- +#endif
- +
- +#ifdef __NR_getcpu
- movl $__NR_getcpu, %eax
- SYSCALLDB
- -# ifndef __ASSUME_GETCPU_SYSCALL
- +#endif
- +
- +#if 0 /* for Graphene, never do vsyscall */
- +# ifndef __ASSUME_GETCPU_SYSCALL
- cmpq $-ENOSYS, %rax
- jne 1f
- -# endif
- -# endif
- -# ifndef __ASSUME_GETCPU_SYSCALL
- +
- movq $VSYSCALL_ADDR_vgetcpu, %rax
- callq *%rax
- 1:
- unchanged:
- --- glibc-2.19-orig/sysdeps/unix/sysv/linux/x86_64/time.c 2014-02-07 01:04:38.000000000 -0800
- +++ glibc-2.19-modify/sysdeps/unix/sysv/linux/x86_64/time.c 1969-12-31 16:00:00.000000000 -0800
- @@ -1,60 +0,0 @@
- -/* Copyright (C) 2001-2014 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/>. */
- -
- -#ifdef SHARED
- -/* Redefine time so that the compiler won't complain about the type
- - mismatch with the IFUNC selector in strong_alias, below. */
- -#undef time
- -#define time __redirect_time
- -#include <time.h>
- -
- -#include <dl-vdso.h>
- -
- -#define VSYSCALL_ADDR_vtime 0xffffffffff600400
- -
- -/* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
- - ifunc symbol properly. */
- -extern __typeof (__redirect_time) __libc_time;
- -void *time_ifunc (void) __asm__ ("__libc_time");
- -
- -void *
- -time_ifunc (void)
- -{
- - PREPARE_VERSION (linux26, "LINUX_2.6", 61765110);
- -
- - /* If the vDSO is not available we fall back on the old vsyscall. */
- - return _dl_vdso_vsym ("__vdso_time", &linux26) ?: (void *) VSYSCALL_ADDR_vtime;
- -}
- -__asm (".type __libc_time, %gnu_indirect_function");
- -
- -#undef time
- -strong_alias (__libc_time, time)
- -libc_hidden_ver (__libc_time, time)
- -
- -#else
- -
- -# include <time.h>
- -# include <sysdep.h>
- -
- -time_t
- -time (time_t *t)
- -{
- - INTERNAL_SYSCALL_DECL (err);
- - return INTERNAL_SYSCALL (time, err, 1, t);
- -}
- -
- -#endif
- only in patch2:
- unchanged:
- --- a/sysdeps/unix/sysv/linux/x86_64/sysdep.h
- +++ b/sysdeps/unix/sysv/linux/x86_64/sysdep.h
- @@ -252,6 +252,7 @@
- # undef INTERNAL_SYSCALL_ERRNO
- # define INTERNAL_SYSCALL_ERRNO(val, err) (-(val))
-
- +# if 0 /* for Graphene, never do vsyscall */
- # ifdef SHARED
- # define INLINE_VSYSCALL(name, nr, args...) \
- ({ \
- @@ -300,12 +301,13 @@
- v_ret; \
- })
-
- -# else
- -# 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
- +# endif
- +
- +# define INLINE_VSYSCALL(name, nr_args...) \
- + INLINE_SYSCALL (name, ##nr_args)
- +# define INTERNAL_VSYSCALL(name, err, nr_args...) \
- + INTERNAL_SYSCALL (name, err, ##nr_args)
-
- # define LOAD_ARGS_0()
- # define LOAD_REGS_0
|