H.J. Lu
48580982ef
x86: Support Intel Shadow Stack with SHSTK property
...
To support Intel Shadow Stack (SHSTK) in Intel Control-flow Enforcement
Technology (CET) instructions:
https://software.intel.com/sites/default/files/managed/4d/2a/control-flow-enforcement-technology-preview.pdf
#define GNU_PROPERTY_X86_FEATURE_1_SHSTK (1U << 1)
is added to GNU program properties to indicate that all executable sections
are compatible with SHSTK where return address popped from shadow stack
always matches return address popped from normal stack.
GNU_PROPERTY_X86_FEATURE_1_SHSTK is set on output only if it is set on all
relocatable inputs.
bfd/
* elf32-i386.c (elf_i386_merge_gnu_properties): If info->shstk
is set, turn on GNU_PROPERTY_X86_FEATURE_1_SHSTK.
(elf_i386_link_setup_gnu_properties): If info->shstk is set,
turn on GNU_PROPERTY_X86_FEATURE_1_IBT.
* elf64-x86-64.c (elf_x86_64_merge_gnu_properties): If
info->shstk is set, turn on GNU_PROPERTY_X86_FEATURE_1_SHSTK.
(elf_x86_64_link_setup_gnu_properties): If info->shstk is set,
turn on GNU_PROPERTY_X86_FEATURE_1_IBT.
binutils/
* readelf.c (decode_x86_feature): Decode
GNU_PROPERTY_X86_FEATURE_1_SHSTK.
* testsuite/binutils-all/i386/shstk.d: New file.
* testsuite/binutils-all/i386/shstk.s: Likewise.
* testsuite/binutils-all/x86-64/shstk-x32.d: Likewise.
* testsuite/binutils-all/x86-64/shstk.d: Likewise.
* testsuite/binutils-all/x86-64/shstk.s: Likewise.
include/
* bfdlink.h (bfd_link_info): Add shstk.
* elf/common.h (GNU_PROPERTY_X86_FEATURE_1_SHSTK): New.
ld/
* NEWS: Mention -z shstk and GNU_PROPERTY_X86_FEATURE_1_SHSTK.
* emulparams/cet.sh (PARSE_AND_LIST_OPTIONS_CET): Add "-z shstk".
(PARSE_AND_LIST_ARGS_CASE_Z_CET): Support "-z shstk".
* ld.texinfo: Document -z shstk.
* testsuite/ld-i386/i386.exp: Run SHSTK tests.
* testsuite/ld-x86-64/x86-64.exp: Likewise.
* testsuite/ld-i386/property-x86-shstk.s: New file.
* testsuite/ld-i386/property-x86-shstk1a.d: Likewise.
* testsuite/ld-i386/property-x86-shstk1b.d: Likewise.
* testsuite/ld-i386/property-x86-shstk2.d: Likewise.
* testsuite/ld-i386/property-x86-shstk3a.d: Likewise.
* testsuite/ld-i386/property-x86-shstk3b.d: Likewise.
* testsuite/ld-i386/property-x86-shstk4.d: Likewise.
* testsuite/ld-i386/property-x86-shstk5.d: Likewise.
* testsuite/ld-x86-64/property-x86-shstk.s: Likewise.
* testsuite/ld-x86-64/property-x86-shstk1a-x32.d: Likewise.
* testsuite/ld-x86-64/property-x86-shstk1a.d: Likewise.
* testsuite/ld-x86-64/property-x86-shstk1b-x32.d: Likewise.
* testsuite/ld-x86-64/property-x86-shstk1b.d: Likewise.
* testsuite/ld-x86-64/property-x86-shstk2-x32.d: Likewise.
* testsuite/ld-x86-64/property-x86-shstk2.d: Likewise.
* testsuite/ld-x86-64/property-x86-shstk3a-x32.d: Likewise.
* testsuite/ld-x86-64/property-x86-shstk3a.d: Likewise.
* testsuite/ld-x86-64/property-x86-shstk3b-x32.d: Likewise.
* testsuite/ld-x86-64/property-x86-shstk3b.d: Likewise.
* testsuite/ld-x86-64/property-x86-shstk4-x32.d: Likewise.
* testsuite/ld-x86-64/property-x86-shstk4.d: Likewise.
* testsuite/ld-x86-64/property-x86-shstk5-x32.d: Likewise.
* testsuite/ld-x86-64/property-x86-shstk5.d: Likewise.
2017-06-22 05:50:31 -07:00
..
2015-10-29 13:49:03 +00:00
2015-10-29 13:49:03 +00:00
2016-07-19 10:19:06 -07:00
2013-06-26 10:56:05 +00:00
2016-07-19 10:19:06 -07:00
2012-08-13 14:52:54 +00:00
2015-04-02 15:07:27 +01:00
2015-04-02 15:07:27 +01:00
2014-02-11 11:16:30 -08:00
2014-02-11 11:16:30 -08:00
2014-01-20 18:18:52 +00:00
2014-01-20 18:20:04 +00:00
2002-03-18 12:46:27 +00:00
2002-03-18 12:46:27 +00:00
2002-03-18 12:46:27 +00:00
2002-03-18 12:46:27 +00:00
1999-05-03 07:29:11 +00:00
2010-04-14 09:27:27 +00:00
2016-04-07 16:17:08 +01:00
2017-01-10 10:55:13 +00:00
2016-04-05 23:08:28 +01:00
2016-07-14 10:08:57 +02:00
2017-01-10 10:55:13 +00:00
2016-11-28 22:30:17 +00:00
2016-05-19 15:06:50 +02:00
2016-04-05 23:08:28 +01:00
2016-04-05 23:08:28 +01:00
2009-11-04 18:13:05 +00:00
2009-11-04 18:13:05 +00:00
2007-08-09 11:02:24 +00:00
2007-08-09 11:02:24 +00:00
1999-05-03 07:29:11 +00:00
2014-08-22 06:33:45 +02:00
2016-12-02 10:44:29 +00:00
2009-11-20 15:04:51 +00:00
2014-07-08 15:00:12 +01:00
2012-04-12 13:01:15 +00:00
2006-05-30 16:45:32 +00:00
2016-05-23 13:53:07 +01:00
2006-05-30 16:45:32 +00:00
2016-08-09 12:09:17 -07:00
2014-06-18 21:58:19 +02:00
2016-12-02 10:44:29 +00:00
2005-01-22 01:50:35 +00:00
2003-05-09 20:05:04 +00:00
2012-04-12 13:01:15 +00:00
2002-05-21 15:11:04 +00:00
2003-05-09 20:05:04 +00:00
2007-08-09 11:02:24 +00:00
2008-02-20 15:17:56 +00:00
2009-11-04 18:13:05 +00:00
2009-11-20 15:04:51 +00:00
2017-06-13 16:50:26 +01:00
2017-06-13 16:50:26 +01:00
2017-06-13 16:50:26 +01:00
2017-06-13 16:50:26 +01:00
2017-06-13 16:50:26 +01:00
2017-06-13 16:50:26 +01:00
2017-06-13 16:50:26 +01:00
2017-06-13 16:50:26 +01:00
2017-06-13 16:50:26 +01:00
2017-06-13 16:50:26 +01:00
2017-06-13 16:50:26 +01:00
2017-06-13 16:50:26 +01:00
2017-06-13 16:50:26 +01:00
2017-06-13 16:50:26 +01:00
2017-06-13 16:50:26 +01:00
2017-06-13 16:50:26 +01:00
2017-06-13 16:50:26 +01:00
2017-06-13 16:50:26 +01:00
2017-06-02 14:49:37 -07:00
2017-06-22 05:50:31 -07:00
2003-08-06 02:19:05 +00:00
2007-08-09 11:02:24 +00:00
2007-08-09 11:02:24 +00:00
2017-01-29 13:53:58 +01:00
2014-01-10 01:25:26 +01:00
2002-06-17 14:08:40 +00:00
2006-06-20 02:22:16 +00:00
2006-06-20 02:22:16 +00:00
2006-06-20 02:22:16 +00:00
1999-05-03 07:29:11 +00:00
2017-04-19 20:39:52 +09:30
2006-06-20 02:22:16 +00:00
2008-10-22 05:20:44 +00:00
2008-10-22 06:06:09 +00:00
2010-10-22 12:08:32 +00:00
2006-04-05 12:41:59 +00:00
2010-09-20 18:41:15 +00:00
2009-08-05 20:40:34 +00:00
2010-03-25 21:12:36 +00:00
2011-05-13 18:15:33 +00:00
2011-05-13 18:15:33 +00:00
2015-04-01 11:29:46 +01:00
2011-05-13 18:15:33 +00:00
2011-05-13 18:15:33 +00:00
2013-08-26 22:18:07 +00:00
2017-06-22 05:44:53 -07:00
2008-10-22 05:20:44 +00:00
2007-08-09 11:02:24 +00:00
2014-06-02 14:52:52 +09:30
2014-06-02 14:52:52 +09:30
2014-07-29 11:27:59 +01:00
2016-10-06 13:49:09 +01:00
2013-12-07 02:03:03 -05:00
2004-04-08 14:52:44 +00:00
2010-12-31 11:01:00 +00:00
2013-06-24 23:55:46 +00:00
2010-12-31 11:01:00 +00:00
2006-05-30 16:45:32 +00:00
2008-11-27 12:41:14 +00:00
2004-03-30 14:04:32 +00:00
2004-07-07 17:28:53 +00:00
2001-11-22 09:08:05 +00:00
2007-05-18 09:18:18 +00:00
2001-11-22 09:08:05 +00:00
2006-03-22 09:28:15 +00:00
2012-11-30 18:28:38 +00:00
2011-10-25 11:18:16 +00:00
2013-12-07 02:03:03 -05:00
2013-12-07 02:03:03 -05:00
2006-06-20 02:22:16 +00:00
2015-01-28 16:25:18 +10:30
2006-05-30 16:45:32 +00:00
2008-10-22 05:20:44 +00:00
2013-12-07 02:03:03 -05:00
2013-12-07 02:03:03 -05:00
2001-11-22 09:08:05 +00:00
2008-12-23 19:10:25 +00:00
2008-12-23 19:10:25 +00:00
2001-11-22 09:08:05 +00:00
2013-04-25 13:22:52 +00:00
2013-04-25 13:22:52 +00:00
2006-05-30 16:45:32 +00:00
2001-11-22 09:08:05 +00:00
2013-01-04 17:22:53 +00:00
2013-01-04 17:22:53 +00:00
2017-02-13 09:53:54 -08:00
2016-11-01 16:45:57 +00:00
2001-11-22 09:08:05 +00:00
2010-12-31 11:01:00 +00:00
2001-11-22 09:08:05 +00:00
2010-12-31 11:01:00 +00:00
2002-07-30 23:48:30 +00:00
2017-02-20 19:33:28 +10:30
2013-01-10 20:08:03 +00:00
2012-11-09 22:43:28 +00:00
2011-01-14 12:37:17 +00:00
2013-12-07 02:03:03 -05:00
2017-01-02 22:44:29 +10:30
2013-01-10 20:08:03 +00:00
2012-11-09 22:43:28 +00:00
2012-08-06 22:40:36 +00:00
2012-09-13 22:24:51 +00:00
2017-02-20 19:33:28 +10:30
2014-07-17 00:26:45 +03:00
2014-04-22 15:57:47 +01:00
2011-11-21 13:22:46 +00:00
2013-01-10 20:08:03 +00:00
2017-04-19 20:39:52 +09:30
2005-08-03 05:09:49 +00:00
2006-05-30 16:45:32 +00:00
2001-11-22 09:08:05 +00:00
2014-02-27 23:39:01 +10:30
2008-10-22 05:20:44 +00:00
2017-02-20 19:33:28 +10:30
2017-02-20 19:33:28 +10:30
2012-02-25 19:51:34 +00:00
2012-06-11 13:23:51 +00:00
2012-06-11 13:23:51 +00:00
2008-10-22 05:20:44 +00:00
2014-12-06 16:45:22 +01:00
2006-05-30 16:45:32 +00:00
2006-05-30 16:45:32 +00:00
2006-05-30 16:45:32 +00:00
2001-12-08 03:46:03 +00:00
2008-11-03 18:52:52 +00:00
2006-05-30 16:45:32 +00:00
2004-10-14 17:00:16 +00:00
2012-04-12 07:35:07 +00:00
2006-05-30 16:45:32 +00:00
2016-10-10 17:09:03 +02:00
2006-10-18 23:58:52 +00:00
2010-10-22 12:08:32 +00:00
2008-10-22 05:20:44 +00:00
2002-09-17 02:24:40 +00:00
2001-12-17 23:54:58 +00:00
2013-01-10 20:08:03 +00:00
2014-07-29 11:27:59 +01:00
2013-12-07 02:03:03 -05:00
2010-12-31 11:01:00 +00:00
2006-10-16 21:34:25 +00:00
2013-12-07 02:03:03 -05:00
2001-08-27 10:45:55 +00:00
2016-11-01 16:45:57 +00:00
2016-11-01 16:45:57 +00:00
2010-12-31 11:01:00 +00:00
2001-11-22 09:08:05 +00:00
2009-07-29 00:25:22 +00:00
2011-11-21 13:22:46 +00:00
2015-04-23 09:49:19 +09:30
2013-01-23 10:31:13 +00:00
2012-02-25 19:51:34 +00:00
2012-06-11 13:23:51 +00:00
2002-02-18 09:38:01 +00:00
2016-04-20 05:26:51 -07:00
2016-04-20 05:26:51 -07:00
2002-09-17 02:24:40 +00:00
2016-04-20 05:26:51 -07:00
2013-08-26 22:18:07 +00:00
2010-10-12 18:39:36 +00:00
2016-04-20 05:26:51 -07:00
2017-06-22 05:44:53 -07:00
2016-05-05 08:43:58 -07:00
2011-07-22 20:22:38 +00:00
2016-05-05 08:43:58 -07:00
2009-07-25 15:08:26 +00:00
2016-05-05 08:43:58 -07:00
2013-08-23 22:38:42 +00:00
2013-01-10 20:08:03 +00:00
2015-03-31 08:11:08 -07:00
2006-08-02 16:25:14 +00:00
2013-08-26 22:18:07 +00:00
2010-10-12 18:39:36 +00:00
2017-06-22 05:44:53 -07:00
2016-02-26 04:55:57 -08:00
2003-10-16 08:46:35 +00:00
2003-10-16 08:46:35 +00:00
2006-09-07 17:01:10 +00:00
2015-02-23 17:04:53 +00:00
2008-10-22 05:20:44 +00:00
1999-05-03 07:29:11 +00:00
2015-02-23 17:04:53 +00:00
2001-11-22 09:08:05 +00:00
2003-04-24 15:25:24 +00:00
2003-04-24 15:25:24 +00:00
1999-05-03 07:29:11 +00:00
2015-02-23 17:04:53 +00:00
2001-11-22 09:08:05 +00:00
2003-04-24 15:25:24 +00:00
2003-04-24 15:25:24 +00:00
2003-06-03 21:43:52 +00:00
2015-02-23 17:04:53 +00:00
2006-09-07 17:01:10 +00:00
2003-06-10 07:09:31 +00:00
2003-06-10 07:09:31 +00:00
1999-05-03 07:29:11 +00:00
1999-05-03 07:29:11 +00:00
1999-05-03 07:29:11 +00:00
1999-05-03 07:29:11 +00:00
1999-05-03 07:29:11 +00:00
1999-05-03 07:29:11 +00:00
1999-05-03 07:29:11 +00:00
2009-03-01 22:10:36 +00:00
2000-07-28 01:33:14 +00:00
2017-01-02 22:42:45 +10:30
2004-07-27 22:30:25 +00:00
2006-05-30 16:45:32 +00:00
2007-08-09 11:02:24 +00:00
2013-12-07 02:03:03 -05:00
2007-08-09 11:02:24 +00:00
1999-05-03 07:29:11 +00:00
2007-08-09 11:02:24 +00:00
2007-08-09 11:02:24 +00:00
2017-05-10 10:51:35 -07:00
2007-08-09 11:02:24 +00:00
2017-05-10 10:51:35 -07:00
2007-08-09 11:02:24 +00:00
1999-05-03 07:29:11 +00:00
2016-04-20 05:26:51 -07:00
2017-05-10 10:51:35 -07:00
2009-11-04 18:13:05 +00:00
2014-04-09 17:12:30 +01:00
2014-04-09 17:12:30 +01:00
2003-10-16 08:46:35 +00:00
2006-05-30 16:45:32 +00:00
2005-08-05 04:29:57 +00:00
2003-12-19 11:44:01 +00:00
2003-12-19 11:44:01 +00:00
2003-04-21 13:29:05 +00:00
2003-04-21 13:29:05 +00:00
2003-04-21 13:29:05 +00:00
2003-04-21 13:29:05 +00:00
2007-08-09 11:02:24 +00:00
2007-08-09 11:02:24 +00:00
1999-05-03 07:29:11 +00:00
2000-07-21 23:31:53 +00:00
2009-09-29 16:28:52 +00:00
2001-12-18 13:26:26 +00:00
2007-08-09 11:02:24 +00:00
2007-08-09 11:02:24 +00:00
2006-05-30 16:45:32 +00:00
2003-10-16 08:46:35 +00:00
2009-11-04 18:13:05 +00:00
2009-07-29 00:25:22 +00:00
2008-10-22 05:20:44 +00:00
2006-06-20 02:22:16 +00:00
2014-07-27 08:51:20 -04:00
2016-01-05 16:43:58 +00:00
2015-04-24 17:05:52 -04:00
2013-12-13 11:52:32 +00:00
2013-12-13 11:52:32 +00:00
2013-12-13 11:52:32 +00:00
2014-01-17 10:41:49 +10:30
2014-01-17 10:41:49 +10:30
2014-01-17 10:41:49 +10:30
1999-05-03 07:29:11 +00:00
2014-01-30 17:47:07 -08:00
2014-05-11 10:04:45 -07:00
2007-08-09 11:02:24 +00:00
2007-08-09 11:02:24 +00:00
2001-02-18 23:33:11 +00:00
2008-10-22 05:20:44 +00:00
2006-06-20 02:22:16 +00:00
2015-04-08 04:55:23 -07:00
2008-10-22 05:20:44 +00:00
2002-03-18 12:46:27 +00:00
2007-08-09 11:02:24 +00:00
2009-11-04 18:13:05 +00:00
2016-12-31 12:04:11 +10:30
2017-01-02 14:08:56 +10:30
2016-03-15 11:07:54 -07:00
1999-05-03 07:29:11 +00:00
2014-06-02 14:52:52 +09:30
2014-06-02 14:52:52 +09:30
2001-11-22 09:08:05 +00:00
2002-10-09 19:09:59 +00:00
2006-05-30 16:45:32 +00:00
2017-02-20 19:33:28 +10:30
2002-06-04 02:57:44 +00:00
2017-02-20 19:33:28 +10:30
2010-05-25 14:12:43 +00:00
2001-11-22 09:08:05 +00:00
2017-02-20 19:33:28 +10:30
2016-08-02 11:56:55 +01:00
2017-02-20 19:33:28 +10:30
2016-08-02 11:56:55 +01:00
2017-02-20 19:33:28 +10:30
2001-11-22 09:08:05 +00:00
2016-08-02 11:56:55 +01:00
2002-06-04 02:57:44 +00:00
2002-02-08 06:39:01 +00:00
2002-06-04 02:57:44 +00:00
2002-02-08 06:39:01 +00:00
2010-05-25 14:12:43 +00:00
2016-08-02 11:56:55 +01:00
2002-01-08 04:23:02 +00:00
2016-08-02 11:56:55 +01:00
2006-08-04 13:13:56 +00:00
2001-11-22 09:08:05 +00:00
2017-02-20 19:33:28 +10:30
2009-11-04 18:13:05 +00:00
2015-09-22 11:12:51 +02:00
2007-08-09 11:02:24 +00:00
2007-08-09 11:02:24 +00:00
1999-05-03 07:29:11 +00:00
1999-05-03 07:29:11 +00:00
2007-08-09 11:02:24 +00:00
2007-08-09 11:02:24 +00:00
2003-04-04 08:15:15 +00:00
2003-04-04 08:15:15 +00:00
2003-04-04 08:15:15 +00:00
1999-05-03 07:29:11 +00:00
1999-05-03 07:29:11 +00:00
2000-06-20 13:29:07 +00:00
2013-01-10 20:08:03 +00:00
2015-02-24 17:54:09 +00:00
2015-02-24 17:54:09 +00:00
2003-10-16 08:46:35 +00:00
2002-07-01 08:32:30 +00:00
2007-08-09 11:02:24 +00:00
2007-08-09 11:02:24 +00:00
2009-10-29 16:43:56 +00:00
1999-05-03 07:29:11 +00:00
2012-05-03 13:12:08 +00:00
2005-10-25 17:40:19 +00:00
1999-05-03 07:29:11 +00:00
1999-05-03 07:29:11 +00:00