mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-27 03:41:23 +08:00
* sysdeps/unix/sysv/linux/x86_64/libc-start.c
(_libc_vdso_platform_setup): Mangle function pointers before storing them. * sysdeps/unix/sysv/linux/x86_64/sysdep.h (INLINE_VSYSCALL): Demangle vdso pointer before use. (INTERNAL_VSYSCALL): Likewise. * elf/cache.c (primes): Mark as const. Noted by Roland McGrath.
This commit is contained in:
parent
974a1f0fb2
commit
3c87d79db7
12
ChangeLog
12
ChangeLog
@ -1,3 +1,15 @@
|
|||||||
|
2007-08-12 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* sysdeps/unix/sysv/linux/x86_64/libc-start.c
|
||||||
|
(_libc_vdso_platform_setup): Mangle function pointers before storing
|
||||||
|
them.
|
||||||
|
* sysdeps/unix/sysv/linux/x86_64/sysdep.h (INLINE_VSYSCALL):
|
||||||
|
Demangle vdso pointer before use.
|
||||||
|
(INTERNAL_VSYSCALL): Likewise.
|
||||||
|
|
||||||
|
* elf/cache.c (primes): Mark as const.
|
||||||
|
Noted by Roland McGrath.
|
||||||
|
|
||||||
2007-08-01 Andreas Jaeger <aj@suse.de>
|
2007-08-01 Andreas Jaeger <aj@suse.de>
|
||||||
Jakub Jelinek <jakub@redhat.com>
|
Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
@ -547,7 +547,7 @@ struct aux_cache_file
|
|||||||
/* After this the string table of size len_strings is found. */
|
/* After this the string table of size len_strings is found. */
|
||||||
};
|
};
|
||||||
|
|
||||||
static unsigned int primes[] =
|
static const unsigned int primes[] =
|
||||||
{
|
{
|
||||||
1021, 2039, 4093, 8191, 16381, 32749, 65521, 131071, 262139,
|
1021, 2039, 4093, 8191, 16381, 32749, 65521, 131071, 262139,
|
||||||
524287, 1048573, 2097143, 4194301, 8388593, 16777213, 33554393,
|
524287, 1048573, 2097143, 4194301, 8388593, 16777213, 33554393,
|
||||||
|
@ -30,9 +30,13 @@ _libc_vdso_platform_setup (void)
|
|||||||
{
|
{
|
||||||
PREPARE_VERSION (linux26, "LINUX_2.6", 61765110);
|
PREPARE_VERSION (linux26, "LINUX_2.6", 61765110);
|
||||||
|
|
||||||
__vdso_gettimeofday = _dl_vdso_vsym ("gettimeofday", &linux26);
|
void *p = _dl_vdso_vsym ("gettimeofday", &linux26);
|
||||||
|
PTR_MANGLE (p);
|
||||||
|
__vdso_gettimeofday = p;
|
||||||
|
|
||||||
__vdso_clock_gettime = _dl_vdso_vsym ("clock_gettime", &linux26);
|
p = _dl_vdso_vsym ("clock_gettime", &linux26);
|
||||||
|
PTR_MANGLE (p);
|
||||||
|
__vdso_clock_gettime = p;
|
||||||
}
|
}
|
||||||
|
|
||||||
# define VDSO_SETUP _libc_vdso_platform_setup
|
# define VDSO_SETUP _libc_vdso_platform_setup
|
||||||
|
@ -264,9 +264,11 @@
|
|||||||
INTERNAL_SYSCALL_DECL (sc_err); \
|
INTERNAL_SYSCALL_DECL (sc_err); \
|
||||||
long int sc_ret; \
|
long int sc_ret; \
|
||||||
\
|
\
|
||||||
if (__vdso_##name != NULL) \
|
__typeof (__vdso_##name) vdsop = __vdso_##name; \
|
||||||
|
PTR_DEMANGLE (vdsop); \
|
||||||
|
if (vdsop != NULL) \
|
||||||
{ \
|
{ \
|
||||||
sc_ret = __vdso_##name (args); \
|
sc_ret = vdsop (args); \
|
||||||
if (!INTERNAL_SYSCALL_ERROR_P (sc_ret, sc_err)) \
|
if (!INTERNAL_SYSCALL_ERROR_P (sc_ret, sc_err)) \
|
||||||
goto out; \
|
goto out; \
|
||||||
if (INTERNAL_SYSCALL_ERRNO (sc_ret, sc_err) != ENOSYS) \
|
if (INTERNAL_SYSCALL_ERRNO (sc_ret, sc_err) != ENOSYS) \
|
||||||
@ -288,9 +290,11 @@
|
|||||||
__label__ out; \
|
__label__ out; \
|
||||||
long int v_ret; \
|
long int v_ret; \
|
||||||
\
|
\
|
||||||
if (__vdso_##name != NULL) \
|
__typeof (__vdso_##name) vdsop = __vdso_##name; \
|
||||||
|
PTR_DEMANGLE (vdsop); \
|
||||||
|
if (vdsop != NULL) \
|
||||||
{ \
|
{ \
|
||||||
v_ret = __vdso_##name (args); \
|
v_ret = vdsop (args); \
|
||||||
if (!INTERNAL_SYSCALL_ERROR_P (v_ret, err) \
|
if (!INTERNAL_SYSCALL_ERROR_P (v_ret, err) \
|
||||||
|| INTERNAL_SYSCALL_ERRNO (v_ret, err) != ENOSYS) \
|
|| INTERNAL_SYSCALL_ERRNO (v_ret, err) != ENOSYS) \
|
||||||
goto out; \
|
goto out; \
|
||||||
|
Loading…
Reference in New Issue
Block a user