This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Fix libgomp crash without TLS (PR42616)
- From: Varvara Rainchik <varvara dot s dot rainchik at gmail dot com>
- To: Jakub Jelinek <jakub at redhat dot com>
- Cc: Richard Henderson <rth at redhat dot com>, gcc-patches at gcc dot gnu dot org
- Date: Mon, 13 Oct 2014 14:48:57 +0400
- Subject: Re: Fix libgomp crash without TLS (PR42616)
- Authentication-results: sourceware.org; auth=none
- References: <CAAp9h93CTb_oZ-y4-GgJUN7wTkjUajWMzGD+eyY43wJHQFw5eg at mail dot gmail dot com> <5400BB29 dot 2010205 at redhat dot com> <20140901105136 dot GM17454 at tucnak dot redhat dot com> <CAAp9h93RHkPQNCc_U1Vp+aoFEi2KcRhgQzsaVzAZ5mEyutMjAw at mail dot gmail dot com> <CAAp9h93LV3g-VLoEjD3x7nfHOvcxYJjqR7RXF7Y1CKAm-2j8XA at mail dot gmail dot com> <CAAp9h93vx+cM=sNNRzKd0FNABrt96TEmRoU=WOEZnyYrm6zkqQ at mail dot gmail dot com> <CAAp9h91Gd6nauh5Vm4bStXwKcMDdc_fDs+xHtZa1c7DziCpv3g at mail dot gmail dot com> <20140930095219 dot GA1986 at tucnak dot redhat dot com> <542AC0F4 dot 9090808 at redhat dot com> <CAAp9h92JrSYjicz1A2ysfNniXAVk2LkE9WsLNiGXQehgS2yKdQ at mail dot gmail dot com> <20141007071125 dot GE1986 at tucnak dot redhat dot com>
> Now, I wonder on which OS and why does config/tls.m4 CHECK_GCC_TLS
> actually fail? Can you figure that out?
>
On Android check passes with --disable-tls (standard while building
gcc for Android as TLS is not supported in bionic) and fails with
--enable-tls (i686-linux-android/libgomp/conftest.c:32: undefined
reference to `___tls_get_addr'). So, HAVE_TLS is not defined in both
cases.
> If we get rid of HAVE_TLS code altogether, we might lose support of
> some very old OSes, e.g. some Linux distros with a recent gcc and binutils
> (so that emutls isn't used), but very old glibc (that doesn't support
> TLS or supports it incorrectly, think of pre-2002 glibc). So, if we get
> rid of !HAVE_TLS code in libgomp, it would be nice if config/tls.m4 detected
> it properly and we'd just fail at configure time.
How can we check this in config/tls.m4? Can we just combine tests on
TLS and emutls? E.g. check whether HAVE_TLS and USE_EMUTLS are both
defined.
> And if we don't, just make sure that on Android, Darwin and/or M$Win (or
> whatever other OS you had in mind which does support pthreads, but doesn't
> support native TLS) find out why HAVE_AS_TLS is not defined (guess
> config.log should explain that).
HAVE_AS_TLS is also not defined for Android as it depends on --enable-tls.