On Tue, Feb 21, 2012 at 9:51 AM, H. Peter Anvin <hpa@xxxxxxxxx> wrote: > On 02/21/2012 08:52 AM, Andrew Lutomirski wrote: >>> >>> >>> What about non-glibc? >> >> >> IMO non-glibc users should just call __vdso_clock_gettime, etc. >> Currently, code like: >> >> if (clock_gettime(whatever) == -1) >> handle_the_error(); >> >> is correct when linked against glibc but incorrect when linked >> directly against the vdso. >> > > The issue is what uclibc, Bionic, etc. actually do. AFAICS Bionic only works on x86-32 and calls clock_gettime via hardcoded int 0x80, written in assembly (!). uclibc calls __vdso_getcpu and does not seem to use the other vdso calls. On a cursory inspection, klibc uses neither the vsyscall page nor the vdso. I doubt that there's any existing libc replacement that uses the non-prefixed vdso entries and that already works on x32 -- that would be impressive. I'm not suggesting changing anything in the x86-64 vdso. uclibc hardcodes a call to the vsyscall gettimeofday implementation in its locking primitives, which probably gives terrible performance, but that's a separate issue. I think do_emulate_vsyscall should send a segfault if called by an x32 task -- there's some security benefit to doing so, and there's unlikely to be any downside. --Andy -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html