Skip to content

Commit 6ff6191

Browse files
committed
[Driver] Reject -fptrauth-intrinsics on non-AArch64 targets
And add a driver test missing from the original patch #65996.
1 parent 5c663aa commit 6ff6191

File tree

3 files changed

+10
-10
lines changed

3 files changed

+10
-10
lines changed

clang/include/clang/Driver/Options.td

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4105,12 +4105,8 @@ defm strict_return : BoolFOption<"strict-return",
41054105
" of a non-void function as unreachable">,
41064106
PosFlag<SetTrue>>;
41074107

4108-
let Group = f_Group in {
4109-
let Visibility = [ClangOption,CC1Option] in {
4110-
def fptrauth_intrinsics : Flag<["-"], "fptrauth-intrinsics">,
4111-
HelpText<"Enable pointer authentication intrinsics">;
4112-
}
4113-
def fno_ptrauth_intrinsics : Flag<["-"], "fno-ptrauth-intrinsics">;
4108+
let Flags = [TargetSpecific] in {
4109+
defm ptrauth_intrinsics : OptInCC1FFlag<"ptrauth-intrinsics", "Enable pointer authentication intrinsics">;
41144110
}
41154111

41164112
def fenable_matrix : Flag<["-"], "fenable-matrix">, Group<f_Group>,

clang/lib/Driver/ToolChains/Clang.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1776,6 +1776,9 @@ void Clang::AddAArch64TargetArgs(const ArgList &Args,
17761776
}
17771777

17781778
AddUnalignedAccessWarning(CmdArgs);
1779+
1780+
Args.addOptInFlag(CmdArgs, options::OPT_fptrauth_intrinsics,
1781+
options::OPT_fno_ptrauth_intrinsics);
17791782
}
17801783

17811784
void Clang::AddLoongArchTargetArgs(const ArgList &Args,
@@ -7258,10 +7261,6 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
72587261
// -fno-common is the default, set -fcommon only when that flag is set.
72597262
Args.addOptInFlag(CmdArgs, options::OPT_fcommon, options::OPT_fno_common);
72607263

7261-
if (Args.hasFlag(options::OPT_fptrauth_intrinsics,
7262-
options::OPT_fno_ptrauth_intrinsics, false))
7263-
CmdArgs.push_back("-fptrauth-intrinsics");
7264-
72657264
// -fsigned-bitfields is default, and clang doesn't yet support
72667265
// -funsigned-bitfields.
72677266
if (!Args.hasFlag(options::OPT_fsigned_bitfields,

clang/test/Driver/aarch64-ptrauth.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
// RUN: %clang -### -c --target=aarch64 -fno-ptrauth-intrinsics -fptrauth-intrinsics %s 2>&1 | FileCheck %s --check-prefix=INTRIN
2+
// INTRIN: "-cc1"{{.*}} "-fptrauth-intrinsics"
3+
4+
// RUN: not %clang -### -c --target=x86_64 -fptrauth-intrinsics %s 2>&1 | FileCheck %s --check-prefix=ERR
5+
// ERR: error: unsupported option '-fptrauth-intrinsics' for target '{{.*}}'

0 commit comments

Comments
 (0)