@@ -3655,15 +3655,30 @@ static void GeneratePointerAuthArgs(LangOptions &Opts,
3655
3655
GenerateArg (Args, OPT_fptrauth_auth_traps, SA);
3656
3656
if (Opts.SoftPointerAuth )
3657
3657
GenerateArg (Args, OPT_fptrauth_soft, SA);
3658
+
3659
+ if (Opts.PointerAuthABIVersionEncoded ) {
3660
+ GenerateArg (Args, OPT_fptrauth_abi_version_EQ,
3661
+ Twine (Opts.PointerAuthABIVersion ), SA);
3662
+ if (Opts.PointerAuthKernelABIVersion )
3663
+ GenerateArg (Args, OPT_fptrauth_kernel_abi_version, SA);
3664
+ }
3658
3665
}
3659
3666
3660
- static void ParsePointerAuthArgs (LangOptions &Opts, ArgList &Args) {
3667
+ static void ParsePointerAuthArgs (LangOptions &Opts, ArgList &Args,
3668
+ DiagnosticsEngine &Diags) {
3661
3669
Opts.PointerAuthIntrinsics = Args.hasArg (OPT_fptrauth_intrinsics);
3662
3670
Opts.PointerAuthCalls = Args.hasArg (OPT_fptrauth_calls);
3663
3671
Opts.PointerAuthReturns = Args.hasArg (OPT_fptrauth_returns);
3664
3672
Opts.PointerAuthIndirectGotos = Args.hasArg (OPT_fptrauth_indirect_gotos);
3665
3673
Opts.PointerAuthAuthTraps = Args.hasArg (OPT_fptrauth_auth_traps);
3666
3674
Opts.SoftPointerAuth = Args.hasArg (OPT_fptrauth_soft);
3675
+
3676
+ Opts.PointerAuthABIVersionEncoded =
3677
+ Args.hasArg (OPT_fptrauth_abi_version_EQ) ||
3678
+ Args.hasArg (OPT_fptrauth_kernel_abi_version);
3679
+ Opts.PointerAuthABIVersion =
3680
+ getLastArgIntValue (Args, OPT_fptrauth_abi_version_EQ, 0 , Diags);
3681
+ Opts.PointerAuthKernelABIVersion = Args.hasArg (OPT_fptrauth_kernel_abi_version);
3667
3682
}
3668
3683
3669
3684
// / Check if input file kind and language standard are compatible.
@@ -4958,7 +4973,7 @@ bool CompilerInvocation::CreateFromArgsImpl(
4958
4973
ParseHeaderSearchArgs (Res.getHeaderSearchOpts (), Args, Diags,
4959
4974
Res.getFileSystemOpts ().WorkingDir );
4960
4975
ParseAPINotesArgs (Res.getAPINotesOpts (), Args, Diags);
4961
- ParsePointerAuthArgs (LangOpts, Args);
4976
+ ParsePointerAuthArgs (LangOpts, Args, Diags );
4962
4977
4963
4978
ParseLangArgs (LangOpts, Args, DashX, T, Res.getPreprocessorOpts ().Includes ,
4964
4979
Diags);
0 commit comments