This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [PATCH 2/2] x86: Support Intel Shadow Stack with SHSTK property
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: Binutils <binutils at sourceware dot org>
- Date: Thu, 22 Jun 2017 05:54:58 -0700
- Subject: Re: [PATCH 2/2] x86: Support Intel Shadow Stack with SHSTK property
- Authentication-results: sourceware.org; auth=none
- References: <20170621195043.GB7041@gmail.com>
On Wed, Jun 21, 2017 at 12:50 PM, H.J. Lu <hongjiu.lu@intel.com> wrote:
> 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.
>
> include/
>
> * bfdlink.h (bfd_link_info): Add shstk.
> * elf/common.h (GNU_PROPERTY_X86_FEATURE_1_SHSTK): New.
> * 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.
>
> 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.
I checked it in.
--
H.J.