[PATCH] D43818: Better OpenBSD frontend support
This revision was automatically updated to reflect the committed changes. Closed by commit rL326645: Better OpenBSD frontend support (authored by kamil, committed by ). Herald added a subscriber: llvm-commits. Changed prior to commit: https://reviews.llvm.org/D43818?vs=136804&id=136903#toc Repository: rL LLVM https://reviews.llvm.org/D43818 Files: cfe/trunk/lib/Driver/ToolChain.cpp cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp cfe/trunk/lib/Driver/ToolChains/Gnu.cpp Index: cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp === --- cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp +++ cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp @@ -542,12 +542,14 @@ // 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: cfe/trunk/lib/Driver/ToolChains/Gnu.cpp === --- cfe/trunk/lib/Driver/ToolChains/Gnu.cpp +++ cfe/trunk/lib/Driver/ToolChains/Gnu.cpp @@ -242,11 +242,13 @@ 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"); } Index: cfe/trunk/lib/Driver/ToolChain.cpp === --- cfe/trunk/lib/Driver/ToolChain.cpp +++ cfe/trunk/lib/Driver/ToolChain.cpp @@ -329,6 +329,8 @@ return "freebsd"; case llvm::Triple::NetBSD: return "netbsd"; + case llvm::Triple::OpenBSD: +return "openbsd"; case llvm::Triple::Solaris: return "sunos"; default: Index: cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp === --- cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp +++ cfe/trunk/lib/Driver/ToolChains/CommonArgs.cpp @@ -542,12 +542,14 @@ // 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: cfe/trunk/lib/Driver/ToolChains/Gnu.cpp === --- cfe/trunk/lib/Driver/ToolChains/Gnu.cpp +++ cfe/trunk/lib/Driver/ToolChains/Gnu.cpp @@ -242,11 +242,13 @@ 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"); } Index: cfe/trunk/lib/Driver/ToolChain.cpp === --- cfe/trunk/lib/Driver/ToolChain.cpp +++ cfe/trunk/lib/Driver/ToolChain.cpp @@ -329,6 +329,8 @@ return "freebsd"; case llvm::Triple::NetBSD: return "netbsd"; + case llvm::Triple::OpenBSD: +return "openbsd"; case llvm::Triple::Solaris: return "sunos"; default: ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D43818: Better OpenBSD frontend support
devnexen updated this revision to Diff 136804. devnexen added a comment. backtrace on OpenBSD is not base library but a package. Plus not needed for the UBsan subset. https://reviews.llvm.org/D43818 Files: lib/Driver/ToolChain.cpp lib/Driver/ToolChains/CommonArgs.cpp lib/Driver/ToolChains/Gnu.cpp Index: lib/Driver/ToolChains/Gnu.cpp === --- lib/Driver/ToolChains/Gnu.cpp +++ lib/Driver/ToolChains/Gnu.cpp @@ -242,11 +242,13 @@ 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"); } Index: lib/Driver/ToolChains/CommonArgs.cpp === --- lib/Driver/ToolChains/CommonArgs.cpp +++ lib/Driver/ToolChains/CommonArgs.cpp @@ -542,12 +542,14 @@ // 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: lib/Driver/ToolChain.cpp === --- lib/Driver/ToolChain.cpp +++ lib/Driver/ToolChain.cpp @@ -329,6 +329,8 @@ return "freebsd"; case llvm::Triple::NetBSD: return "netbsd"; + case llvm::Triple::OpenBSD: +return "openbsd"; case llvm::Triple::Solaris: return "sunos"; default: Index: lib/Driver/ToolChains/Gnu.cpp === --- lib/Driver/ToolChains/Gnu.cpp +++ lib/Driver/ToolChains/Gnu.cpp @@ -242,11 +242,13 @@ 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"); } Index: lib/Driver/ToolChains/CommonArgs.cpp === --- lib/Driver/ToolChains/CommonArgs.cpp +++ lib/Driver/ToolChains/CommonArgs.cpp @@ -542,12 +542,14 @@ // 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: lib/Driver/ToolChain.cpp === --- lib/Driver/ToolChain.cpp +++ lib/Driver/ToolChain.cpp @@ -329,6 +329,8 @@ return "freebsd"; case llvm::Triple::NetBSD: return "netbsd"; + case llvm::Triple::OpenBSD: +return "openbsd"; case llvm::Triple::Solaris: return "sunos"; default: ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D43818: Better OpenBSD frontend support
devnexen added inline comments. Comment at: lib/Driver/ToolChains/CommonArgs.cpp:545 CmdArgs.push_back("-lpthread"); -CmdArgs.push_back("-lrt"); +if (TC.getTriple().getOS() != llvm::Triple::OpenBSD) + CmdArgs.push_back("-lrt"); krytarowski wrote: > It's a matter of taste, but I would try to omit nested `if`. I just went to the "lesser changes" route as the case here is pretty simple. Repository: rC Clang https://reviews.llvm.org/D43818 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D43818: Better OpenBSD frontend support
krytarowski added inline comments. Comment at: lib/Driver/ToolChains/CommonArgs.cpp:545 CmdArgs.push_back("-lpthread"); -CmdArgs.push_back("-lrt"); +if (TC.getTriple().getOS() != llvm::Triple::OpenBSD) + CmdArgs.push_back("-lrt"); It's a matter of taste, but I would try to omit nested `if`. Repository: rC Clang https://reviews.llvm.org/D43818 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D43818: Better OpenBSD frontend support
devnexen added a comment. Alright then. I ll probably try to push the compiler-rt counterpart (for only ubsan) within the week, it can detects integer overflow already rightfully. Repository: rC Clang https://reviews.llvm.org/D43818 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D43818: Better OpenBSD frontend support
krytarowski added a comment. TSan actually demands a lot of meta-data, similar to MSan. Repository: rC Clang https://reviews.llvm.org/D43818 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D43818: Better OpenBSD frontend support
devnexen added a comment. Also true ... on OpenBSD the number of sanitisers support list won t be enormous ... ubsan maybe tsan ... the xray instrumentation perharps ... Repository: rC Clang https://reviews.llvm.org/D43818 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D43818: Better OpenBSD frontend support
krytarowski added a comment. OpenBSD might also have issues with allocating lazily large memory regions for metadata, so on amd64 with 40/48-bit address space shadow is extremely large. Although it's best to investigate it. Just noting another potential showstopper. Repository: rC Clang https://reviews.llvm.org/D43818 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D43818: Better OpenBSD frontend support
devnexen added a comment. In https://reviews.llvm.org/D43818#1020577, @krytarowski wrote: > OpenBSD ships with an aggressive ASLR (or ASR) implementation with > fragmentation of user address space. As far as I can tell, it's not possible > to disable it. This means that you are restricted to UBSan. True I planned ubsan with asan to start then realised I can only do ubsan (still work in progress but workable). Repository: rC Clang https://reviews.llvm.org/D43818 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D43818: Better OpenBSD frontend support
krytarowski added a reviewer: vitalybuka. krytarowski added a comment. OpenBSD ships with an aggressive ASLR (or ASR) implementation with fragmentation of user address space. As far as I can tell, it's not possible to disable it. This means that you are restricted to UBSan. Repository: rC Clang https://reviews.llvm.org/D43818 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D43818: Better OpenBSD frontend support
devnexen created this revision. devnexen created this object with visibility "All Users". Herald added subscribers: cfe-commits, krytarowski. devnexen added reviewers: dlj, krytarowski. - Like other *BSD, conditioning certain flags to pass - To prepare future OpenBSD sanitisers. Repository: rC Clang https://reviews.llvm.org/D43818 Files: lib/Driver/ToolChain.cpp lib/Driver/ToolChains/CommonArgs.cpp lib/Driver/ToolChains/Gnu.cpp Index: lib/Driver/ToolChains/Gnu.cpp === --- lib/Driver/ToolChains/Gnu.cpp +++ lib/Driver/ToolChains/Gnu.cpp @@ -242,11 +242,13 @@ 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"); } Index: lib/Driver/ToolChains/CommonArgs.cpp === --- lib/Driver/ToolChains/CommonArgs.cpp +++ lib/Driver/ToolChains/CommonArgs.cpp @@ -542,16 +542,19 @@ // 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 if (TC.getTriple().getOS() == llvm::Triple::NetBSD || + TC.getTriple().getOS() == llvm::Triple::OpenBSD || TC.getTriple().getOS() == llvm::Triple::FreeBSD) CmdArgs.push_back("-lexecinfo"); } Index: lib/Driver/ToolChain.cpp === --- lib/Driver/ToolChain.cpp +++ lib/Driver/ToolChain.cpp @@ -327,6 +327,8 @@ switch (Triple.getOS()) { case llvm::Triple::FreeBSD: return "freebsd"; + case llvm::Triple::OpenBSD: +return "openbsd"; case llvm::Triple::Solaris: return "sunos"; default: Index: lib/Driver/ToolChains/Gnu.cpp === --- lib/Driver/ToolChains/Gnu.cpp +++ lib/Driver/ToolChains/Gnu.cpp @@ -242,11 +242,13 @@ 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"); } Index: lib/Driver/ToolChains/CommonArgs.cpp === --- lib/Driver/ToolChains/CommonArgs.cpp +++ lib/Driver/ToolChains/CommonArgs.cpp @@ -542,16 +542,19 @@ // 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 if (TC.getTriple().getOS() == llvm::Triple::NetBSD || + TC.getTriple().getOS() == llvm::Triple::OpenBSD || TC.getTriple().getOS() == llvm::Triple::FreeBSD) CmdArgs.push_back("-lexecinfo"); } Index: lib/Driver/ToolChain.cpp === --- lib/Driver/ToolChain.cpp +++ lib/Driver/ToolChain.cpp @@ -327,6 +327,8 @@ switch (Triple.getOS()) { case llvm::Triple::FreeBSD: return "freebsd"; + case llvm::Triple::OpenBSD: +return "openbsd"; case llvm::Triple::Solaris: return "sunos"; default: ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits