This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [gcc-3.3] patch for IA-64 TLS abort
- From: Gabriel Dos Reis <gdr at integrable-solutions dot net>
- To: James E Wilson <wilson at specifixinc dot com>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: 29 Mar 2005 03:08:44 +0200
- Subject: Re: [gcc-3.3] patch for IA-64 TLS abort
- Organization: Integrable Solutions
- References: <1112049541.7977.62.camel@aretha.corp.specifixinc.com>
James E Wilson <wilson@specifixinc.com> writes:
| This is for PR 20286, which is an IA-64 abort with a testcase that
| redefines an external __thread variable as static __thread.
|
| This testcase hits the abort in ia64_encode_section_info which aborts if
| a thread variable changes state. This is intended to catch accidental
| transitions between thread data and small data. In this case, it is
| accidentally catching an internal TLS transition from INITIAL_EXEC to
| LOCAL_EXEC, which is an allowable transition. This patch fixes the
| problem by only calling the abort if either state involves small data.
|
| This patch applies only to gcc-3.3. This was fixed in gcc-3.4 by using
| default_encode_section_info, which is not present in gcc-3.3. Since
| pulling all of this into gcc-3.3 is a rather large patch, including
| non-IA-64 changes, I believe it is better to just add a gcc-3.3 specific
| fix to the ia64.c file.
|
| This was tested with a bootstrap and make check with and without the
| patch on ia64-linux using the top of the gcc-3.3 branch. There were no
| regressions.
It is OK. Thanks for have looked into this.
-- Gaby