diff options
| author | Florian Mayer <fmayer@google.com> | 2024-08-07 14:00:59 -0700 |
|---|---|---|
| committer | Florian Mayer <fmayer@google.com> | 2024-08-07 14:00:59 -0700 |
| commit | 890289dfb61757cc3f8fd5feb093131ebc3b7477 (patch) | |
| tree | b9b69f1881544d20a2c05f84c42a0a5805128f4e /clang/lib/Frontend/CompilerInvocation.cpp | |
| parent | b58d0717d588624eae77aea330e94f52607448c9 (diff) | |
| parent | 6a3604ef8592edf39fedd6af8100aefafd6d931d (diff) | |
[𝘀𝗽𝗿] changes introduced through rebaseusers/fmayer/spr/main.compiler-rt-tsan-leave-bufferedstacktrace-uninit
Created using spr 1.3.4
[skip ci]
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
| -rw-r--r-- | clang/lib/Frontend/CompilerInvocation.cpp | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index f6b6c44a4cab..225bd6416ce5 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -1503,6 +1503,12 @@ void CompilerInvocation::setDefaultPointerAuthOptions( PointerAuthSchema(Key::ASIA, true, Discrimination::Decl); Opts.CXXMemberFunctionPointers = PointerAuthSchema(Key::ASIA, false, Discrimination::Type); + + if (LangOpts.PointerAuthInitFini) { + Opts.InitFiniPointers = PointerAuthSchema( + Key::ASIA, LangOpts.PointerAuthInitFiniAddressDiscrimination, + Discrimination::Constant, InitFiniPointerConstantDiscriminator); + } } Opts.IndirectGotos = LangOpts.PointerAuthIndirectGotos; } @@ -3425,11 +3431,12 @@ static void GeneratePointerAuthArgs(const LangOptions &Opts, GenerateArg(Consumer, OPT_fptrauth_vtable_pointer_type_discrimination); if (Opts.PointerAuthTypeInfoVTPtrDiscrimination) GenerateArg(Consumer, OPT_fptrauth_type_info_vtable_pointer_discrimination); - - if (Opts.PointerAuthInitFini) - GenerateArg(Consumer, OPT_fptrauth_init_fini); if (Opts.PointerAuthFunctionTypeDiscrimination) GenerateArg(Consumer, OPT_fptrauth_function_pointer_type_discrimination); + if (Opts.PointerAuthInitFini) + GenerateArg(Consumer, OPT_fptrauth_init_fini); + if (Opts.PointerAuthInitFiniAddressDiscrimination) + GenerateArg(Consumer, OPT_fptrauth_init_fini_address_discrimination); } static void ParsePointerAuthArgs(LangOptions &Opts, ArgList &Args, @@ -3445,10 +3452,11 @@ static void ParsePointerAuthArgs(LangOptions &Opts, ArgList &Args, Args.hasArg(OPT_fptrauth_vtable_pointer_type_discrimination); Opts.PointerAuthTypeInfoVTPtrDiscrimination = Args.hasArg(OPT_fptrauth_type_info_vtable_pointer_discrimination); - - Opts.PointerAuthInitFini = Args.hasArg(OPT_fptrauth_init_fini); Opts.PointerAuthFunctionTypeDiscrimination = Args.hasArg(OPT_fptrauth_function_pointer_type_discrimination); + Opts.PointerAuthInitFini = Args.hasArg(OPT_fptrauth_init_fini); + Opts.PointerAuthInitFiniAddressDiscrimination = + Args.hasArg(OPT_fptrauth_init_fini_address_discrimination); } /// Check if input file kind and language standard are compatible. |
