I have a fix I think. I found this while working on ilp32 too. 

Thanks,
Andrew

> On Apr 1, 2014, at 8:20 PM, "Michael Hudson-Doyle" 
> <michael.hud...@canonical.com> wrote:
> 
> Hi all,
> 
> I've just filed a bug on glibc I'd love you to take a look at:
> https://sourceware.org/bugzilla/show_bug.cgi?id=16796
> 
> Here's the description to save clicking:
> 
> Hi,
> 
> There is a test in glibc (tst-tls5) that tests that
> ((uintptr_t)pthread_self())%16 is zero.  But watch this:
> 
> (t-mwhudson)mwhudson@am1:~$ cat btp.c 
> #include <stdint.h>
> #include <stdio.h>
> #include <pthread.h>
> 
> int
> main(int argc, char** argv)
> {
>        uintptr_t p = (uintptr_t)__builtin_thread_pointer();
>        uintptr_t q = (uintptr_t)pthread_self();
>        printf("p: %lx %ld\n", p, p%16);
>        printf("q: %lx %ld\n", q, q%16);
> }
> (t-mwhudson)mwhudson@am1:~$ gcc -o btp btp.c -lpthread
> (t-mwhudson)mwhudson@am1:~$ ulimit -s unlimited
> (t-mwhudson)mwhudson@am1:~$ ./btp
> p: 2000028d88 8
> q: 2000028698 8
> (t-mwhudson)mwhudson@am1:~$ ulimit -S -s 8192
> (t-mwhudson)mwhudson@am1:~$ ./btp
> p: 7f7fd086f0 0
> q: 7f7fd08000 0
> 
> So something is clearly wrong; maybe it's just that the test is too
> strict, but somehow that seems a bit unlikely.  FWIW, this doesn't
> happen if you don't link with libpthread so maaaaybe it's a bug in
> something that ends up in libpthread's .init section?
> 
> Cheers,
> mwh
> 
> _______________________________________________
> linaro-toolchain mailing list
> linaro-toolchain@lists.linaro.org
> http://lists.linaro.org/mailman/listinfo/linaro-toolchain

_______________________________________________
linaro-toolchain mailing list
linaro-toolchain@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-toolchain

Reply via email to