This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC 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: PC-relative TLS support


On Wed, Aug 21, 2019 at 09:55:28PM +0930, Alan Modra wrote:
> On Mon, Aug 19, 2019 at 07:45:19AM -0500, Segher Boessenkool wrote:
> > But if you think we can remove the !TARGET_TLS_MARKERS everywhere it
> > is relevant at all, now is the time, patches very welcome, it would be
> > a nice cleanup :-)  Needs testing everywhere of course, but now is
> > stage 1 :-)
> 
> This patch removes !TARGET_TLS_MARKERS support.  -mtls-markers (and
> -mno-tls-markers) disappear as valid options too, because I figure
> they haven't been used too much except by people testing the
> compiler.  Bootstrapped and regression tested powerpc64le-linux and
> powerpc-ibm-aix7.1.3.0 (on gcc111).  I believe powerpc*-darwin doesn't
> support TLS.
> 
> Requiring an 8 year old binutils-2.20 shouldn't be that onerous.
> 
> Note that this patch doesn't remove the configure test to set
> HAVE_AS_TLS_MARKERS.  I was wondering whether I ought to hook that
> into a "sorry, your assembler is too old" error?

https://gcc.gnu.org/ml/gcc-patches/2019-08/msg01487.html

I should have pinged this before now, and really I think the following
additional patch makes more sense than any sort of sorry message.
Mostly people will be running the assembler anyway so will discover
quickly that their assembler is too old.

	* configure.ac (HAVE_AS_TLS_MARKERS): Delete test.
	* configure: Regenerate.
	* config.in: Regenerate.

diff --git a/gcc/configure.ac b/gcc/configure.ac
index 5f32fd4d5e4..44d816630e9 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -4811,12 +4811,6 @@ LCF0:
       [AC_DEFINE(HAVE_AS_GNU_ATTRIBUTE, 1,
 	  [Define if your assembler supports .gnu_attribute.])])
 
-    gcc_GAS_CHECK_FEATURE([tls marker support],
-      gcc_cv_as_powerpc_tls_markers, [2,20,0],,
-      [ bl __tls_get_addr(x@tlsgd)],,
-      [AC_DEFINE(HAVE_AS_TLS_MARKERS, 1,
-	  [Define if your assembler supports arg info for __tls_get_addr.])])
-
     gcc_GAS_CHECK_FEATURE([prologue entry point marker support],
       gcc_cv_as_powerpc_entry_markers, [2,26,0],-a64 --fatal-warnings,
       [ .reloc .,R_PPC64_ENTRY; nop],,

> 	* config/rs6000/rs6000-protos.h (rs6000_output_tlsargs): Delete.
> 	* config/rs6000/rs6000.c (rs6000_output_tlsargs): Delete.
> 	(rs6000_legitimize_tls_address): Remove !TARGET_TLS_MARKERS code.
> 	(rs6000_call_template_1): Delete TARGET_TLS_MARKERS test and
> 	allow other UNSPECs besides UNSPEC_TLSGD and UNSPEC_TLSLD.
> 	(rs6000_indirect_call_template_1): Likewise.
> 	(rs6000_pltseq_template): Likewise.
> 	(rs6000_opt_vars): Remove "tls-markers" entry.
> 	* config/rs6000/rs6000.h (TARGET_TLS_MARKERS): Don't define.
> 	(IS_NOMARK_TLSGETADDR): Likewise.
> 	* config/rs6000/rs6000.md (tls_gd<bits>): Replace TARGET_TLS_MARKERS
> 	with !TARGET_XCOFF.
> 	(tls_gd_high<bits>, tls_gd_low<bits>): Likewise.
> 	(tls_ld<bits>, tls_ld_high<bits>, tls_ld_low<bits>): Likewise.
> 	(pltseq_plt_pcrel<mode>): Likewise.
> 	(call_value_local32): Remove IS_NOMARK_TLSGETADDR predicate test.
> 	(call_value_local64): Likewise.
> 	(call_value_indirect_nonlocal_sysv<mode>): Remove IS_NOMARK_TLSGETADDR
> 	output and length attribute sub-expression.
> 	(call_value_nonlocal_sysv<mode>),
> 	(call_value_nonlocal_sysv_secure<mode>),
> 	(call_value_local_aix<mode>, call_value_nonlocal_aix<mode>),
> 	(call_value_indirect_aix<mode>, call_value_indirect_elfv2<mode>),
> 	(call_value_indirect_pcrel<mode>): Likewise.
> 	* config/rs6000/rs6000.opt (mtls-markers): Delete.
> 	* doc/install.texi (powerpc-*-*): Require binutils-2.20.

-- 
Alan Modra
Australia Development Lab, IBM


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