diff options
Diffstat (limited to 'clang/lib')
| -rw-r--r-- | clang/lib/Basic/Targets.cpp | 2 | ||||
| -rw-r--r-- | clang/lib/Driver/ToolChains/Fuchsia.cpp | 14 |
2 files changed, 13 insertions, 3 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index 664260d184f..c063f8ca447 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -383,6 +383,8 @@ TargetInfo *AllocateTarget(const llvm::Triple &Triple, switch (os) { case llvm::Triple::FreeBSD: return new FreeBSDTargetInfo<RISCV64TargetInfo>(Triple, Opts); + case llvm::Triple::Fuchsia: + return new FuchsiaTargetInfo<RISCV64TargetInfo>(Triple, Opts); case llvm::Triple::Linux: return new LinuxTargetInfo<RISCV64TargetInfo>(Triple, Opts); default: diff --git a/clang/lib/Driver/ToolChains/Fuchsia.cpp b/clang/lib/Driver/ToolChains/Fuchsia.cpp index df2b4724dc2..9bea0b15c87 100644 --- a/clang/lib/Driver/ToolChains/Fuchsia.cpp +++ b/clang/lib/Driver/ToolChains/Fuchsia.cpp @@ -224,7 +224,7 @@ Fuchsia::Fuchsia(const Driver &D, const llvm::Triple &Triple, std::string Fuchsia::ComputeEffectiveClangTriple(const ArgList &Args, types::ID InputType) const { llvm::Triple Triple(ComputeLLVMTriple(Args, InputType)); - return (Triple.getArchName() + "-" + Triple.getOSName()).str(); + return Triple.str(); } Tool *Fuchsia::buildLinker() const { @@ -344,9 +344,17 @@ SanitizerMask Fuchsia::getSupportedSanitizers() const { SanitizerMask Fuchsia::getDefaultSanitizers() const { SanitizerMask Res; - if (getTriple().getArch() == llvm::Triple::aarch64) + switch (getTriple().getArch()) { + case llvm::Triple::aarch64: Res |= SanitizerKind::ShadowCallStack; - else + break; + case llvm::Triple::x86_64: Res |= SanitizerKind::SafeStack; + break; + case llvm::Triple::riscv64: + break; + default: + llvm_unreachable("invalid architecture"); + } return Res; } |

