]> granicus.if.org Git - clang/commitdiff
Better OpenBSD frontend support
authorKamil Rytarowski <n54@gmx.com>
Sat, 3 Mar 2018 11:47:27 +0000 (11:47 +0000)
committerKamil Rytarowski <n54@gmx.com>
Sat, 3 Mar 2018 11:47:27 +0000 (11:47 +0000)
Summary:
- Like other *BSD, conditioning certain flags to pass
- To prepare future OpenBSD sanitisers.

Patch by: David CARLIER

Reviewers: dlj, krytarowski, vitalybuka

Reviewed By: vitalybuka

Subscribers: krytarowski, cfe-commits

Differential Revision: https://reviews.llvm.org/D43818

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@326645 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Driver/ToolChain.cpp
lib/Driver/ToolChains/CommonArgs.cpp
lib/Driver/ToolChains/Gnu.cpp

index 46865c979be7b6cfe8b79e30251b400b51e203f3..ea0554b3f9b213683556657cae5bb6a4139afff3 100644 (file)
@@ -329,6 +329,8 @@ StringRef ToolChain::getOSLibName() const {
     return "freebsd";
   case llvm::Triple::NetBSD:
     return "netbsd";
+  case llvm::Triple::OpenBSD:
+    return "openbsd";
   case llvm::Triple::Solaris:
     return "sunos";
   default:
index cc9fcb1d5a1bf092ae0371d6f26c23218d79bc9f..17ab82e97c3a5d2ca5e98aa8abc55f4ace0fdf0c 100644 (file)
@@ -542,12 +542,14 @@ void tools::linkSanitizerRuntimeDeps(const ToolChain &TC,
   // There's no libpthread or librt on RTEMS.
   if (TC.getTriple().getOS() != llvm::Triple::RTEMS) {
     CmdArgs.push_back("-lpthread");
-    CmdArgs.push_back("-lrt");
+    if (TC.getTriple().getOS() != llvm::Triple::OpenBSD)
+      CmdArgs.push_back("-lrt");
   }
   CmdArgs.push_back("-lm");
   // There's no libdl on all OSes.
   if (TC.getTriple().getOS() != llvm::Triple::FreeBSD &&
       TC.getTriple().getOS() != llvm::Triple::NetBSD &&
+      TC.getTriple().getOS() != llvm::Triple::OpenBSD &&
       TC.getTriple().getOS() != llvm::Triple::RTEMS)
     CmdArgs.push_back("-ldl");
   // Required for backtrace on some OSes
index 5e0a299a6ea820a9440be783c0a9e561a3be6023..041bf78f7bc096bf40c1797039513b10533dea20 100644 (file)
@@ -242,11 +242,13 @@ static void linkXRayRuntimeDeps(const ToolChain &TC, const ArgList &Args,
                                 ArgStringList &CmdArgs) {
   CmdArgs.push_back("--no-as-needed");
   CmdArgs.push_back("-lpthread");
-  CmdArgs.push_back("-lrt");
+  if (TC.getTriple().getOS() != llvm::Triple::OpenBSD)
+    CmdArgs.push_back("-lrt");
   CmdArgs.push_back("-lm");
 
   if (TC.getTriple().getOS() != llvm::Triple::FreeBSD &&
-      TC.getTriple().getOS() != llvm::Triple::NetBSD)
+      TC.getTriple().getOS() != llvm::Triple::NetBSD &&
+      TC.getTriple().getOS() != llvm::Triple::OpenBSD)
     CmdArgs.push_back("-ldl");
 }