r347588 - Revert "[clang][slh] add attribute for speculative load hardening"

David Blaikie via cfe-commits cfe-commits at lists.llvm.org
Mon Dec 3 12:59:07 PST 2018


Also, including the SVN revision (llvm's util/git-svn/git-svnrevert script
can help with this) is helpful for other folks following along who may not
be using git.

On Mon, Nov 26, 2018 at 12:19 PM Aaron Ballman via cfe-commits <
cfe-commits at lists.llvm.org> wrote:

> On Mon, Nov 26, 2018 at 3:13 PM Zola Bridges via cfe-commits
> <cfe-commits at lists.llvm.org> wrote:
> >
> > Author: zbrid
> > Date: Mon Nov 26 12:11:18 2018
> > New Revision: 347588
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=347588&view=rev
> > Log:
> > Revert "[clang][slh] add attribute for speculative load hardening"
> >
> > This reverts commit 801eaf91221ba6dd6996b29ff82659ad6359e885.
>
> Next time you revert something, can you add an explanation as to why
> it was reverted into the commit message? It helps when doing code
> archaeology.
>
> Thanks!
>
> ~Aaron
>
> >
> > Removed:
> >     cfe/trunk/test/CodeGen/attr-speculative-load-hardening.cpp
> >     cfe/trunk/test/CodeGen/attr-speculative-load-hardening.m
> >     cfe/trunk/test/SemaCXX/attr-speculative-load-hardening.cpp
> > Modified:
> >     cfe/trunk/include/clang/Basic/Attr.td
> >     cfe/trunk/include/clang/Basic/AttrDocs.td
> >     cfe/trunk/lib/CodeGen/CGCall.cpp
> >     cfe/trunk/lib/Sema/SemaDeclAttr.cpp
> >
> > Modified: cfe/trunk/include/clang/Basic/Attr.td
> > URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Attr.td?rev=347588&r1=347587&r2=347588&view=diff
> >
> ==============================================================================
> > --- cfe/trunk/include/clang/Basic/Attr.td (original)
> > +++ cfe/trunk/include/clang/Basic/Attr.td Mon Nov 26 12:11:18 2018
> > @@ -3091,9 +3091,3 @@ def AlwaysDestroy : InheritableAttr {
> >    let Subjects = SubjectList<[Var]>;
> >    let Documentation = [AlwaysDestroyDocs];
> >  }
> > -
> > -def SpeculativeLoadHardening : InheritableAttr {
> > -  let Spellings = [Clang<"speculative_load_hardening">];
> > -  let Subjects = SubjectList<[Function, ObjCMethod], ErrorDiag>;
> > -  let Documentation = [SpeculativeLoadHardeningDocs];
> > -}
> >
> > Modified: cfe/trunk/include/clang/Basic/AttrDocs.td
> > URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/AttrDocs.td?rev=347588&r1=347587&r2=347588&view=diff
> >
> ==============================================================================
> > --- cfe/trunk/include/clang/Basic/AttrDocs.td (original)
> > +++ cfe/trunk/include/clang/Basic/AttrDocs.td Mon Nov 26 12:11:18 2018
> > @@ -3629,27 +3629,3 @@ GNU inline semantics are the default beh
> >  ``-std=c89``, ``-std=c94``, or ``-fgnu89-inline``.
> >    }];
> >  }
> > -
> > -def SpeculativeLoadHardeningDocs : Documentation {
> > -  let Category = DocCatFunction;
> > -  let Content = [{
> > -  This attribute can be applied to a function declaration in order to
> indicate
> > -  that `Speculative Load Hardening <
> https://llvm.org/docs/SpeculativeLoadHardening.html>`_
> > -  should be enabled for the function body. This can also be applied to
> a method
> > -  in Objective C.
> > -
> > -  Speculative Load Hardening is a best-effort mitigation against
> > -  information leak attacks that make use of control flow
> > -  miss-speculation - specifically miss-speculation of whether a branch
> > -  is taken or not. Typically vulnerabilities enabling such attacks are
> > -  classified as "Spectre variant #1". Notably, this does not attempt to
> > -  mitigate against miss-speculation of branch target, classified as
> > -  "Spectre variant #2" vulnerabilities.
> > -
> > -  When inlining, the attribute is sticky. Inlining a function that
> > -  carries this attribute will cause the caller to gain the
> > -  attribute. This is intended to provide a maximally conservative model
> > -  where the code in a function annotated with this attribute will always
> > -  (even after inlining) end up hardened.
> > -  }];
> > -}
> >
> > Modified: cfe/trunk/lib/CodeGen/CGCall.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGCall.cpp?rev=347588&r1=347587&r2=347588&view=diff
> >
> ==============================================================================
> > --- cfe/trunk/lib/CodeGen/CGCall.cpp (original)
> > +++ cfe/trunk/lib/CodeGen/CGCall.cpp Mon Nov 26 12:11:18 2018
> > @@ -1791,8 +1791,6 @@ void CodeGenModule::ConstructDefaultFnAt
> >      if (CodeGenOpts.Backchain)
> >        FuncAttrs.addAttribute("backchain");
> >
> > -    // FIXME: The interaction of this attribute with the SLH command
> line flag
> > -    // has not been determined.
> >      if (CodeGenOpts.SpeculativeLoadHardening)
> >        FuncAttrs.addAttribute(llvm::Attribute::SpeculativeLoadHardening);
> >    }
> > @@ -1856,8 +1854,6 @@ void CodeGenModule::ConstructAttributeLi
> >        FuncAttrs.addAttribute(llvm::Attribute::NoDuplicate);
> >      if (TargetDecl->hasAttr<ConvergentAttr>())
> >        FuncAttrs.addAttribute(llvm::Attribute::Convergent);
> > -    if (TargetDecl->hasAttr<SpeculativeLoadHardeningAttr>())
> > -      FuncAttrs.addAttribute(llvm::Attribute::SpeculativeLoadHardening);
> >
> >      if (const FunctionDecl *Fn = dyn_cast<FunctionDecl>(TargetDecl)) {
> >        AddAttributesFromFunctionProtoType(
> >
> > Modified: cfe/trunk/lib/Sema/SemaDeclAttr.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclAttr.cpp?rev=347588&r1=347587&r2=347588&view=diff
> >
> ==============================================================================
> > --- cfe/trunk/lib/Sema/SemaDeclAttr.cpp (original)
> > +++ cfe/trunk/lib/Sema/SemaDeclAttr.cpp Mon Nov 26 12:11:18 2018
> > @@ -6373,9 +6373,6 @@ static void ProcessDeclAttribute(Sema &S
> >    case ParsedAttr::AT_Section:
> >      handleSectionAttr(S, D, AL);
> >      break;
> > -  case ParsedAttr::AT_SpeculativeLoadHardening:
> > -    handleSimpleAttribute<SpeculativeLoadHardeningAttr>(S, D, AL);
> > -    break;
> >    case ParsedAttr::AT_CodeSeg:
> >      handleCodeSegAttr(S, D, AL);
> >      break;
> >
> > Removed: cfe/trunk/test/CodeGen/attr-speculative-load-hardening.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/attr-speculative-load-hardening.cpp?rev=347587&view=auto
> >
> ==============================================================================
> > --- cfe/trunk/test/CodeGen/attr-speculative-load-hardening.cpp (original)
> > +++ cfe/trunk/test/CodeGen/attr-speculative-load-hardening.cpp (removed)
> > @@ -1,18 +0,0 @@
> > -// RUN: %clang_cc1 -std=c++11 -disable-llvm-passes -emit-llvm %s -o - |
> FileCheck %s --check-prefix=CHECK1
> > -// RUN: %clang_cc1 -std=c++11 -disable-llvm-passes -emit-llvm %s -o - |
> FileCheck %s --check-prefix=CHECK2
> > -//
> > -// Check that we set the attribute on each function.
> > -
> > -[[clang::speculative_load_hardening]]
> > -int test1() {
> > -  return 42;
> > -}
> > -
> > -int __attribute__((speculative_load_hardening)) test2() {
> > -  return 42;
> > -}
> > -// CHECK1: @{{.*}}test1{{.*}}[[SLH1:#[0-9]+]]
> > -// CHECK1: attributes [[SLH1]] = {
> {{.*}}speculative_load_hardening{{.*}} }
> > -
> > -// CHECK2: @{{.*}}test2{{.*}}[[SLH2:#[0-9]+]]
> > -// CHECK2: attributes [[SLH2]] = {
> {{.*}}speculative_load_hardening{{.*}} }
> >
> > Removed: cfe/trunk/test/CodeGen/attr-speculative-load-hardening.m
> > URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/attr-speculative-load-hardening.m?rev=347587&view=auto
> >
> ==============================================================================
> > --- cfe/trunk/test/CodeGen/attr-speculative-load-hardening.m (original)
> > +++ cfe/trunk/test/CodeGen/attr-speculative-load-hardening.m (removed)
> > @@ -1,9 +0,0 @@
> > -// RUN: %clang -emit-llvm %s -o - -S | FileCheck %s -check-prefix=SLH
> > -
> > -int main() __attribute__((speculative_load_hardening)) {
> > -  return 0;
> > -}
> > -
> > -// SLH: @{{.*}}main{{.*}}[[SLH:#[0-9]+]]
> > -
> > -// SLH: attributes [[SLH]] = { {{.*}}speculative_load_hardening{{.*}} }
> >
> > Removed: cfe/trunk/test/SemaCXX/attr-speculative-load-hardening.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/attr-speculative-load-hardening.cpp?rev=347587&view=auto
> >
> ==============================================================================
> > --- cfe/trunk/test/SemaCXX/attr-speculative-load-hardening.cpp (original)
> > +++ cfe/trunk/test/SemaCXX/attr-speculative-load-hardening.cpp (removed)
> > @@ -1,34 +0,0 @@
> > -// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
> > -
> > -int i __attribute__((speculative_load_hardening)); // expected-error
> {{'speculative_load_hardening' attribute only applies to functions}}
> > -
> > -void f1() __attribute__((speculative_load_hardening));
> > -void f2() __attribute__((speculative_load_hardening(1))); //
> expected-error {{'speculative_load_hardening' attribute takes no arguments}}
> > -
> > -template <typename T>
> > -void tf1() __attribute__((speculative_load_hardening));
> > -
> > -int f3(int __attribute__((speculative_load_hardening)), int); //
> expected-error {{'speculative_load_hardening' attribute only applies to
> functions}}
> > -
> > -struct A {
> > -  int f __attribute__((speculative_load_hardening));  // expected-error
> {{'speculative_load_hardening' attribute only applies to functions}}
> > -  void mf1() __attribute__((speculative_load_hardening));
> > -  static void mf2() __attribute__((speculative_load_hardening));
> > -};
> > -
> > -int ci [[speculative_load_hardening]]; // expected-error
> {{'speculative_load_hardening' attribute only applies to functions}}
> > -
> > -[[speculative_load_hardening]] void cf1();
> > -[[speculative_load_hardening(1)]] void cf2(); // expected-error
> {{'speculative_load_hardening' attribute takes no arguments}}
> > -
> > -template <typename T>
> > -[[speculative_load_hardening]]
> > -void ctf1();
> > -
> > -int cf3(int c[[speculative_load_hardening]], int); // expected-error
> {{'speculative_load_hardening' attribute only applies to functions}}
> > -
> > -struct CA {
> > -  int f [[speculative_load_hardening]];  // expected-error
> {{'speculative_load_hardening' attribute only applies to functions}}
> > -  [[speculative_load_hardening]] void mf1();
> > -  [[speculative_load_hardening]] static void mf2();
> > -};
> >
> >
> > _______________________________________________
> > cfe-commits mailing list
> > cfe-commits at lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20181203/749c7210/attachment-0001.html>


More information about the cfe-commits mailing list