mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-03 18:31:04 +00:00
d44a052c49
In my powerpc32 testing I've observed misc/test-gettimebasefreq failing. This is a glibc build (soft-float, though that's not relevant here) without any --with-cpu and without any special configuration of the default CPU for GCC either. In particular, it's one not using sysdeps/powerpc/powerpc32/power4/hp-timing.h (although in fact the processor I'm using for testing is POWER4-based), so hp_timing_t is 32-bit not 64-bit. But the VDSO call being used by INTERNAL_VSYSCALL_NO_SYSCALL_FALLBACK is generating a 64-bit result (high part in r3, low part in r4). The code extracting that result, however, expects a result of the type hp_timing_t as passed to INTERNAL_VSYSCALL_NO_SYSCALL_FALLBACK, meaning that only r3 (= 0) is used and the value in r4 is ignored. This patch fixes this by always using uint64_t as the type in INTERNAL_VSYSCALL_NO_SYSCALL_FALLBACK - reflecting the actual ABI (unconditional in the kernel) of that VDSO call. This is the minimal change for this issue - no check for overflow, no change of the type of the timebase_freq variable or the return type of __get_clockfreq to something other than hp_timing_t (such a change would simply move the implicit conversions to the over callers of that function), no change to hp_timing_t itself. Tested for powerpc32 soft float. [BZ #17263] * sysdeps/unix/sysv/linux/powerpc/get_clockfreq.c: Include <stdint.h>. (__get_clockfreq): Use uint64_t instead of hp_timing_t in INTERNAL_VSYSCALL_NO_SYSCALL_FALLBACK call. |
||
---|---|---|
.. | ||
bits | ||
powerpc32 | ||
powerpc64 | ||
sys | ||
arch-fork.h | ||
chown.c | ||
configure | ||
configure.ac | ||
dl-brk.S | ||
dl-cache.h | ||
dl-static.c | ||
dl-sysdep.c | ||
get_clockfreq.c | ||
get_timebase_freq.c | ||
getdents64.c | ||
getmsg.c | ||
getrlimit64.c | ||
gettimeofday.c | ||
Implies | ||
init-first.c | ||
ioctl.c | ||
ipc_priv.h | ||
kernel_termios.h | ||
kernel-features.h | ||
lchown.S | ||
ldconfig.h | ||
ldd-rewrite.sed | ||
ldsodefs.h | ||
libc-start.c | ||
lowlevellock.h | ||
Makefile | ||
nldbl-abi.h | ||
oldgetrlimit64.c | ||
profil-counter.h | ||
pt-longjmp.c | ||
pthread_attr_setstack.c | ||
pthread_attr_setstacksize.c | ||
pthread_spin_unlock.c | ||
putmsg.c | ||
readdir64_r.c | ||
readdir64.c | ||
readelflib.c | ||
rt-sysdep.c | ||
sched_getcpu.c | ||
sem_post.c | ||
setrlimit.c | ||
sigcontextinfo.h | ||
syscall.S | ||
syscalls.list | ||
sysdep.c | ||
test-gettimebasefreq.c | ||
time.c | ||
Versions |