musl/arch/arm
Rich Felker bf14ef193b re-enable vdso clock_gettime on arm (32-bit) with workaround
commit 4486c579cb disabled vdso
clock_gettime on arm due to a Linux kernel bug that was not understood
at the time, whereby the vdso function silently produced
catastrophically wrong results on some systems.

since then, the bug was tracked down to the way the arm kernel
disabled use of vdso clock_gettime on kernels where the necessary
timer was not available or was disabled. it simply patched out the
symbols, but it only did this for the legacy time32 functions, and
left the time64 function in place but non-operational. kernel commit
4405bdf3c57ec28d606bdf5325f1167505bfdcd4 (first present in 5.8)
provided the fix.

if this were a bug that impacted all users of the broken kernel
versions, we could probably ignore it and assume it had been patched
or replaced. however, it's very possible that these kernels appear in
the wild in devices running time32 userspace (glibc, musl 1.1.x, or
some other environment) where they appear to work fine, but where our
new binaries would fail catastrophically if we used the time64 vdso
function.

since the kernel has not (yet?) given us a way to probe for the
working time64 vdso function semantically, we work around the problem
by refusing to use the time64 one unless the time32 one is also
present. this will revert to not using vdso at all if the time32 one
is ever removed, but at least that's safe against wrong results and is
just a missed optimization.
2022-09-19 13:21:54 -04:00
..
bits bits/syscall.h: add landlock syscalls from linux v5.13 2022-03-08 17:21:14 -05:00
arch.mak switch all existing 32-bit archs to 64-bit time_t 2019-11-02 18:30:56 -04:00
atomic_arch.h fix build failure on arm building C code in thumb1 mode 2019-07-15 15:33:12 -04:00
crt_arch.h add .text section directive to all crt_arch.h files missing it 2015-05-22 01:50:05 -04:00
kstat.h decouple struct stat from kernel type 2019-07-18 19:38:12 -04:00
pthread_arch.h deduplicate __pthread_self thread pointer adjustment out of each arch 2020-08-27 18:36:45 -04:00
reloc.h remove use of endian.h from arch reloc.h headers, clean up 2019-10-17 16:06:12 -04:00
syscall_arch.h re-enable vdso clock_gettime on arm (32-bit) with workaround 2022-09-19 13:21:54 -04:00