Skip to content

Commit f571700

Browse files
committed
Address review comments
1 parent 394f07f commit f571700

File tree

4 files changed

+34
-32
lines changed

4 files changed

+34
-32
lines changed

clang/include/clang/Driver/ToolChain.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,9 @@ class ToolChain {
214214
FileType Type, bool AddArch,
215215
bool IsFortran = false) const;
216216

217+
virtual void addPointerAuthFlags(const llvm::opt::ArgList &DriverArgs,
218+
llvm::opt::ArgStringList &CC1Args) const;
219+
217220
/// Find the target-specific subdirectory for the current target triple under
218221
/// \p BaseDir, doing fallback triple searches as necessary.
219222
/// \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
@@ -783,6 +783,32 @@ std::string ToolChain::buildCompilerRTBasename(const llvm::opt::ArgList &Args,
783783
return (Prefix + Twine(LibName) + Component + ArchAndEnv + Suffix).str();
784784
}
785785

786+
void ToolChain::addPointerAuthFlags(const llvm::opt::ArgList &DriverArgs,
787+
llvm::opt::ArgStringList &CC1Args) const {
788+
DriverArgs.addOptInFlag(CC1Args, options::OPT_fptrauth_intrinsics,
789+
options::OPT_fno_ptrauth_intrinsics);
790+
DriverArgs.addOptInFlag(CC1Args, options::OPT_fptrauth_calls,
791+
options::OPT_fno_ptrauth_calls);
792+
DriverArgs.addOptInFlag(CC1Args, options::OPT_fptrauth_returns,
793+
options::OPT_fno_ptrauth_returns);
794+
DriverArgs.addOptInFlag(CC1Args, options::OPT_fptrauth_auth_traps,
795+
options::OPT_fno_ptrauth_auth_traps);
796+
DriverArgs.addOptInFlag(
797+
CC1Args, options::OPT_fptrauth_vtable_pointer_address_discrimination,
798+
options::OPT_fno_ptrauth_vtable_pointer_address_discrimination);
799+
DriverArgs.addOptInFlag(
800+
CC1Args, options::OPT_fptrauth_vtable_pointer_type_discrimination,
801+
options::OPT_fno_ptrauth_vtable_pointer_type_discrimination);
802+
DriverArgs.addOptInFlag(
803+
CC1Args, options::OPT_fptrauth_type_info_vtable_pointer_discrimination,
804+
options::OPT_fno_ptrauth_type_info_vtable_pointer_discrimination);
805+
DriverArgs.addOptInFlag(
806+
CC1Args, options::OPT_fptrauth_function_pointer_type_discrimination,
807+
options::OPT_fno_ptrauth_function_pointer_type_discrimination);
808+
DriverArgs.addOptInFlag(CC1Args, options::OPT_fptrauth_indirect_gotos,
809+
options::OPT_fno_ptrauth_indirect_gotos);
810+
}
811+
786812
std::string ToolChain::getCompilerRT(const ArgList &Args, StringRef Component,
787813
FileType Type, bool IsFortran) const {
788814
// Check for runtime files in the new layout without the architecture first.

clang/lib/Driver/ToolChains/Linux.cpp

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

536-
static void addPointerAuthFlags(const llvm::opt::ArgList &DriverArgs,
537-
llvm::opt::ArgStringList &CC1Args) {
538-
DriverArgs.addOptInFlag(CC1Args, options::OPT_fptrauth_intrinsics,
539-
options::OPT_fno_ptrauth_intrinsics);
540-
541-
DriverArgs.addOptInFlag(CC1Args, options::OPT_fptrauth_calls,
542-
options::OPT_fno_ptrauth_calls);
543-
544-
DriverArgs.addOptInFlag(CC1Args, options::OPT_fptrauth_returns,
545-
options::OPT_fno_ptrauth_returns);
546-
547-
DriverArgs.addOptInFlag(CC1Args, options::OPT_fptrauth_auth_traps,
548-
options::OPT_fno_ptrauth_auth_traps);
549-
550-
DriverArgs.addOptInFlag(
551-
CC1Args, options::OPT_fptrauth_vtable_pointer_address_discrimination,
552-
options::OPT_fno_ptrauth_vtable_pointer_address_discrimination);
553-
554-
DriverArgs.addOptInFlag(
555-
CC1Args, options::OPT_fptrauth_vtable_pointer_type_discrimination,
556-
options::OPT_fno_ptrauth_vtable_pointer_type_discrimination);
557-
558-
DriverArgs.addOptInFlag(
559-
CC1Args, options::OPT_fptrauth_type_info_vtable_pointer_discrimination,
560-
options::OPT_fno_ptrauth_type_info_vtable_pointer_discrimination);
561-
562-
DriverArgs.addOptInFlag(
563-
CC1Args, options::OPT_fptrauth_function_pointer_type_discrimination,
564-
options::OPT_fno_ptrauth_function_pointer_type_discrimination);
565-
566-
DriverArgs.addOptInFlag(CC1Args, options::OPT_fptrauth_indirect_gotos,
567-
options::OPT_fno_ptrauth_indirect_gotos);
536+
void Linux::addPointerAuthFlags(const llvm::opt::ArgList &DriverArgs,
537+
llvm::opt::ArgStringList &CC1Args) const {
538+
ToolChain::addPointerAuthFlags(DriverArgs, CC1Args);
568539

569540
DriverArgs.addOptInFlag(CC1Args, options::OPT_fptrauth_init_fini,
570541
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
@@ -74,6 +74,8 @@ class LLVM_LIBRARY_VISIBILITY Linux : public Generic_ELF {
7474
Tool *buildAssembler() const override;
7575
Tool *buildLinker() const override;
7676
Tool *buildStaticLibTool() const override;
77+
void addPointerAuthFlags(const llvm::opt::ArgList &DriverArgs,
78+
llvm::opt::ArgStringList &CC1Args) const override;
7779
};
7880

7981
} // end namespace toolchains

0 commit comments

Comments
 (0)