[PATCH 00/13] nptl: Fix Race conditions in pthread cancellation (BZ#12683)
Rich Felker
dalias@libc.org
Sun Oct 11 16:28:00 GMT 2015
On Thu, Oct 08, 2015 at 03:08:27PM +0200, Florian Weimer wrote:
> On 10/07/2015 11:01 PM, Roland McGrath wrote:
> >> My mistake, I have it changed in the initial cover letter, but I forgot
> >> to re-add when I had to rewrite it. And my understanding is for ILP32
> >> sizeof(long int) is the same as the sizeof(void*).
> >
> > No reason to assume that. Use uintptr_t.
>
> This type still wouldn't be correct if we ever end up with a 32-on-64
> platform which is mostly implemented in userspace. It would have 32-bit
> function pointers, but the vdso page would still be outside the first 4
> GiB of the address space.
The "P" in ILP32 means "pointer". I don't think you can call such a
platorm ILP32. Certainly lots of things many people would want to work
can't work -- backtraces, introspective profiling, etc. would all
break if there are valid userspace pointers that don't actually fit in
the pointer type.
IMO the right solution when implementing such a thing (32-on-64
implemented in userspace) is for the userspace runtime not to use the
vdso or to manually make a copy/remapping of the vdso in addressible
memory. Or if it's just "mostly in userspace" then the kernel can map
the vdso at the right place.
Rich
More information about the Libc-alpha
mailing list