Fangrui Song fb3c1b3de5 [ELF] Reject local-exec TLS relocations for -shared
For x86-64, D33100 added a diagnostic for local-exec TLS relocations referencing a preemptible symbol.

This patch generalizes it to non-preemptible symbols (see `-Bsymbolic` in `tls.s`)
on all targets.

Local-exec TLS relocations resolve to offsets relative to a fixed point within
the static TLS block, which are only meaningful for the executable.

With this change, `clang -fpic -shared -fuse-ld=bfd a.c` on the following example will be flagged for AArch64/ARM/i386/x86-64/RISC-V

```
static __attribute__((tls_model("local-exec"))) __thread long TlsVar = 42;
long bump() { return ++TlsVar; }
```

Note, in GNU ld, at least arm, riscv and x86's ports have the similar
diagnostics, but aarch64 and ppc64 do not error.

Differential Revision: https://reviews.llvm.org/D93331
2020-12-21 08:47:04 -08:00
..
2018-07-05 16:03:20 +00:00
2020-06-01 10:19:41 -07:00
2019-07-22 11:37:03 +00:00
2020-03-27 11:56:02 -07:00
2020-03-27 11:56:02 -07:00
2020-03-31 12:41:18 +01:00
2020-07-23 08:16:01 -07:00
2019-09-07 10:42:11 +00:00
2019-09-07 10:42:11 +00:00
2020-03-27 11:56:02 -07:00
2020-04-13 19:32:44 -05:00
2018-08-08 14:50:33 +00:00
2018-08-08 14:50:33 +00:00
2018-08-08 14:50:33 +00:00
2020-08-07 22:08:44 -07:00
2019-09-07 10:42:11 +00:00
2020-06-01 10:19:41 -07:00
2019-07-25 07:12:23 +00:00
2019-09-07 10:42:11 +00:00
2020-06-01 10:19:41 -07:00
2019-09-07 10:42:11 +00:00
2020-06-01 10:19:41 -07:00
2020-12-01 08:59:54 -08:00
2019-02-06 01:00:49 +00:00
2019-09-07 10:42:11 +00:00