Skip to content

Commit 327fc8e

Browse files
committed
Address review comments
1 parent f571700 commit 327fc8e

File tree

5 files changed

+37
-50
lines changed

5 files changed

+37
-50
lines changed

clang/include/clang/Driver/ToolChain.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -214,9 +214,6 @@ 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-
220217
/// Find the target-specific subdirectory for the current target triple under
221218
/// \p BaseDir, doing fallback triple searches as necessary.
222219
/// \return The subdirectory path if it exists.

clang/lib/Driver/ToolChain.cpp

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -783,32 +783,6 @@ 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-
812786
std::string ToolChain::getCompilerRT(const ArgList &Args, StringRef Component,
813787
FileType Type, bool IsFortran) const {
814788
// Check for runtime files in the new layout without the architecture first.

clang/lib/Driver/ToolChains/Clang.cpp

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1662,6 +1662,42 @@ void Clang::AddAArch64TargetArgs(const ArgList &Args,
16621662

16631663
AddUnalignedAccessWarning(CmdArgs);
16641664

1665+
if (Triple.isOSDarwin() ||
1666+
(Triple.isOSLinux() &&
1667+
Triple.getEnvironment() == llvm::Triple::PAuthTest)) {
1668+
Args.addOptInFlag(CmdArgs, options::OPT_fptrauth_intrinsics,
1669+
options::OPT_fno_ptrauth_intrinsics);
1670+
Args.addOptInFlag(CmdArgs, options::OPT_fptrauth_calls,
1671+
options::OPT_fno_ptrauth_calls);
1672+
Args.addOptInFlag(CmdArgs, options::OPT_fptrauth_returns,
1673+
options::OPT_fno_ptrauth_returns);
1674+
Args.addOptInFlag(CmdArgs, options::OPT_fptrauth_auth_traps,
1675+
options::OPT_fno_ptrauth_auth_traps);
1676+
Args.addOptInFlag(
1677+
CmdArgs, options::OPT_fptrauth_vtable_pointer_address_discrimination,
1678+
options::OPT_fno_ptrauth_vtable_pointer_address_discrimination);
1679+
Args.addOptInFlag(
1680+
CmdArgs, options::OPT_fptrauth_vtable_pointer_type_discrimination,
1681+
options::OPT_fno_ptrauth_vtable_pointer_type_discrimination);
1682+
Args.addOptInFlag(
1683+
CmdArgs, options::OPT_fptrauth_type_info_vtable_pointer_discrimination,
1684+
options::OPT_fno_ptrauth_type_info_vtable_pointer_discrimination);
1685+
Args.addOptInFlag(
1686+
CmdArgs, options::OPT_fptrauth_function_pointer_type_discrimination,
1687+
options::OPT_fno_ptrauth_function_pointer_type_discrimination);
1688+
Args.addOptInFlag(CmdArgs, options::OPT_fptrauth_indirect_gotos,
1689+
options::OPT_fno_ptrauth_indirect_gotos);
1690+
}
1691+
if (Triple.isOSLinux() &&
1692+
Triple.getEnvironment() == llvm::Triple::PAuthTest) {
1693+
Args.addOptInFlag(CmdArgs, options::OPT_fptrauth_init_fini,
1694+
options::OPT_fno_ptrauth_init_fini);
1695+
Args.addOptInFlag(
1696+
CmdArgs, options::OPT_fptrauth_init_fini_address_discrimination,
1697+
options::OPT_fno_ptrauth_init_fini_address_discrimination);
1698+
Args.addOptInFlag(CmdArgs, options::OPT_fptrauth_elf_got,
1699+
options::OPT_fno_ptrauth_elf_got);
1700+
}
16651701
Args.addOptInFlag(CmdArgs, options::OPT_faarch64_jump_table_hardening,
16661702
options::OPT_fno_aarch64_jump_table_hardening);
16671703

clang/lib/Driver/ToolChains/Linux.cpp

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -533,30 +533,12 @@ static void handlePAuthABI(const Driver &D, const ArgList &DriverArgs,
533533
CC1Args.push_back("-faarch64-jump-table-hardening");
534534
}
535535

536-
void Linux::addPointerAuthFlags(const llvm::opt::ArgList &DriverArgs,
537-
llvm::opt::ArgStringList &CC1Args) const {
538-
ToolChain::addPointerAuthFlags(DriverArgs, CC1Args);
539-
540-
DriverArgs.addOptInFlag(CC1Args, options::OPT_fptrauth_init_fini,
541-
options::OPT_fno_ptrauth_init_fini);
542-
543-
DriverArgs.addOptInFlag(
544-
CC1Args, options::OPT_fptrauth_init_fini_address_discrimination,
545-
options::OPT_fno_ptrauth_init_fini_address_discrimination);
546-
547-
DriverArgs.addOptInFlag(CC1Args, options::OPT_fptrauth_elf_got,
548-
options::OPT_fno_ptrauth_elf_got);
549-
}
550-
551536
void Linux::addClangTargetOptions(const llvm::opt::ArgList &DriverArgs,
552537
llvm::opt::ArgStringList &CC1Args,
553538
Action::OffloadKind DeviceOffloadKind) const {
554539
llvm::Triple Triple(ComputeEffectiveClangTriple(DriverArgs));
555-
if (Triple.isAArch64() &&
556-
Triple.getEnvironment() == llvm::Triple::PAuthTest) {
557-
addPointerAuthFlags(DriverArgs, CC1Args);
540+
if (Triple.isAArch64() && Triple.getEnvironment() == llvm::Triple::PAuthTest)
558541
handlePAuthABI(getDriver(), DriverArgs, CC1Args);
559-
}
560542
Generic_ELF::addClangTargetOptions(DriverArgs, CC1Args, DeviceOffloadKind);
561543
}
562544

clang/lib/Driver/ToolChains/Linux.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,6 @@ 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;
7977
};
8078

8179
} // end namespace toolchains

0 commit comments

Comments
 (0)