diff options
Diffstat (limited to 'sysdeps/unix/sysv/linux/x86_64/sysdep.h')
-rw-r--r-- | sysdeps/unix/sysv/linux/x86_64/sysdep.h | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/sysdeps/unix/sysv/linux/x86_64/sysdep.h b/sysdeps/unix/sysv/linux/x86_64/sysdep.h index 61701a2869..44d5650549 100644 --- a/sysdeps/unix/sysv/linux/x86_64/sysdep.h +++ b/sysdeps/unix/sysv/linux/x86_64/sysdep.h @@ -264,9 +264,11 @@ INTERNAL_SYSCALL_DECL (sc_err); \ 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)) \ goto out; \ if (INTERNAL_SYSCALL_ERRNO (sc_ret, sc_err) != ENOSYS) \ @@ -288,9 +290,11 @@ __label__ out; \ 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) \ || INTERNAL_SYSCALL_ERRNO (v_ret, err) != ENOSYS) \ goto out; \ |