From: Adhemerval Zanella Date: Fri, 17 Oct 2025 19:13:16 +0000 (-0300) Subject: linux: Fix function point cast on vDSO handling X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a252205e1cc37e3509b1096716aff1409fbf3ac7;p=thirdparty%2Fglibc.git linux: Fix function point cast on vDSO handling There is no need to cast to avoid, both pointer already have the expected type. It fixes the clang -Wpointer-type-mismatch error: ../sysdeps/unix/sysv/linux/gettimeofday.c:43:6: error: pointer type mismatch ('int (*)(struct timeval *, void *)' and 'void *') [-Werror,-Wpointer-type-mismatch] 41 | libc_ifunc (__gettimeofday, | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 42 | GLRO(dl_vdso_gettimeofday) != NULL | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 43 | ? VDSO_IFUNC_RET (GLRO(dl_vdso_gettimeofday)) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 44 | : (void*) __gettimeofday_syscall) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./../include/libc-symbols.h:789:53: note: expanded from macro 'libc_ifunc' 789 | #define libc_ifunc(name, expr) __ifunc (name, name, expr, void, INIT_ARCH) | ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~ ./../include/libc-symbols.h:705:34: note: expanded from macro '__ifunc' 705 | __ifunc_args (type_name, name, expr, init, arg) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~ ./../include/libc-symbols.h:677:38: note: expanded from macro '__ifunc_args' 677 | __ifunc_resolver (type_name, name, expr, init, static, __VA_ARGS__); \ | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./../include/libc-symbols.h:667:33: note: expanded from macro '__ifunc_resolver' 667 | __typeof (type_name) *res = expr; \ | ^~~~ Reviewed-by: Sam James --- diff --git a/sysdeps/unix/sysv/linux/gettimeofday.c b/sysdeps/unix/sysv/linux/gettimeofday.c index e2a2155358..a6ec07fe59 100644 --- a/sysdeps/unix/sysv/linux/gettimeofday.c +++ b/sysdeps/unix/sysv/linux/gettimeofday.c @@ -41,7 +41,7 @@ __gettimeofday_syscall (struct timeval *restrict tv, void *restrict tz) libc_ifunc (__gettimeofday, GLRO(dl_vdso_gettimeofday) != NULL ? VDSO_IFUNC_RET (GLRO(dl_vdso_gettimeofday)) - : (void *) __gettimeofday_syscall) + : __gettimeofday_syscall) # else int diff --git a/sysdeps/unix/sysv/linux/powerpc/libc-vdso.h b/sysdeps/unix/sysv/linux/powerpc/libc-vdso.h index b9763554ba..82b85dbe0b 100644 --- a/sysdeps/unix/sysv/linux/powerpc/libc-vdso.h +++ b/sysdeps/unix/sysv/linux/powerpc/libc-vdso.h @@ -47,7 +47,7 @@ ({ \ static Elf64_FuncDesc vdso_opd = { .fd_toc = ~0x0 }; \ vdso_opd.fd_func = (Elf64_Addr)value; \ - &vdso_opd; \ + (void *) &vdso_opd; \ }) #else diff --git a/sysdeps/unix/sysv/linux/time.c b/sysdeps/unix/sysv/linux/time.c index 5a72481972..fc5631ea0e 100644 --- a/sysdeps/unix/sysv/linux/time.c +++ b/sysdeps/unix/sysv/linux/time.c @@ -36,7 +36,7 @@ time_syscall (time_t *t) # define INIT_ARCH() libc_ifunc (time, GLRO(dl_vdso_time) != NULL ? VDSO_IFUNC_RET (GLRO(dl_vdso_time)) - : (void *) time_syscall); + : time_syscall); # else time_t