@@ -3655,15 +3655,30 @@ static void GeneratePointerAuthArgs(LangOptions &Opts,
36553655 GenerateArg (Args, OPT_fptrauth_auth_traps, SA);
36563656 if (Opts.SoftPointerAuth )
36573657 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+ }
36583665}
36593666
3660- static void ParsePointerAuthArgs (LangOptions &Opts, ArgList &Args) {
3667+ static void ParsePointerAuthArgs (LangOptions &Opts, ArgList &Args,
3668+ DiagnosticsEngine &Diags) {
36613669 Opts.PointerAuthIntrinsics = Args.hasArg (OPT_fptrauth_intrinsics);
36623670 Opts.PointerAuthCalls = Args.hasArg (OPT_fptrauth_calls);
36633671 Opts.PointerAuthReturns = Args.hasArg (OPT_fptrauth_returns);
36643672 Opts.PointerAuthIndirectGotos = Args.hasArg (OPT_fptrauth_indirect_gotos);
36653673 Opts.PointerAuthAuthTraps = Args.hasArg (OPT_fptrauth_auth_traps);
36663674 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);
36673682}
36683683
36693684// / Check if input file kind and language standard are compatible.
@@ -4958,7 +4973,7 @@ bool CompilerInvocation::CreateFromArgsImpl(
49584973 ParseHeaderSearchArgs (Res.getHeaderSearchOpts (), Args, Diags,
49594974 Res.getFileSystemOpts ().WorkingDir );
49604975 ParseAPINotesArgs (Res.getAPINotesOpts (), Args, Diags);
4961- ParsePointerAuthArgs (LangOpts, Args);
4976+ ParsePointerAuthArgs (LangOpts, Args, Diags );
49624977
49634978 ParseLangArgs (LangOpts, Args, DashX, T, Res.getPreprocessorOpts ().Includes ,
49644979 Diags);
0 commit comments