Messages in this thread | | | Date | Wed, 17 Jun 2009 22:27:53 +1000 | From | Paul Mackerras <> | Subject | Re: [PATCH 6/6] perf_counter: tools: Makefile tweaks for 64-bit powerpc |
| |
Ingo Molnar writes:
> ah, it does this: > > /* > * This is here because we used to use l64 for 64bit powerpc > * and we don't want to impact user mode with our change to ll64 > * in the kernel. > */ > #if defined(__powerpc64__) && !defined(__KERNEL__) > # include <asm-generic/int-l64.h> > #else > # include <asm-generic/int-ll64.h> > #endif > > That's crappy really.
We were concerned that changing the userland-visible type of __u64 from unsigned long to unsigned long long, etc., would be breaking the ABI, even if only in a small way - I thought it could possibly change C++ mangled function names, for instance, and it would cause fresh compile warnings on existing user code that prints __u64 with %lx, which has always been the correct thing to do on ppc64.
A counter-argument would be, I guess, that __u64 et al. are purely for use in describing the kernel/user interface, so we have a little more latitude than with the type of e.g. u_int64_t. I dunno. I don't recall getting much of an answer from the glibc guys about what they thought of the idea of changing it.
Anyway, of the 64-bit architectures, alpha, ia64, and mips64 also have __u64 as unsigned long in userspace, so this issue will still crop up even if we change it on powerpc.
Paul.
| |