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

Aaron Ballman via cfe-commits cfe-commits at lists.llvm.org
Mon Nov 26 12:19:04 PST 2018


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


More information about the cfe-commits mailing list