Kristof Beyls
4e1076f140
Fix PR22408 - LLVM producing AArch64 TLS relocations that GNU linkers cannot handle yet.
...
As is described at http://llvm.org/bugs/show_bug.cgi?id=22408 , the GNU linkers
ld.bfd and ld.gold currently only support a subset of the whole range of AArch64
ELF TLS relocations. Furthermore, they assume that some of the code sequences to
access thread-local variables are produced in a very specific sequence.
When the sequence is not as the linker expects, it can silently mis-relaxe/mis-optimize
the instructions.
Even if that wouldn't be the case, it's good to produce the exact sequence,
as that ensures that linkers can perform optimizing relaxations.
This patch:
* implements support for 16MiB TLS area size instead of 4GiB TLS area size. Ideally clang
would grow an -mtls-size option to allow support for both, but that's not part of this patch.
* by default doesn't produce local dynamic access patterns, as even modern ld.bfd and ld.gold
linkers do not support the associated relocations. An option (-aarch64-elf-ldtls-generation)
is added to enable generation of local dynamic code sequence, but is off by default.
* makes sure that the exact expected code sequence for local dynamic and general dynamic
accesses is produced, by making use of a new pseudo instruction. The patch also removes
two (AArch64ISD::TLSDESC_BLR, AArch64ISD::TLSDESC_CALL) pre-existing AArch64-specific pseudo
SDNode instructions that are superseded by the new one (TLSDESC_CALLSEQ).
llvm-svn: 231227
2015-03-04 09:12:08 +00:00
..
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-08-29 01:31:42 +00:00
2014-09-11 05:10:28 +00:00
2015-03-03 17:24:31 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2014-10-17 17:06:31 +00:00
2014-07-23 12:58:11 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-12-15 19:07:53 +00:00
2015-02-13 10:48:30 +00:00
2015-02-27 21:17:42 +00:00
2014-09-02 09:33:56 +00:00
2014-12-08 17:54:58 +00:00
2014-05-24 12:50:23 +00:00
2015-03-03 17:24:31 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-30 08:59:55 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 19:29:02 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-12-03 17:49:26 +00:00
2014-08-27 16:16:04 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-08-21 18:10:07 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-05-30 10:09:59 +00:00
2014-05-30 05:58:19 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-06-09 01:25:51 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-07-23 12:58:11 +00:00
2015-02-27 21:17:42 +00:00
2014-07-23 12:58:11 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-07-10 03:41:50 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2014-08-21 20:57:57 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 18:32:11 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 18:32:11 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 18:32:11 +00:00
2014-08-21 20:57:57 +00:00
2015-02-27 18:32:11 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 18:32:11 +00:00
2015-02-27 21:17:42 +00:00
2014-12-15 19:07:53 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2015-02-02 17:55:57 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-30 10:09:59 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 19:29:02 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-06-09 01:54:00 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-12-15 19:07:53 +00:00
2014-12-15 19:07:53 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2015-02-02 17:55:57 +00:00
2014-05-24 12:50:23 +00:00
2014-08-04 05:10:33 +00:00
2014-05-24 12:50:23 +00:00
2014-12-01 20:59:00 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2014-07-31 04:10:43 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-01-30 02:13:53 +00:00
2015-02-27 21:17:42 +00:00
2015-02-13 10:48:30 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-07-23 20:46:32 +00:00
2014-09-11 17:34:19 +00:00
2014-05-30 05:58:19 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-05-30 05:58:19 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 21:17:42 +00:00
2014-12-02 21:36:24 +00:00
2015-02-27 18:32:11 +00:00
2014-12-15 19:07:53 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 19:29:02 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-03-04 09:12:08 +00:00
2015-03-04 09:12:08 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-12-02 23:13:39 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-07-17 10:51:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-08-28 22:08:28 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-15 12:18:12 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 18:32:11 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-05-27 16:50:03 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-12-01 20:52:32 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-12-01 18:43:53 +00:00
2014-11-07 02:50:00 +00:00
2014-06-17 11:31:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-11-03 15:28:40 +00:00
2015-02-27 21:17:42 +00:00
2014-06-13 14:24:07 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-12-15 19:07:53 +00:00
2015-02-27 21:17:42 +00:00
2014-06-15 09:27:15 +00:00
2015-02-27 21:17:42 +00:00
2014-08-29 15:34:58 +00:00
2015-02-04 13:31:29 +00:00
2015-02-27 21:17:42 +00:00
2014-05-30 10:09:59 +00:00
2014-08-08 08:27:44 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 19:29:02 +00:00
2014-05-24 12:42:26 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 18:32:11 +00:00
2015-02-27 18:32:11 +00:00
2015-02-27 18:32:11 +00:00
2015-02-27 18:32:11 +00:00
2015-02-27 18:32:11 +00:00
2015-02-27 18:32:11 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 18:32:11 +00:00
2015-02-27 21:17:42 +00:00
2014-11-11 23:10:44 +00:00
2015-02-27 18:32:11 +00:00
2015-02-27 18:32:11 +00:00
2015-02-27 18:32:11 +00:00
2015-02-27 18:32:11 +00:00
2015-02-27 18:32:11 +00:00
2015-02-27 18:32:11 +00:00
2015-02-27 18:32:11 +00:00
2015-02-27 18:32:11 +00:00
2014-10-12 06:47:47 +00:00
2015-02-27 18:32:11 +00:00
2015-02-27 18:32:11 +00:00
2015-02-27 18:32:11 +00:00
2015-02-27 18:32:11 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:42:26 +00:00
2014-11-21 06:39:58 +00:00
2014-05-30 10:09:59 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-08-27 16:16:04 +00:00
2015-02-27 21:17:42 +00:00
2014-08-27 16:16:04 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-10-24 00:03:46 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 18:32:11 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-12-02 23:53:43 +00:00
2014-12-02 23:53:43 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 21:17:42 +00:00
2014-06-11 06:44:53 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2014-07-12 21:20:49 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 19:29:02 +00:00
2014-07-07 21:37:51 +00:00
2014-05-24 12:50:23 +00:00
2015-02-16 18:10:47 +00:00
2014-09-02 13:54:53 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:42:26 +00:00
2014-05-24 12:42:26 +00:00
2014-06-24 16:21:38 +00:00
2015-02-27 19:29:02 +00:00
2014-10-21 01:17:30 +00:00
2015-02-24 18:52:04 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-10-31 02:35:34 +00:00
2014-06-09 22:42:55 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:42:26 +00:00
2014-12-02 18:09:51 +00:00
2015-02-27 21:17:42 +00:00
2014-11-04 22:20:07 +00:00
2014-08-07 21:40:58 +00:00
2014-05-24 12:50:23 +00:00
2014-06-27 21:05:09 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2015-03-03 17:31:01 +00:00
2014-08-07 21:40:58 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2014-07-24 02:05:42 +00:00
2014-05-24 12:50:23 +00:00
2015-02-02 17:55:57 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-01-21 23:17:19 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2014-10-21 20:47:22 +00:00
2015-02-27 21:17:42 +00:00
2014-09-12 17:40:39 +00:00
2015-02-27 21:17:42 +00:00
2014-08-20 10:40:20 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:42:26 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 21:17:42 +00:00
2015-02-04 13:31:29 +00:00
2014-05-24 12:42:26 +00:00
2015-02-27 21:17:42 +00:00
2014-10-16 16:41:15 +00:00
2014-05-24 12:50:23 +00:00
2015-02-08 00:50:47 +00:00
2015-02-27 21:17:42 +00:00
2014-05-24 12:50:23 +00:00
2014-05-24 12:50:23 +00:00
2015-02-27 19:29:02 +00:00
2015-02-27 21:17:42 +00:00
2014-08-18 12:42:15 +00:00
2014-08-13 23:23:58 +00:00
2015-02-27 21:17:42 +00:00
2014-10-30 23:46:50 +00:00
2015-02-27 21:17:42 +00:00
2015-02-27 19:29:02 +00:00