This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: [PATCH 0/5] x86: CVE-2017-5715, aka Spectre


Hi HJ, 

> -----Original Message-----
> From: gcc-patches-owner@gcc.gnu.org [mailto:gcc-patches-
> owner@gcc.gnu.org] On Behalf Of H.J. Lu
> Sent: Sunday, January 14, 2018 9:07 AM
> To: gcc-patches@gcc.gnu.org
> Subject: [PATCH 0/5] x86: CVE-2017-5715, aka Spectre
> 
> This set of patches for GCC 8 mitigates variant #2 of the speculative
> execution vulnerabilities on x86 processors identified by CVE-2017-5715, aka
> Spectre.  They convert indirect branches and function returns to call and
> return thunks to avoid speculative execution via indirect call, jmp and ret.
> 
> H.J. Lu (5):
>   x86: Add -mindirect-branch=
>   x86: Add -mfunction-return=
>   x86: Add -mindirect-branch-register
>   x86: Add 'V' register operand modifier
>   x86: Disallow -mindirect-branch=/-mfunction-return= with
>     -mcmodel=large

Current set of patches don't seem to have any option to generate "lfence" as the loop filler in "retpoline",  which is required by AMD.
Can you please clarify the plan. We would like to get this checked-in GCC 8.   

> 
>  gcc/config/i386/constraints.md                     |  12 +-
>  gcc/config/i386/i386-opts.h                        |  13 +
>  gcc/config/i386/i386-protos.h                      |   2 +
>  gcc/config/i386/i386.c                             | 822 ++++++++++++++++++++-
>  gcc/config/i386/i386.h                             |  10 +
>  gcc/config/i386/i386.md                            |  69 +-
>  gcc/config/i386/i386.opt                           |  28 +
>  gcc/config/i386/predicates.md                      |  21 +-
>  gcc/doc/extend.texi                                |  22 +
>  gcc/doc/invoke.texi                                |  41 +-
>  gcc/testsuite/gcc.target/i386/indirect-thunk-1.c   |  19 +
>  gcc/testsuite/gcc.target/i386/indirect-thunk-10.c  |   7 +
>  gcc/testsuite/gcc.target/i386/indirect-thunk-2.c   |  19 +
>  gcc/testsuite/gcc.target/i386/indirect-thunk-3.c   |  20 +
>  gcc/testsuite/gcc.target/i386/indirect-thunk-4.c   |  20 +
>  gcc/testsuite/gcc.target/i386/indirect-thunk-5.c   |  16 +
>  gcc/testsuite/gcc.target/i386/indirect-thunk-6.c   |  17 +
>  gcc/testsuite/gcc.target/i386/indirect-thunk-7.c   |  43 ++
>  gcc/testsuite/gcc.target/i386/indirect-thunk-8.c   |   7 +
>  gcc/testsuite/gcc.target/i386/indirect-thunk-9.c   |   7 +
>  .../gcc.target/i386/indirect-thunk-attr-1.c        |  22 +
>  .../gcc.target/i386/indirect-thunk-attr-10.c       |   9 +
>  .../gcc.target/i386/indirect-thunk-attr-11.c       |   9 +
>  .../gcc.target/i386/indirect-thunk-attr-2.c        |  20 +
>  .../gcc.target/i386/indirect-thunk-attr-3.c        |  21 +
>  .../gcc.target/i386/indirect-thunk-attr-4.c        |  20 +
>  .../gcc.target/i386/indirect-thunk-attr-5.c        |  22 +
>  .../gcc.target/i386/indirect-thunk-attr-6.c        |  21 +
>  .../gcc.target/i386/indirect-thunk-attr-7.c        |  44 ++
>  .../gcc.target/i386/indirect-thunk-attr-8.c        |  41 +
>  .../gcc.target/i386/indirect-thunk-attr-9.c        |   9 +
>  .../gcc.target/i386/indirect-thunk-bnd-1.c         |  19 +
>  .../gcc.target/i386/indirect-thunk-bnd-2.c         |  20 +
>  .../gcc.target/i386/indirect-thunk-bnd-3.c         |  18 +
>  .../gcc.target/i386/indirect-thunk-bnd-4.c         |  19 +
>  .../gcc.target/i386/indirect-thunk-extern-1.c      |  19 +
>  .../gcc.target/i386/indirect-thunk-extern-2.c      |  19 +
>  .../gcc.target/i386/indirect-thunk-extern-3.c      |  20 +
>  .../gcc.target/i386/indirect-thunk-extern-4.c      |  20 +
>  .../gcc.target/i386/indirect-thunk-extern-5.c      |  16 +
>  .../gcc.target/i386/indirect-thunk-extern-6.c      |  17 +
>  .../gcc.target/i386/indirect-thunk-extern-7.c      |  43 ++
>  .../gcc.target/i386/indirect-thunk-inline-1.c      |  18 +
>  .../gcc.target/i386/indirect-thunk-inline-2.c      |  18 +
>  .../gcc.target/i386/indirect-thunk-inline-3.c      |  19 +
>  .../gcc.target/i386/indirect-thunk-inline-4.c      |  19 +
>  .../gcc.target/i386/indirect-thunk-inline-5.c      |  15 +
>  .../gcc.target/i386/indirect-thunk-inline-6.c      |  16 +
>  .../gcc.target/i386/indirect-thunk-inline-7.c      |  42 ++
>  .../gcc.target/i386/indirect-thunk-register-1.c    |  22 +
>  .../gcc.target/i386/indirect-thunk-register-2.c    |  20 +
>  .../gcc.target/i386/indirect-thunk-register-3.c    |  19 +
>  .../gcc.target/i386/indirect-thunk-register-4.c    |  13 +
>  gcc/testsuite/gcc.target/i386/ret-thunk-1.c        |  12 +
>  gcc/testsuite/gcc.target/i386/ret-thunk-10.c       |  22 +
>  gcc/testsuite/gcc.target/i386/ret-thunk-11.c       |  22 +
>  gcc/testsuite/gcc.target/i386/ret-thunk-12.c       |  21 +
>  gcc/testsuite/gcc.target/i386/ret-thunk-13.c       |  21 +
>  gcc/testsuite/gcc.target/i386/ret-thunk-14.c       |  21 +
>  gcc/testsuite/gcc.target/i386/ret-thunk-15.c       |  21 +
>  gcc/testsuite/gcc.target/i386/ret-thunk-16.c       |  18 +
>  gcc/testsuite/gcc.target/i386/ret-thunk-17.c       |   7 +
>  gcc/testsuite/gcc.target/i386/ret-thunk-18.c       |   8 +
>  gcc/testsuite/gcc.target/i386/ret-thunk-19.c       |   8 +
>  gcc/testsuite/gcc.target/i386/ret-thunk-2.c        |  12 +
>  gcc/testsuite/gcc.target/i386/ret-thunk-20.c       |   9 +
>  gcc/testsuite/gcc.target/i386/ret-thunk-21.c       |   9 +
>  gcc/testsuite/gcc.target/i386/ret-thunk-3.c        |  12 +
>  gcc/testsuite/gcc.target/i386/ret-thunk-4.c        |  12 +
>  gcc/testsuite/gcc.target/i386/ret-thunk-5.c        |  14 +
>  gcc/testsuite/gcc.target/i386/ret-thunk-6.c        |  13 +
>  gcc/testsuite/gcc.target/i386/ret-thunk-7.c        |  13 +
>  gcc/testsuite/gcc.target/i386/ret-thunk-8.c        |  14 +
>  gcc/testsuite/gcc.target/i386/ret-thunk-9.c        |  23 +
>  74 files changed, 2166 insertions(+), 50 deletions(-)  create mode 100644
> gcc/testsuite/gcc.target/i386/indirect-thunk-1.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-10.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-2.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-3.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-4.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-5.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-6.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-7.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-8.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-9.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-1.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-10.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-11.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-2.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-3.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-4.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-5.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-6.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-7.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-8.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-attr-9.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-1.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-2.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-3.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-bnd-4.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-extern-1.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-extern-2.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-extern-3.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-extern-4.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-extern-5.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-extern-6.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-extern-7.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-inline-1.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-inline-2.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-inline-3.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-inline-4.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-inline-5.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-inline-6.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-inline-7.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-register-
> 1.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-register-
> 2.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-register-
> 3.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/indirect-thunk-register-
> 4.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-1.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-10.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-11.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-12.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-13.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-14.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-15.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-16.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-17.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-18.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-19.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-2.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-20.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-21.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-3.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-4.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-5.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-6.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-7.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-8.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/ret-thunk-9.c
> 
> --
> 2.14.3

Regards,
Venkat.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]