Alan Modra
1be5d8d3bb
PowerPC PLT speculative execution barriers
Spectre variant 2 mitigation for PowerPC and PowerPC64.
bfd/
* elf32-ppc.c (GLINK_ENTRY_SIZE): Handle speculation barrier.
(CRSETEQ, BEQCTRM): Define.
(is_nonpic_glink_stub): Don't check bctr.
(ppc_elf_link_hash_table_create): Init new ppc_elf_params field.
(ppc_elf_relax_section): Size speculation barrier.
(output_bctr): New function.
(write_glink_stub): Use output_bctr.
(ppc_elf_relocate_section): Use output_bctr for long branch stub.
(ppc_elf_finish_dynamic_symbol): Likewise.
(ppc_elf_finish_dynamic_sections): Use output_bctr.
* elf32-ppc.h (struct ppc_elf_params): Add speculate_indirect_jumps.
* elf64-ppc.c (CRSETEQ, BEQCTRM, BEQCTRLM): Define.
(GLINK_PLTRESOLVE_SIZE): Size speculation barrier.
(size_global_entry_stubs): Handle speculation barrier sizing.
(plt_stub_size): Likewise.
(output_bctr): New function.
(build_plt_stub, build_tls_get_addr_stub): Output speculation
barrier.
(ppc_build_one_stub): Likewise for ppc_stub_plt_branch.
(ppc_size_one_stub): Size speculation barrier in ppc_stub_plt_branch.
(build_global_entry_stubs): Output speculation barrier.
(ppc64_elf_build_stubs): Likewise in __glink_PLTresolve stub.
* elf64-ppc.h (struct ppc64_elf_params): Add speculate_indirect_jumps.
gold/
* options.h (speculate_indirect_jumps): New option.
* powerpc.cc (beqctrm, beqctrlm, crseteq): New insn constants.
(output_bctr): New function.
(Stub_table::plt_call_size): Add space for speculation barrier.
(Stub_table::branch_stub_size): Likewise.
(Output_data_glink::pltresolve_size): Likewise.
(Stub_table::do_write): Output speculation barriers.
ld/
* emultempl/ppc32elf.em (params): Init new field.
(OPTION_SPECULATE_INDIRECT_JUMPS): Define.
(OPTION_NO_SPECULATE_INDIRECT_JUMPS): Define.
(PARSE_AND_LIST_LONGOPTS): Handle new options.
(PARSE_AND_LIST_ARGS_CASES): Likewise.
(PARSE_AND_LIST_OPTIONS): Likewise.
* emultempl/ppc64elf.em (params): Init new field.
(OPTION_SPECULATE_INDIRECT_JUMPS): Define.
(OPTION_NO_SPECULATE_INDIRECT_JUMPS): Define.
(PARSE_AND_LIST_LONGOPTS): Handle --speculate-indirect-jumps.
(PARSE_AND_LIST_OPTIONS): Likewise.
(PARSE_AND_LIST_ARGS_CASES): Likewise.
* ld.texinfo (--no-plt-thread-safe): Correct itemx.
(--speculate-indirect-jumps): Document.
* testsuite/ld-powerpc/elfv2exe.d,
* testsuite/ld-powerpc/elfv2so.d,
* testsuite/ld-powerpc/relbrlt.d,
* testsuite/ld-powerpc/powerpc.exp: Disable plt alignment and
speculation barriers on various tests.
2018-01-17 18:52:57 +10:30
..
2017-02-28 11:59:47 +10:30
2015-11-11 19:52:52 -06:00
2018-01-03 17:49:56 +10:30
2009-03-14 09:16:01 +00:00
2009-03-14 09:16:01 +00:00
2009-03-14 09:16:01 +00:00
2009-03-14 09:32:56 +00:00
2009-03-14 09:16:01 +00:00
2009-03-14 09:15:34 +00:00
2009-03-14 09:15:34 +00:00
2009-03-14 09:32:56 +00:00
2009-03-14 09:15:34 +00:00
2009-03-14 09:15:34 +00:00
2009-03-14 09:14:30 +00:00
2013-05-10 13:08:24 +00:00
2009-03-14 09:14:30 +00:00
2009-03-14 09:14:30 +00:00
2013-05-10 13:08:24 +00:00
2009-03-14 09:14:30 +00:00
2009-03-14 09:14:30 +00:00
2013-05-10 13:08:24 +00:00
2009-03-14 09:14:30 +00:00
2009-03-14 09:35:46 +00:00
2009-03-14 09:35:46 +00:00
2009-03-14 09:35:46 +00:00
2009-03-14 09:35:46 +00:00
2009-04-16 23:07:00 +00:00
2009-04-16 23:07:00 +00:00
2009-03-14 09:35:06 +00:00
2009-03-14 09:35:06 +00:00
2009-03-14 09:35:06 +00:00
2009-04-01 20:09:03 +00:00
2009-03-14 09:35:06 +00:00
2009-03-14 09:17:32 +00:00
2009-03-14 09:17:32 +00:00
2009-03-14 09:17:32 +00:00
2009-03-14 09:17:32 +00:00
2009-03-14 09:17:32 +00:00
2009-03-14 09:17:32 +00:00
2009-03-14 09:34:27 +00:00
2009-03-14 09:34:27 +00:00
2009-03-14 09:34:27 +00:00
2009-03-14 09:34:27 +00:00
2009-03-14 09:34:27 +00:00
2009-03-14 09:34:27 +00:00
2009-03-14 09:34:27 +00:00
2009-03-14 09:34:27 +00:00
2009-06-02 18:51:34 +00:00
2009-06-02 18:51:34 +00:00
2009-06-02 18:51:34 +00:00
2009-06-02 18:51:34 +00:00
2009-06-02 18:51:34 +00:00
2009-06-02 18:51:34 +00:00
2009-03-14 09:32:33 +00:00
2009-03-14 09:32:33 +00:00
2009-03-14 09:32:33 +00:00
2009-03-14 09:32:33 +00:00
2009-03-14 09:32:33 +00:00
2009-03-14 09:32:33 +00:00
2009-03-14 09:33:39 +00:00
2009-03-14 09:33:39 +00:00
2009-03-14 09:33:39 +00:00
2009-03-14 09:33:39 +00:00
2009-03-14 09:33:39 +00:00
2009-03-14 09:33:39 +00:00
2009-03-14 09:33:39 +00:00
2009-03-14 09:33:39 +00:00
2009-03-14 09:33:39 +00:00
2009-03-14 09:33:39 +00:00
2010-01-23 12:05:33 +00:00
2010-01-23 12:05:33 +00:00
2010-01-23 12:05:33 +00:00
2009-04-01 19:27:38 +00:00
2009-04-01 19:27:38 +00:00
2009-03-14 09:18:22 +00:00
2009-03-14 09:18:22 +00:00
2009-03-14 09:18:22 +00:00
2009-03-14 09:18:22 +00:00
2009-03-14 09:18:22 +00:00
2009-03-14 09:34:27 +00:00
2009-03-14 09:34:27 +00:00
2009-03-14 09:34:27 +00:00
2009-03-14 09:35:06 +00:00
2009-03-14 09:35:06 +00:00
2009-03-14 09:35:06 +00:00
2009-03-14 09:34:27 +00:00
2009-03-14 09:34:27 +00:00
2009-03-14 09:34:27 +00:00
2009-03-14 09:34:27 +00:00
2009-03-14 09:34:27 +00:00
2009-03-14 09:34:27 +00:00
2009-03-14 09:34:27 +00:00
2009-03-14 09:34:27 +00:00
2009-03-14 09:34:27 +00:00
2009-03-14 09:34:27 +00:00
2009-03-14 09:34:27 +00:00
2009-03-14 09:34:27 +00:00
2009-03-14 09:34:27 +00:00
2009-03-14 09:34:27 +00:00
2009-03-14 09:34:27 +00:00
2009-03-14 09:34:27 +00:00
2009-03-14 09:34:27 +00:00
2009-03-14 09:34:27 +00:00
2009-03-14 09:34:27 +00:00
2009-03-14 09:34:27 +00:00
2009-03-14 09:34:27 +00:00
2009-03-14 09:34:27 +00:00
2017-11-07 17:01:16 +10:30
2017-11-07 17:01:16 +10:30
2017-11-07 17:01:16 +10:30
2017-11-07 17:01:16 +10:30
2016-06-07 22:04:38 +09:30
2010-04-01 10:02:28 +00:00
2012-10-29 09:25:53 +00:00
2010-02-08 07:09:39 +00:00
2016-06-07 22:04:38 +09:30
2014-08-22 16:52:20 +01:00
2014-08-22 16:52:20 +01:00
2014-08-22 16:52:20 +01:00
2007-06-30 00:03:40 +00:00
2007-06-30 00:03:40 +00:00
2007-06-30 00:03:40 +00:00
2007-06-30 00:03:40 +00:00
2007-06-30 00:03:40 +00:00
2016-09-26 18:04:57 +09:30
2016-09-26 18:04:57 +09:30
2016-09-26 18:04:57 +09:30
2016-09-26 18:04:57 +09:30
2016-09-26 18:04:57 +09:30
2007-06-30 00:03:40 +00:00
2008-07-26 13:10:48 +00:00
2016-09-26 18:04:57 +09:30
2007-06-30 00:03:40 +00:00
2016-09-26 18:04:57 +09:30
2008-07-26 13:10:48 +00:00
2008-07-26 13:10:48 +00:00
2016-09-26 18:04:57 +09:30
2016-09-26 18:04:57 +09:30
2007-10-25 15:20:24 +00:00
2007-10-25 15:20:24 +00:00
2007-10-25 15:20:24 +00:00
2016-09-26 18:04:57 +09:30
2016-09-26 18:04:57 +09:30
2007-10-25 15:20:24 +00:00
2008-10-10 20:55:36 +00:00
2008-10-10 20:55:36 +00:00
2008-10-10 20:55:36 +00:00
2008-10-10 20:55:36 +00:00
2015-04-23 09:49:19 +09:30
2014-07-08 19:42:03 +09:30
2016-12-03 21:00:01 +10:30
2016-12-03 21:00:01 +10:30
2016-12-03 21:00:01 +10:30
2016-12-03 21:00:01 +10:30
2016-12-03 21:00:01 +10:30
2014-03-05 19:57:39 +10:30
2014-03-05 19:57:39 +10:30
2015-04-23 09:49:19 +09:30
2014-03-05 19:57:39 +10:30
2013-10-30 13:44:10 +10:30
2018-01-17 18:52:57 +10:30
2018-01-17 18:52:57 +10:30
2018-01-03 17:49:56 +10:30
2014-07-02 18:16:14 +09:30
2014-03-27 00:49:38 +10:30
2014-03-27 00:49:38 +10:30
2014-03-27 00:49:38 +10:30
2016-12-03 21:00:01 +10:30
2009-09-21 11:51:02 +00:00
2012-11-23 03:28:13 +00:00
2006-10-24 13:29:37 +00:00
2012-08-28 20:29:19 +00:00
2012-08-28 20:29:19 +00:00
2012-08-28 20:29:19 +00:00
2013-05-21 01:37:41 +00:00
2018-01-17 18:52:57 +10:30
2017-07-07 23:53:18 +09:30
2017-07-07 23:53:18 +09:30
2017-07-07 23:53:18 +09:30
2015-06-16 17:42:29 +09:30
2012-10-29 09:25:53 +00:00
2010-07-06 09:29:47 +00:00
2012-10-29 09:25:53 +00:00
2018-01-17 18:52:57 +10:30
2018-01-17 18:51:04 +10:30
2005-04-19 05:44:55 +00:00
2017-10-05 13:25:44 +01:00
2015-08-27 23:21:21 +09:30
2014-12-23 23:36:50 +10:30
2014-12-23 23:36:50 +10:30
2014-12-23 23:36:50 +10:30
2014-12-23 23:36:50 +10:30
2014-12-23 23:36:50 +10:30
2012-10-29 09:25:53 +00:00
2005-05-20 21:57:12 +00:00
2005-07-12 12:08:11 +00:00
2014-03-27 00:49:38 +10:30
2014-03-27 00:49:38 +10:30
2005-09-28 19:32:19 +00:00
2005-09-28 19:32:19 +00:00
2013-08-22 07:34:28 +00:00
2015-03-11 18:04:25 +10:30
2015-03-11 18:04:25 +10:30
2017-08-30 20:43:31 +09:30
2015-03-11 18:04:25 +10:30
2017-08-30 20:43:31 +09:30
2015-04-23 09:49:19 +09:30
2017-08-30 20:43:31 +09:30
2013-08-22 07:34:28 +00:00
2016-05-11 22:40:09 +09:30
2016-05-11 22:40:09 +09:30
2016-05-11 22:40:09 +09:30
2018-01-17 18:51:04 +10:30
2018-01-17 18:51:04 +10:30
2018-01-17 18:51:04 +10:30
2012-10-29 09:25:53 +00:00
2018-01-17 18:51:04 +10:30
2017-01-24 12:15:54 +10:30
2018-01-17 18:51:04 +10:30
2012-10-29 09:25:53 +00:00
2018-01-17 18:51:04 +10:30
2015-04-23 09:49:19 +09:30
2018-01-17 18:51:04 +10:30
2012-10-29 09:25:53 +00:00
2015-01-29 13:13:02 +10:30
2015-01-29 13:13:02 +10:30
2017-08-30 20:43:31 +09:30
2015-01-29 13:13:02 +10:30
2009-09-21 11:51:02 +00:00
2009-09-21 11:51:02 +00:00
2012-10-29 09:25:53 +00:00
2011-03-23 15:25:06 +00:00
2017-08-30 20:43:31 +09:30
2011-03-23 15:25:06 +00:00
2017-07-14 22:51:01 +09:30
2017-07-14 22:51:01 +09:30
2012-11-23 03:28:13 +00:00
2011-03-23 15:25:06 +00:00
2017-07-14 22:51:01 +09:30
2017-07-14 22:51:01 +09:30
2012-11-23 03:28:13 +00:00
2011-03-23 15:25:06 +00:00
2017-07-14 22:51:01 +09:30
2017-07-14 22:51:01 +09:30
2012-10-29 09:25:53 +00:00
2011-03-23 15:25:06 +00:00
2012-11-23 03:28:13 +00:00
2017-07-14 22:51:01 +09:30
2017-08-30 20:43:31 +09:30
2011-03-23 15:25:06 +00:00
2018-01-17 18:51:04 +10:30
2017-07-14 22:51:01 +09:30
2017-08-07 22:10:51 +09:30
2017-07-25 15:14:39 +09:30
2017-09-21 23:17:44 +09:30
2015-03-11 18:04:25 +10:30
2015-03-11 18:04:25 +10:30
2017-11-07 17:01:16 +10:30
2012-10-29 09:25:53 +00:00
2018-01-17 18:51:04 +10:30
2015-04-23 09:49:19 +09:30
2017-11-07 17:01:16 +10:30
2012-10-29 09:25:53 +00:00
2017-08-30 20:43:31 +09:30
2015-04-23 09:49:19 +09:30
2013-10-30 13:35:47 +10:30
2013-08-22 07:34:28 +00:00
2018-01-17 18:51:04 +10:30
2015-04-23 09:49:19 +09:30
2017-11-07 17:01:16 +10:30
2013-08-22 07:34:28 +00:00
2015-04-25 09:15:49 +09:30
2015-01-28 18:30:54 +10:30
2015-04-23 09:49:19 +09:30
2011-07-11 12:03:55 +00:00
2011-07-11 12:03:55 +00:00
2015-04-23 09:49:19 +09:30
2011-07-11 12:03:55 +00:00
2015-04-23 09:49:19 +09:30
2011-08-22 14:28:54 +00:00
2011-08-22 14:28:54 +00:00
2015-04-23 09:49:19 +09:30
2011-09-30 05:11:04 +00:00
2015-07-05 19:57:07 +01:00
2015-07-05 19:57:07 +01:00
2015-07-05 19:57:07 +01:00
2015-07-05 19:57:07 +01:00
2015-07-05 19:57:07 +01:00
2016-12-06 18:25:14 +10:30
2017-02-15 13:41:51 +00:00
2016-12-06 18:25:14 +10:30
2016-12-06 18:25:14 +10:30
2016-12-06 18:25:14 +10:30
2015-04-23 09:49:19 +09:30
2017-02-15 13:41:51 +00:00
2010-08-05 14:38:10 +00:00
2017-06-21 22:45:15 +09:30
2017-06-21 22:45:15 +09:30
2017-06-21 22:45:15 +09:30
2017-06-21 22:45:15 +09:30
2017-06-21 22:45:15 +09:30
2017-06-21 22:45:15 +09:30
2017-06-21 22:45:15 +09:30
2015-01-28 18:30:54 +10:30
2015-01-28 18:30:54 +10:30
2017-11-07 17:01:16 +10:30
2014-01-22 11:58:29 +10:30
2017-11-07 17:01:16 +10:30
2014-01-22 11:58:29 +10:30
2017-11-07 17:01:16 +10:30
2014-01-22 11:58:29 +10:30
2012-05-14 19:45:30 +00:00
2014-01-22 11:58:29 +10:30
2016-11-28 17:51:57 +00:00
2012-05-14 19:45:30 +00:00
2016-08-31 14:05:44 +09:30
2014-01-22 11:58:29 +10:30
2012-05-14 19:45:30 +00:00
2012-05-14 19:45:30 +00:00
2012-05-14 19:45:30 +00:00
2012-05-14 19:45:30 +00:00
2012-05-14 19:45:30 +00:00
2012-05-14 19:45:30 +00:00
2012-05-14 19:45:30 +00:00
2017-02-23 12:33:51 +10:30
2017-02-23 12:33:51 +10:30
2014-03-15 00:12:56 +10:30
2012-05-14 19:45:30 +00:00
2012-05-14 19:45:30 +00:00
2012-05-14 19:45:30 +00:00
2012-05-14 19:45:30 +00:00
2014-03-14 15:01:53 +10:30
2017-02-16 22:39:51 +10:30
2009-09-23 03:12:28 +00:00
2012-05-12 13:46:26 +00:00
2017-02-16 22:39:51 +10:30
2006-03-02 08:50:04 +00:00
2007-05-15 12:22:34 +00:00
2006-03-03 09:32:01 +00:00
2006-03-02 15:16:27 +00:00
2009-01-26 15:27:04 +00:00
2009-01-26 15:27:04 +00:00
2006-03-02 08:50:04 +00:00
2006-03-03 09:32:01 +00:00
2006-03-03 09:32:01 +00:00
2016-11-23 11:10:39 +00:00
2014-12-04 17:37:58 +10:30
2010-07-20 07:22:37 +00:00
2014-12-04 17:37:58 +10:30
2010-07-20 07:22:37 +00:00