github-actions[bot] wrote: <!--LLVM CODE FORMAT COMMENT: {clang-format}-->
:warning: C/C++ code formatter, clang-format found issues in your code. :warning: <details> <summary> You can test this locally with the following command: </summary> ``````````bash git-clang-format --diff f9aba820eb6478a617145eb690ba8b06490d7ac5 c4e7c86eb967b4313e19587e33fdc6b50c8cd6a7 -- clang/lib/Headers/ptrauth.h clang/test/CodeGen/ptrauth-intrinsics.c clang/test/Preprocessor/ptrauth_feature.c clang/test/Sema/ptrauth-intrinsics-macro.c clang/test/Sema/ptrauth.c clang/include/clang/Basic/TargetInfo.h clang/include/clang/Sema/Sema.h clang/lib/Basic/TargetInfo.cpp clang/lib/Basic/Targets/AArch64.cpp clang/lib/Basic/Targets/AArch64.h clang/lib/CodeGen/CGBuiltin.cpp clang/lib/Driver/ToolChains/Clang.cpp clang/lib/Frontend/CompilerInvocation.cpp clang/lib/Sema/SemaChecking.cpp `````````` </details> <details> <summary> View the diff from clang-format here. </summary> ``````````diff diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp index 2e1a687c39..5e7c5bf247 100644 --- a/clang/lib/CodeGen/CGBuiltin.cpp +++ b/clang/lib/CodeGen/CGBuiltin.cpp @@ -4969,7 +4969,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID, case Builtin::BI__builtin_ptrauth_sign_unauthenticated: case Builtin::BI__builtin_ptrauth_strip: { // Emit the arguments. - SmallVector<llvm::Value*, 5> args; + SmallVector<llvm::Value *, 5> args; for (auto argExpr : E->arguments()) args.push_back(EmitScalarExpr(argExpr)); @@ -4979,25 +4979,25 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID, args[0] = Builder.CreatePtrToInt(args[0], IntPtrTy); switch (BuiltinID) { - case Builtin::BI__builtin_ptrauth_auth_and_resign: - if (args[4]->getType()->isPointerTy()) - args[4] = Builder.CreatePtrToInt(args[4], IntPtrTy); - LLVM_FALLTHROUGH; - - case Builtin::BI__builtin_ptrauth_auth: - case Builtin::BI__builtin_ptrauth_sign_unauthenticated: - if (args[2]->getType()->isPointerTy()) - args[2] = Builder.CreatePtrToInt(args[2], IntPtrTy); - break; + case Builtin::BI__builtin_ptrauth_auth_and_resign: + if (args[4]->getType()->isPointerTy()) + args[4] = Builder.CreatePtrToInt(args[4], IntPtrTy); + LLVM_FALLTHROUGH; + + case Builtin::BI__builtin_ptrauth_auth: + case Builtin::BI__builtin_ptrauth_sign_unauthenticated: + if (args[2]->getType()->isPointerTy()) + args[2] = Builder.CreatePtrToInt(args[2], IntPtrTy); + break; - case Builtin::BI__builtin_ptrauth_sign_generic_data: - if (args[1]->getType()->isPointerTy()) - args[1] = Builder.CreatePtrToInt(args[1], IntPtrTy); - break; + case Builtin::BI__builtin_ptrauth_sign_generic_data: + if (args[1]->getType()->isPointerTy()) + args[1] = Builder.CreatePtrToInt(args[1], IntPtrTy); + break; - case Builtin::BI__builtin_ptrauth_blend_discriminator: - case Builtin::BI__builtin_ptrauth_strip: - break; + case Builtin::BI__builtin_ptrauth_blend_discriminator: + case Builtin::BI__builtin_ptrauth_strip: + break; } // Call the intrinsic. diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 402f117976..8cd02a6430 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -7077,7 +7077,6 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, options::OPT_fno_ptrauth_intrinsics, false)) CmdArgs.push_back("-fptrauth-intrinsics"); - // -fsigned-bitfields is default, and clang doesn't yet support // -funsigned-bitfields. if (!Args.hasFlag(options::OPT_fsigned_bitfields, diff --git a/clang/lib/Headers/ptrauth.h b/clang/lib/Headers/ptrauth.h index 5061c8298f..de656abddf 100644 --- a/clang/lib/Headers/ptrauth.h +++ b/clang/lib/Headers/ptrauth.h @@ -67,8 +67,7 @@ typedef __UINTPTR_TYPE__ ptrauth_generic_signature_t; The value must be an expression of pointer type. The key must be a constant expression of type ptrauth_key. The result will have the same type as the original value. */ -#define ptrauth_strip(__value, __key) \ - __builtin_ptrauth_strip(__value, __key) +#define ptrauth_strip(__value, __key) __builtin_ptrauth_strip(__value, __key) /* Blend a constant discriminator into the given pointer-like value to form a new discriminator. Not all bits of the inputs are @@ -80,7 +79,7 @@ typedef __UINTPTR_TYPE__ ptrauth_generic_signature_t; The first argument must be an expression of pointer type. The second argument must be an expression of integer type. The result will have type uintptr_t. */ -#define ptrauth_blend_discriminator(__pointer, __integer) \ +#define ptrauth_blend_discriminator(__pointer, __integer) \ __builtin_ptrauth_blend_discriminator(__pointer, __integer) /* Add a signature to the given pointer value using a specific key, @@ -95,7 +94,7 @@ typedef __UINTPTR_TYPE__ ptrauth_generic_signature_t; The extra data must be an expression of pointer or integer type; if an integer, it will be coerced to ptrauth_extra_data_t. The result will have the same type as the original value. */ -#define ptrauth_sign_unauthenticated(__value, __key, __data) \ +#define ptrauth_sign_unauthenticated(__value, __key, __data) \ __builtin_ptrauth_sign_unauthenticated(__value, __key, __data) /* Authenticate a pointer using one scheme and resign it using another. @@ -115,8 +114,10 @@ typedef __UINTPTR_TYPE__ ptrauth_generic_signature_t; Do not pass a null pointer to this function. A null pointer will not successfully authenticate. */ -#define ptrauth_auth_and_resign(__value, __old_key, __old_data, __new_key, __new_data) \ - __builtin_ptrauth_auth_and_resign(__value, __old_key, __old_data, __new_key, __new_data) +#define ptrauth_auth_and_resign(__value, __old_key, __old_data, __new_key, \ + __new_data) \ + __builtin_ptrauth_auth_and_resign(__value, __old_key, __old_data, __new_key, \ + __new_data) /* Authenticate a data pointer. @@ -128,7 +129,7 @@ typedef __UINTPTR_TYPE__ ptrauth_generic_signature_t; If the authentication fails, dereferencing the resulting pointer will fail. */ -#define ptrauth_auth_data(__value, __old_key, __old_data) \ +#define ptrauth_auth_data(__value, __old_key, __old_data) \ __builtin_ptrauth_auth(__value, __old_key, __old_data) /* Compute a signature for the given pair of pointer-sized values. @@ -150,17 +151,49 @@ typedef __UINTPTR_TYPE__ ptrauth_generic_signature_t; The arguments must be either pointers or integers; if integers, they will be coerce to uintptr_t. */ -#define ptrauth_sign_generic_data(__value, __data) \ +#define ptrauth_sign_generic_data(__value, __data) \ __builtin_ptrauth_sign_generic_data(__value, __data) #else -#define ptrauth_strip(__value, __key) ({(void)__key; __value;}) -#define ptrauth_blend_discriminator(__pointer, __integer) ({(void)__pointer; (void)__integer; ((ptrauth_extra_data_t)0);}) -#define ptrauth_sign_unauthenticated(__value, __key, __data) ({(void)__key; (void)__data; __value;}) -#define ptrauth_auth_and_resign(__value, __old_key, __old_data, __new_key, __new_data) ({(void)__old_key; (void)__old_data; (void)__new_key; (void)__new_data; __value;}) -#define ptrauth_auth_data(__value, __old_key, __old_data) ({(void)__old_key;(void)__old_data;__value;}) -#define ptrauth_sign_generic_data(__value, __data) ({(void)__value;(void)__data;((ptrauth_generic_signature_t)0);}) +#define ptrauth_strip(__value, __key) \ + ({ \ + (void)__key; \ + __value; \ + }) +#define ptrauth_blend_discriminator(__pointer, __integer) \ + ({ \ + (void)__pointer; \ + (void)__integer; \ + ((ptrauth_extra_data_t)0); \ + }) +#define ptrauth_sign_unauthenticated(__value, __key, __data) \ + ({ \ + (void)__key; \ + (void)__data; \ + __value; \ + }) +#define ptrauth_auth_and_resign(__value, __old_key, __old_data, __new_key, \ + __new_data) \ + ({ \ + (void)__old_key; \ + (void)__old_data; \ + (void)__new_key; \ + (void)__new_data; \ + __value; \ + }) +#define ptrauth_auth_data(__value, __old_key, __old_data) \ + ({ \ + (void)__old_key; \ + (void)__old_data; \ + __value; \ + }) +#define ptrauth_sign_generic_data(__value, __data) \ + ({ \ + (void)__value; \ + (void)__data; \ + ((ptrauth_generic_signature_t)0); \ + }) #endif /* __has_feature(ptrauth_intrinsics) */ diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp index a8403f2df9..f49da19d0f 100644 --- a/clang/lib/Sema/SemaChecking.cpp +++ b/clang/lib/Sema/SemaChecking.cpp @@ -1972,10 +1972,15 @@ static bool SemaOpenCLBuiltinToAddr(Sema &S, unsigned BuiltinID, } namespace { - enum PointerAuthOpKind { - PAO_Strip, PAO_Sign, PAO_Auth, PAO_SignGeneric, PAO_Discriminator, - PAO_BlendPointer, PAO_BlendInteger - }; +enum PointerAuthOpKind { + PAO_Strip, + PAO_Sign, + PAO_Auth, + PAO_SignGeneric, + PAO_Discriminator, + PAO_BlendPointer, + PAO_BlendInteger +}; } static bool checkPointerAuthEnabled(Sema &S, Expr *E) { @@ -2003,20 +2008,21 @@ bool Sema::checkConstantPointerAuthKey(Expr *Arg, unsigned &Result) { // Attempt to constant-evaluate the expression. std::optional<llvm::APSInt> KeyValue = Arg->getIntegerConstantExpr(Context); if (!KeyValue) { - Diag(Arg->getExprLoc(), diag::err_expr_not_ice) << 0 - << Arg->getSourceRange(); + Diag(Arg->getExprLoc(), diag::err_expr_not_ice) + << 0 << Arg->getSourceRange(); return true; } // Ask the target to validate the key parameter. if (!Context.getTargetInfo().validatePointerAuthKey(*KeyValue)) { - llvm::SmallString<32> Value; { + llvm::SmallString<32> Value; + { llvm::raw_svector_ostream Str(Value); Str << *KeyValue; } Diag(Arg->getExprLoc(), diag::err_ptrauth_invalid_key) - << Value << Arg->getSourceRange(); + << Value << Arg->getSourceRange(); return true; } @@ -2028,7 +2034,8 @@ static bool checkPointerAuthValue(Sema &S, Expr *&Arg, PointerAuthOpKind OpKind) { if (Arg->hasPlaceholderType()) { ExprResult R = S.CheckPlaceholderExpr(Arg); - if (R.isInvalid()) return true; + if (R.isInvalid()) + return true; Arg = R.get(); } @@ -2036,8 +2043,7 @@ static bool checkPointerAuthValue(Sema &S, Expr *&Arg, return OpKind != PAO_BlendInteger; }; auto allowsInteger = [](PointerAuthOpKind OpKind) { - return OpKind == PAO_Discriminator || - OpKind == PAO_BlendInteger || + return OpKind == PAO_Discriminator || OpKind == PAO_BlendInteger || OpKind == PAO_SignGeneric; }; @@ -2051,16 +2057,15 @@ static bool checkPointerAuthValue(Sema &S, Expr *&Arg, Arg->getType()->isIntegralOrUnscopedEnumerationType()) { ExpectedTy = S.Context.getUIntPtrType(); - // Diagnose the failures. + // Diagnose the failures. } else { S.Diag(Arg->getExprLoc(), diag::err_ptrauth_value_bad_type) - << unsigned(OpKind == PAO_Discriminator ? 1 : - OpKind == PAO_BlendPointer ? 2 : - OpKind == PAO_BlendInteger ? 3 : 0) - << unsigned(allowsInteger(OpKind) ? - (allowsPointer(OpKind) ? 2 : 1) : 0) - << Arg->getType() - << Arg->getSourceRange(); + << unsigned(OpKind == PAO_Discriminator ? 1 + : OpKind == PAO_BlendPointer ? 2 + : OpKind == PAO_BlendInteger ? 3 + : 0) + << unsigned(allowsInteger(OpKind) ? (allowsPointer(OpKind) ? 2 : 1) : 0) + << Arg->getType() << Arg->getSourceRange(); return true; } @@ -2072,18 +2077,20 @@ static bool checkPointerAuthValue(Sema &S, Expr *&Arg, // Warn about null pointers for non-generic sign and auth operations. if ((OpKind == PAO_Sign || OpKind == PAO_Auth) && Arg->isNullPointerConstant(S.Context, Expr::NPC_ValueDependentIsNull)) { - S.Diag(Arg->getExprLoc(), - OpKind == PAO_Sign ? diag::warn_ptrauth_sign_null_pointer - : diag::warn_ptrauth_auth_null_pointer) - << Arg->getSourceRange(); + S.Diag(Arg->getExprLoc(), OpKind == PAO_Sign + ? diag::warn_ptrauth_sign_null_pointer + : diag::warn_ptrauth_auth_null_pointer) + << Arg->getSourceRange(); } return false; } static ExprResult SemaPointerAuthStrip(Sema &S, CallExpr *Call) { - if (checkArgCount(S, Call, 2)) return ExprError(); - if (checkPointerAuthEnabled(S, Call)) return ExprError(); + if (checkArgCount(S, Call, 2)) + return ExprError(); + if (checkPointerAuthEnabled(S, Call)) + return ExprError(); if (checkPointerAuthValue(S, Call->getArgs()[0], PAO_Strip) || checkPointerAuthKey(S, Call->getArgs()[1])) return ExprError(); @@ -2093,8 +2100,10 @@ static ExprResult SemaPointerAuthStrip(Sema &S, CallExpr *Call) { } static ExprResult SemaPointerAuthBlendDiscriminator(Sema &S, CallExpr *Call) { - if (checkArgCount(S, Call, 2)) return ExprError(); - if (checkPointerAuthEnabled(S, Call)) return ExprError(); + if (checkArgCount(S, Call, 2)) + return ExprError(); + if (checkPointerAuthEnabled(S, Call)) + return ExprError(); if (checkPointerAuthValue(S, Call->getArgs()[0], PAO_BlendPointer) || checkPointerAuthValue(S, Call->getArgs()[1], PAO_BlendInteger)) return ExprError(); @@ -2104,8 +2113,10 @@ static ExprResult SemaPointerAuthBlendDiscriminator(Sema &S, CallExpr *Call) { } static ExprResult SemaPointerAuthSignGenericData(Sema &S, CallExpr *Call) { - if (checkArgCount(S, Call, 2)) return ExprError(); - if (checkPointerAuthEnabled(S, Call)) return ExprError(); + if (checkArgCount(S, Call, 2)) + return ExprError(); + if (checkPointerAuthEnabled(S, Call)) + return ExprError(); if (checkPointerAuthValue(S, Call->getArgs()[0], PAO_SignGeneric) || checkPointerAuthValue(S, Call->getArgs()[1], PAO_Discriminator)) return ExprError(); @@ -2116,8 +2127,10 @@ static ExprResult SemaPointerAuthSignGenericData(Sema &S, CallExpr *Call) { static ExprResult SemaPointerAuthSignOrAuth(Sema &S, CallExpr *Call, PointerAuthOpKind OpKind) { - if (checkArgCount(S, Call, 3)) return ExprError(); - if (checkPointerAuthEnabled(S, Call)) return ExprError(); + if (checkArgCount(S, Call, 3)) + return ExprError(); + if (checkPointerAuthEnabled(S, Call)) + return ExprError(); if (checkPointerAuthValue(S, Call->getArgs()[0], OpKind) || checkPointerAuthKey(S, Call->getArgs()[1]) || checkPointerAuthValue(S, Call->getArgs()[2], PAO_Discriminator)) @@ -2128,8 +2141,10 @@ static ExprResult SemaPointerAuthSignOrAuth(Sema &S, CallExpr *Call, } static ExprResult SemaPointerAuthAuthAndResign(Sema &S, CallExpr *Call) { - if (checkArgCount(S, Call, 5)) return ExprError(); - if (checkPointerAuthEnabled(S, Call)) return ExprError(); + if (checkArgCount(S, Call, 5)) + return ExprError(); + if (checkPointerAuthEnabled(S, Call)) + return ExprError(); if (checkPointerAuthValue(S, Call->getArgs()[0], PAO_Auth) || checkPointerAuthKey(S, Call->getArgs()[1]) || checkPointerAuthValue(S, Call->getArgs()[2], PAO_Discriminator) || `````````` </details> https://github.com/llvm/llvm-project/pull/65996 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits