This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 00/13] nptl: Fix Race conditions in pthread cancellation (BZ#12683)


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]