From dca7e570a58f88596267d57cd32ce11b4681252b Mon Sep 17 00:00:00 2001 From: Jim Wilson Date: Thu, 9 Jan 2020 01:04:45 +0000 Subject: [PATCH] RISC-V: Disable use of TLS copy relocs. Musl and lld don't support TLS copy relocs, and don't want to add support for this feature which is unique to RISC-V. Only GNU ld and glibc support them. In the pasbi discussion, people have pointed out various problems with using them, so we are deprecating them. There doesn't seem to be an ABI break from dropping them so this patch modifies gcc to stop creating them. I'm using an ifdef for now in case a problem turns up and the code has to be re-enabled. The plan is to add an initial to local exec relaxation as a replacement, though this has not been defined or implemented yet. gcc/ * config/riscv/riscv.c (riscv_legitimize_tls_address): Ifdef out use of TLS_MODEL_LOCAL_EXEC when not pic. From-SVN: r280025 --- gcc/ChangeLog | 5 +++++ gcc/config/riscv/riscv.c | 3 +++ 2 files changed, 8 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 838f564ca90..4587da982b4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2020-01-08 Jim Wilson + + * config/riscv/riscv.c (riscv_legitimize_tls_address): Ifdef out + use of TLS_MODEL_LOCAL_EXEC when not pic. + 2020-01-08 David Malcolm * hash-map-tests.c (selftest::test_map_of_strings_to_int): Fix diff --git a/gcc/config/riscv/riscv.c b/gcc/config/riscv/riscv.c index 3e0bedaf145..4ba811126fe 100644 --- a/gcc/config/riscv/riscv.c +++ b/gcc/config/riscv/riscv.c @@ -1257,9 +1257,12 @@ riscv_legitimize_tls_address (rtx loc) rtx dest, tp, tmp; enum tls_model model = SYMBOL_REF_TLS_MODEL (loc); +#if 0 + /* TLS copy relocs are now deprecated and should not be used. */ /* Since we support TLS copy relocs, non-PIC TLS accesses may all use LE. */ if (!flag_pic) model = TLS_MODEL_LOCAL_EXEC; +#endif switch (model) { -- 2.30.2