Skip to content

Commit 3afcc78

Browse files
committed
Address review comments
1 parent 700c00e commit 3afcc78

File tree

5 files changed

+34
-66
lines changed

5 files changed

+34
-66
lines changed

clang/include/clang/Driver/ToolChain.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,9 @@ class ToolChain {
219219
FileType Type,
220220
bool AddArch) const;
221221

222+
virtual void addPointerAuthFlags(const llvm::opt::ArgList &DriverArgs,
223+
llvm::opt::ArgStringList &CC1Args) const;
224+
222225
/// Find the target-specific subdirectory for the current target triple under
223226
/// \p BaseDir, doing fallback triple searches as necessary.
224227
/// \return The subdirectory path if it exists.

clang/lib/Driver/ToolChain.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -751,6 +751,32 @@ std::string ToolChain::buildCompilerRTBasename(const llvm::opt::ArgList &Args,
751751
return (Prefix + Twine("clang_rt.") + Component + ArchAndEnv + Suffix).str();
752752
}
753753

754+
void ToolChain::addPointerAuthFlags(const llvm::opt::ArgList &DriverArgs,
755+
llvm::opt::ArgStringList &CC1Args) const {
756+
DriverArgs.addOptInFlag(CC1Args, options::OPT_fptrauth_intrinsics,
757+
options::OPT_fno_ptrauth_intrinsics);
758+
DriverArgs.addOptInFlag(CC1Args, options::OPT_fptrauth_calls,
759+
options::OPT_fno_ptrauth_calls);
760+
DriverArgs.addOptInFlag(CC1Args, options::OPT_fptrauth_returns,
761+
options::OPT_fno_ptrauth_returns);
762+
DriverArgs.addOptInFlag(CC1Args, options::OPT_fptrauth_auth_traps,
763+
options::OPT_fno_ptrauth_auth_traps);
764+
DriverArgs.addOptInFlag(
765+
CC1Args, options::OPT_fptrauth_vtable_pointer_address_discrimination,
766+
options::OPT_fno_ptrauth_vtable_pointer_address_discrimination);
767+
DriverArgs.addOptInFlag(
768+
CC1Args, options::OPT_fptrauth_vtable_pointer_type_discrimination,
769+
options::OPT_fno_ptrauth_vtable_pointer_type_discrimination);
770+
DriverArgs.addOptInFlag(
771+
CC1Args, options::OPT_fptrauth_type_info_vtable_pointer_discrimination,
772+
options::OPT_fno_ptrauth_type_info_vtable_pointer_discrimination);
773+
DriverArgs.addOptInFlag(
774+
CC1Args, options::OPT_fptrauth_function_pointer_type_discrimination,
775+
options::OPT_fno_ptrauth_function_pointer_type_discrimination);
776+
DriverArgs.addOptInFlag(CC1Args, options::OPT_fptrauth_indirect_gotos,
777+
options::OPT_fno_ptrauth_indirect_gotos);
778+
}
779+
754780
std::string ToolChain::getCompilerRT(const ArgList &Args, StringRef Component,
755781
FileType Type) const {
756782
// Check for runtime files in the new layout without the architecture first.

clang/lib/Driver/ToolChains/Darwin.cpp

Lines changed: 0 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -3061,40 +3061,6 @@ bool Darwin::isSizedDeallocationUnavailable() const {
30613061
return TargetVersion < sizedDeallocMinVersion(OS);
30623062
}
30633063

3064-
static void addPointerAuthFlags(const llvm::opt::ArgList &DriverArgs,
3065-
llvm::opt::ArgStringList &CC1Args) {
3066-
DriverArgs.addOptInFlag(CC1Args, options::OPT_fptrauth_intrinsics,
3067-
options::OPT_fno_ptrauth_intrinsics);
3068-
3069-
DriverArgs.addOptInFlag(CC1Args, options::OPT_fptrauth_calls,
3070-
options::OPT_fno_ptrauth_calls);
3071-
3072-
DriverArgs.addOptInFlag(CC1Args, options::OPT_fptrauth_returns,
3073-
options::OPT_fno_ptrauth_returns);
3074-
3075-
DriverArgs.addOptInFlag(CC1Args, options::OPT_fptrauth_auth_traps,
3076-
options::OPT_fno_ptrauth_auth_traps);
3077-
3078-
DriverArgs.addOptInFlag(
3079-
CC1Args, options::OPT_fptrauth_vtable_pointer_address_discrimination,
3080-
options::OPT_fno_ptrauth_vtable_pointer_address_discrimination);
3081-
3082-
DriverArgs.addOptInFlag(
3083-
CC1Args, options::OPT_fptrauth_vtable_pointer_type_discrimination,
3084-
options::OPT_fno_ptrauth_vtable_pointer_type_discrimination);
3085-
3086-
DriverArgs.addOptInFlag(
3087-
CC1Args, options::OPT_fptrauth_type_info_vtable_pointer_discrimination,
3088-
options::OPT_fno_ptrauth_type_info_vtable_pointer_discrimination);
3089-
3090-
DriverArgs.addOptInFlag(
3091-
CC1Args, options::OPT_fptrauth_function_pointer_type_discrimination,
3092-
options::OPT_fno_ptrauth_function_pointer_type_discrimination);
3093-
3094-
DriverArgs.addOptInFlag(CC1Args, options::OPT_fptrauth_indirect_gotos,
3095-
options::OPT_fno_ptrauth_indirect_gotos);
3096-
}
3097-
30983064
void Darwin::addClangTargetOptions(
30993065
const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args,
31003066
Action::OffloadKind DeviceOffloadKind) const {

clang/lib/Driver/ToolChains/Linux.cpp

Lines changed: 3 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -543,38 +543,9 @@ static void handlePAuthABI(const Driver &D, const ArgList &DriverArgs,
543543
CC1Args.push_back("-faarch64-jump-table-hardening");
544544
}
545545

546-
static void addPointerAuthFlags(const llvm::opt::ArgList &DriverArgs,
547-
llvm::opt::ArgStringList &CC1Args) {
548-
DriverArgs.addOptInFlag(CC1Args, options::OPT_fptrauth_intrinsics,
549-
options::OPT_fno_ptrauth_intrinsics);
550-
551-
DriverArgs.addOptInFlag(CC1Args, options::OPT_fptrauth_calls,
552-
options::OPT_fno_ptrauth_calls);
553-
554-
DriverArgs.addOptInFlag(CC1Args, options::OPT_fptrauth_returns,
555-
options::OPT_fno_ptrauth_returns);
556-
557-
DriverArgs.addOptInFlag(CC1Args, options::OPT_fptrauth_auth_traps,
558-
options::OPT_fno_ptrauth_auth_traps);
559-
560-
DriverArgs.addOptInFlag(
561-
CC1Args, options::OPT_fptrauth_vtable_pointer_address_discrimination,
562-
options::OPT_fno_ptrauth_vtable_pointer_address_discrimination);
563-
564-
DriverArgs.addOptInFlag(
565-
CC1Args, options::OPT_fptrauth_vtable_pointer_type_discrimination,
566-
options::OPT_fno_ptrauth_vtable_pointer_type_discrimination);
567-
568-
DriverArgs.addOptInFlag(
569-
CC1Args, options::OPT_fptrauth_type_info_vtable_pointer_discrimination,
570-
options::OPT_fno_ptrauth_type_info_vtable_pointer_discrimination);
571-
572-
DriverArgs.addOptInFlag(
573-
CC1Args, options::OPT_fptrauth_function_pointer_type_discrimination,
574-
options::OPT_fno_ptrauth_function_pointer_type_discrimination);
575-
576-
DriverArgs.addOptInFlag(CC1Args, options::OPT_fptrauth_indirect_gotos,
577-
options::OPT_fno_ptrauth_indirect_gotos);
546+
void Linux::addPointerAuthFlags(const llvm::opt::ArgList &DriverArgs,
547+
llvm::opt::ArgStringList &CC1Args) const {
548+
ToolChain::addPointerAuthFlags(DriverArgs, CC1Args);
578549

579550
DriverArgs.addOptInFlag(CC1Args, options::OPT_fptrauth_init_fini,
580551
options::OPT_fno_ptrauth_init_fini);

clang/lib/Driver/ToolChains/Linux.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,8 @@ class LLVM_LIBRARY_VISIBILITY Linux : public Generic_ELF {
7272
Tool *buildAssembler() const override;
7373
Tool *buildLinker() const override;
7474
Tool *buildStaticLibTool() const override;
75+
void addPointerAuthFlags(const llvm::opt::ArgList &DriverArgs,
76+
llvm::opt::ArgStringList &CC1Args) const override;
7577
};
7678

7779
} // end namespace toolchains

0 commit comments

Comments
 (0)