[PATCH] D86822: [clang] Enable -fsanitize=thread on Fuchsia.
charco created this revision. charco added reviewers: mcgrathr, phosek. Herald added subscribers: cfe-commits, danielkiss. Herald added a project: clang. charco requested review of this revision. This CL modifies clang enabling using -fsanitize=thread on fuchsia. The change doesn't build the runtime for fuchsia, it just enables the instrumentation to be used. pair-programmed-with: mdemp...@google.com Change-Id: I816c4d240d1f15e9eae2803fb8ba3a7bf667ed51 Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D86822 Files: clang/lib/Driver/ToolChains/CommonArgs.cpp clang/lib/Driver/ToolChains/Fuchsia.cpp Index: clang/lib/Driver/ToolChains/Fuchsia.cpp === --- clang/lib/Driver/ToolChains/Fuchsia.cpp +++ clang/lib/Driver/ToolChains/Fuchsia.cpp @@ -95,6 +95,8 @@ std::string Dyld = D.DyldPrefix; if (SanArgs.needsAsanRt() && SanArgs.needsSharedRt()) Dyld += "asan/"; +if (SanArgs.needsTsanRt() && SanArgs.needsSharedRt()) + Dyld += "tsan/"; Dyld += "ld.so.1"; CmdArgs.push_back("-dynamic-linker"); CmdArgs.push_back(Args.MakeArgString(Dyld)); @@ -349,6 +351,7 @@ Res |= SanitizerKind::Leak; Res |= SanitizerKind::SafeStack; Res |= SanitizerKind::Scudo; + Res |= SanitizerKind::Thread; return Res; } Index: clang/lib/Driver/ToolChains/CommonArgs.cpp === --- clang/lib/Driver/ToolChains/CommonArgs.cpp +++ clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -698,6 +698,8 @@ else SharedRuntimes.push_back("scudo"); } +if (SanArgs.needsTsanRt() && SanArgs.linkRuntimes()) + SharedRuntimes.push_back("tsan"); if (SanArgs.needsHwasanRt() && SanArgs.linkRuntimes()) SharedRuntimes.push_back("hwasan"); } @@ -735,7 +737,8 @@ if (SanArgs.linkCXXRuntimes()) StaticRuntimes.push_back("msan_cxx"); } - if (SanArgs.needsTsanRt() && SanArgs.linkRuntimes()) { + if (!SanArgs.needsSharedRt() && SanArgs.needsTsanRt() && + SanArgs.linkRuntimes()) { StaticRuntimes.push_back("tsan"); if (SanArgs.linkCXXRuntimes()) StaticRuntimes.push_back("tsan_cxx"); Index: clang/lib/Driver/ToolChains/Fuchsia.cpp === --- clang/lib/Driver/ToolChains/Fuchsia.cpp +++ clang/lib/Driver/ToolChains/Fuchsia.cpp @@ -95,6 +95,8 @@ std::string Dyld = D.DyldPrefix; if (SanArgs.needsAsanRt() && SanArgs.needsSharedRt()) Dyld += "asan/"; +if (SanArgs.needsTsanRt() && SanArgs.needsSharedRt()) + Dyld += "tsan/"; Dyld += "ld.so.1"; CmdArgs.push_back("-dynamic-linker"); CmdArgs.push_back(Args.MakeArgString(Dyld)); @@ -349,6 +351,7 @@ Res |= SanitizerKind::Leak; Res |= SanitizerKind::SafeStack; Res |= SanitizerKind::Scudo; + Res |= SanitizerKind::Thread; return Res; } Index: clang/lib/Driver/ToolChains/CommonArgs.cpp === --- clang/lib/Driver/ToolChains/CommonArgs.cpp +++ clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -698,6 +698,8 @@ else SharedRuntimes.push_back("scudo"); } +if (SanArgs.needsTsanRt() && SanArgs.linkRuntimes()) + SharedRuntimes.push_back("tsan"); if (SanArgs.needsHwasanRt() && SanArgs.linkRuntimes()) SharedRuntimes.push_back("hwasan"); } @@ -735,7 +737,8 @@ if (SanArgs.linkCXXRuntimes()) StaticRuntimes.push_back("msan_cxx"); } - if (SanArgs.needsTsanRt() && SanArgs.linkRuntimes()) { + if (!SanArgs.needsSharedRt() && SanArgs.needsTsanRt() && + SanArgs.linkRuntimes()) { StaticRuntimes.push_back("tsan"); if (SanArgs.linkCXXRuntimes()) StaticRuntimes.push_back("tsan_cxx"); ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D86822: [clang] Enable -fsanitize=thread on Fuchsia.
charco updated this revision to Diff 288735. charco added a comment. remove change-id lines. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D86822/new/ https://reviews.llvm.org/D86822 Files: clang/lib/Driver/ToolChains/CommonArgs.cpp clang/lib/Driver/ToolChains/Fuchsia.cpp Index: clang/lib/Driver/ToolChains/Fuchsia.cpp === --- clang/lib/Driver/ToolChains/Fuchsia.cpp +++ clang/lib/Driver/ToolChains/Fuchsia.cpp @@ -95,6 +95,8 @@ std::string Dyld = D.DyldPrefix; if (SanArgs.needsAsanRt() && SanArgs.needsSharedRt()) Dyld += "asan/"; +if (SanArgs.needsTsanRt() && SanArgs.needsSharedRt()) + Dyld += "tsan/"; Dyld += "ld.so.1"; CmdArgs.push_back("-dynamic-linker"); CmdArgs.push_back(Args.MakeArgString(Dyld)); @@ -349,6 +351,7 @@ Res |= SanitizerKind::Leak; Res |= SanitizerKind::SafeStack; Res |= SanitizerKind::Scudo; + Res |= SanitizerKind::Thread; return Res; } Index: clang/lib/Driver/ToolChains/CommonArgs.cpp === --- clang/lib/Driver/ToolChains/CommonArgs.cpp +++ clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -698,6 +698,8 @@ else SharedRuntimes.push_back("scudo"); } +if (SanArgs.needsTsanRt() && SanArgs.linkRuntimes()) + SharedRuntimes.push_back("tsan"); if (SanArgs.needsHwasanRt() && SanArgs.linkRuntimes()) SharedRuntimes.push_back("hwasan"); } @@ -735,7 +737,8 @@ if (SanArgs.linkCXXRuntimes()) StaticRuntimes.push_back("msan_cxx"); } - if (SanArgs.needsTsanRt() && SanArgs.linkRuntimes()) { + if (!SanArgs.needsSharedRt() && SanArgs.needsTsanRt() && + SanArgs.linkRuntimes()) { StaticRuntimes.push_back("tsan"); if (SanArgs.linkCXXRuntimes()) StaticRuntimes.push_back("tsan_cxx"); Index: clang/lib/Driver/ToolChains/Fuchsia.cpp === --- clang/lib/Driver/ToolChains/Fuchsia.cpp +++ clang/lib/Driver/ToolChains/Fuchsia.cpp @@ -95,6 +95,8 @@ std::string Dyld = D.DyldPrefix; if (SanArgs.needsAsanRt() && SanArgs.needsSharedRt()) Dyld += "asan/"; +if (SanArgs.needsTsanRt() && SanArgs.needsSharedRt()) + Dyld += "tsan/"; Dyld += "ld.so.1"; CmdArgs.push_back("-dynamic-linker"); CmdArgs.push_back(Args.MakeArgString(Dyld)); @@ -349,6 +351,7 @@ Res |= SanitizerKind::Leak; Res |= SanitizerKind::SafeStack; Res |= SanitizerKind::Scudo; + Res |= SanitizerKind::Thread; return Res; } Index: clang/lib/Driver/ToolChains/CommonArgs.cpp === --- clang/lib/Driver/ToolChains/CommonArgs.cpp +++ clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -698,6 +698,8 @@ else SharedRuntimes.push_back("scudo"); } +if (SanArgs.needsTsanRt() && SanArgs.linkRuntimes()) + SharedRuntimes.push_back("tsan"); if (SanArgs.needsHwasanRt() && SanArgs.linkRuntimes()) SharedRuntimes.push_back("hwasan"); } @@ -735,7 +737,8 @@ if (SanArgs.linkCXXRuntimes()) StaticRuntimes.push_back("msan_cxx"); } - if (SanArgs.needsTsanRt() && SanArgs.linkRuntimes()) { + if (!SanArgs.needsSharedRt() && SanArgs.needsTsanRt() && + SanArgs.linkRuntimes()) { StaticRuntimes.push_back("tsan"); if (SanArgs.linkCXXRuntimes()) StaticRuntimes.push_back("tsan_cxx"); ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D86822: [clang] Enable -fsanitize=thread on Fuchsia.
This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rG2e800495a78a: [clang] Enable -fsanitize=thread on Fuchsia. (authored by charco). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D86822/new/ https://reviews.llvm.org/D86822 Files: clang/lib/Driver/ToolChains/CommonArgs.cpp clang/lib/Driver/ToolChains/Fuchsia.cpp Index: clang/lib/Driver/ToolChains/Fuchsia.cpp === --- clang/lib/Driver/ToolChains/Fuchsia.cpp +++ clang/lib/Driver/ToolChains/Fuchsia.cpp @@ -95,6 +95,8 @@ std::string Dyld = D.DyldPrefix; if (SanArgs.needsAsanRt() && SanArgs.needsSharedRt()) Dyld += "asan/"; +if (SanArgs.needsTsanRt() && SanArgs.needsSharedRt()) + Dyld += "tsan/"; Dyld += "ld.so.1"; CmdArgs.push_back("-dynamic-linker"); CmdArgs.push_back(Args.MakeArgString(Dyld)); @@ -349,6 +351,7 @@ Res |= SanitizerKind::Leak; Res |= SanitizerKind::SafeStack; Res |= SanitizerKind::Scudo; + Res |= SanitizerKind::Thread; return Res; } Index: clang/lib/Driver/ToolChains/CommonArgs.cpp === --- clang/lib/Driver/ToolChains/CommonArgs.cpp +++ clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -703,6 +703,8 @@ else SharedRuntimes.push_back("scudo"); } +if (SanArgs.needsTsanRt() && SanArgs.linkRuntimes()) + SharedRuntimes.push_back("tsan"); if (SanArgs.needsHwasanRt() && SanArgs.linkRuntimes()) SharedRuntimes.push_back("hwasan"); } @@ -747,7 +749,8 @@ if (SanArgs.linkCXXRuntimes()) StaticRuntimes.push_back("msan_cxx"); } - if (SanArgs.needsTsanRt() && SanArgs.linkRuntimes()) { + if (!SanArgs.needsSharedRt() && SanArgs.needsTsanRt() && + SanArgs.linkRuntimes()) { StaticRuntimes.push_back("tsan"); if (SanArgs.linkCXXRuntimes()) StaticRuntimes.push_back("tsan_cxx"); Index: clang/lib/Driver/ToolChains/Fuchsia.cpp === --- clang/lib/Driver/ToolChains/Fuchsia.cpp +++ clang/lib/Driver/ToolChains/Fuchsia.cpp @@ -95,6 +95,8 @@ std::string Dyld = D.DyldPrefix; if (SanArgs.needsAsanRt() && SanArgs.needsSharedRt()) Dyld += "asan/"; +if (SanArgs.needsTsanRt() && SanArgs.needsSharedRt()) + Dyld += "tsan/"; Dyld += "ld.so.1"; CmdArgs.push_back("-dynamic-linker"); CmdArgs.push_back(Args.MakeArgString(Dyld)); @@ -349,6 +351,7 @@ Res |= SanitizerKind::Leak; Res |= SanitizerKind::SafeStack; Res |= SanitizerKind::Scudo; + Res |= SanitizerKind::Thread; return Res; } Index: clang/lib/Driver/ToolChains/CommonArgs.cpp === --- clang/lib/Driver/ToolChains/CommonArgs.cpp +++ clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -703,6 +703,8 @@ else SharedRuntimes.push_back("scudo"); } +if (SanArgs.needsTsanRt() && SanArgs.linkRuntimes()) + SharedRuntimes.push_back("tsan"); if (SanArgs.needsHwasanRt() && SanArgs.linkRuntimes()) SharedRuntimes.push_back("hwasan"); } @@ -747,7 +749,8 @@ if (SanArgs.linkCXXRuntimes()) StaticRuntimes.push_back("msan_cxx"); } - if (SanArgs.needsTsanRt() && SanArgs.linkRuntimes()) { + if (!SanArgs.needsSharedRt() && SanArgs.needsTsanRt() && + SanArgs.linkRuntimes()) { StaticRuntimes.push_back("tsan"); if (SanArgs.linkCXXRuntimes()) StaticRuntimes.push_back("tsan_cxx"); ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D96570: [scan-build-py] Add sarif-html support in scan-build-py
This revision was automatically updated to reflect the committed changes. Closed by commit rG97a304cc8f94: [scan-build-py] Add sarif-html support in scan-build-py (authored by Daniel Hwang, committed by charco). Herald added a project: clang. Herald added a subscriber: cfe-commits. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D96570/new/ https://reviews.llvm.org/D96570 Files: clang/tools/scan-build-py/libscanbuild/analyze.py clang/tools/scan-build-py/libscanbuild/arguments.py clang/tools/scan-build-py/libscanbuild/report.py clang/tools/scan-build-py/tests/functional/cases/test_from_cdb.py Index: clang/tools/scan-build-py/tests/functional/cases/test_from_cdb.py === --- clang/tools/scan-build-py/tests/functional/cases/test_from_cdb.py +++ clang/tools/scan-build-py/tests/functional/cases/test_from_cdb.py @@ -102,7 +102,11 @@ def get_plist_count(directory): return len(glob.glob(os.path.join(directory, 'report-*.plist'))) -def test_default_creates_html_report(self): +@staticmethod +def get_sarif_count(directory): +return len(glob.glob(os.path.join(directory, 'result-*.sarif'))) + +def test_default_only_creates_html_report(self): with libear.TemporaryDirectory() as tmpdir: cdb = prepare_cdb('regular', tmpdir) exit_code, reportdir = run_analyzer(tmpdir, cdb, []) @@ -110,8 +114,9 @@ os.path.exists(os.path.join(reportdir, 'index.html'))) self.assertEqual(self.get_html_count(reportdir), 2) self.assertEqual(self.get_plist_count(reportdir), 0) +self.assertEqual(self.get_sarif_count(reportdir), 0) -def test_plist_and_html_creates_html_report(self): +def test_plist_and_html_creates_html_and_plist_reports(self): with libear.TemporaryDirectory() as tmpdir: cdb = prepare_cdb('regular', tmpdir) exit_code, reportdir = run_analyzer(tmpdir, cdb, ['--plist-html']) @@ -119,8 +124,9 @@ os.path.exists(os.path.join(reportdir, 'index.html'))) self.assertEqual(self.get_html_count(reportdir), 2) self.assertEqual(self.get_plist_count(reportdir), 5) +self.assertEqual(self.get_sarif_count(reportdir), 0) -def test_plist_does_not_creates_html_report(self): +def test_plist_only_creates_plist_report(self): with libear.TemporaryDirectory() as tmpdir: cdb = prepare_cdb('regular', tmpdir) exit_code, reportdir = run_analyzer(tmpdir, cdb, ['--plist']) @@ -128,6 +134,31 @@ os.path.exists(os.path.join(reportdir, 'index.html'))) self.assertEqual(self.get_html_count(reportdir), 0) self.assertEqual(self.get_plist_count(reportdir), 5) +self.assertEqual(self.get_sarif_count(reportdir), 0) + +def test_sarif_only_creates_sarif_result(self): +with libear.TemporaryDirectory() as tmpdir: +cdb = prepare_cdb('regular', tmpdir) +exit_code, reportdir = run_analyzer(tmpdir, cdb, ['--sarif']) +self.assertFalse( +os.path.exists(os.path.join(reportdir, 'index.html'))) +self.assertTrue( +os.path.exists(os.path.join(reportdir, 'results-merged.sarif'))) +self.assertEqual(self.get_html_count(reportdir), 0) +self.assertEqual(self.get_plist_count(reportdir), 0) +self.assertEqual(self.get_sarif_count(reportdir), 5) + +def test_sarif_and_html_creates_sarif_and_html_reports(self): +with libear.TemporaryDirectory() as tmpdir: +cdb = prepare_cdb('regular', tmpdir) +exit_code, reportdir = run_analyzer(tmpdir, cdb, ['--sarif-html']) +self.assertTrue( +os.path.exists(os.path.join(reportdir, 'index.html'))) +self.assertTrue( +os.path.exists(os.path.join(reportdir, 'results-merged.sarif'))) +self.assertEqual(self.get_html_count(reportdir), 2) +self.assertEqual(self.get_plist_count(reportdir), 0) +self.assertEqual(self.get_sarif_count(reportdir), 5) class FailureReportTest(unittest.TestCase): Index: clang/tools/scan-build-py/libscanbuild/report.py === --- clang/tools/scan-build-py/libscanbuild/report.py +++ clang/tools/scan-build-py/libscanbuild/report.py @@ -26,8 +26,8 @@ def document(args): """ Generates cover report and returns the number of bugs/crashes. """ -html_reports_available = args.output_format in {'html', 'plist-html'} -sarif_reports_available = args.output_format in {'sarif'} +html_reports_available = args.output_format in {'html', 'plist-html', 'sarif-html'} +sarif_reports_available = args.output_format in {'sarif', 'sarif-html'} logging.debug('count cra
[PATCH] D104138: Create install targets for scan-build-py.
This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rGd9cf8291e7ef: Create install targets for scan-build-py. (authored by Daniel Hwang, committed by charco). Changed prior to commit: https://reviews.llvm.org/D104138?vs=352199&id=353471#toc Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D104138/new/ https://reviews.llvm.org/D104138 Files: clang/cmake/caches/Fuchsia-stage2.cmake clang/tools/CMakeLists.txt clang/tools/scan-build-py/CMakeLists.txt clang/tools/scan-build-py/bin/analyze-build clang/tools/scan-build-py/bin/analyze-c++ clang/tools/scan-build-py/bin/analyze-cc clang/tools/scan-build-py/bin/intercept-build clang/tools/scan-build-py/bin/intercept-c++ clang/tools/scan-build-py/bin/intercept-cc clang/tools/scan-build-py/bin/scan-build clang/tools/scan-build-py/lib/libear/__init__.py clang/tools/scan-build-py/lib/libear/config.h.in clang/tools/scan-build-py/lib/libear/ear.c clang/tools/scan-build-py/lib/libscanbuild/__init__.py clang/tools/scan-build-py/lib/libscanbuild/analyze.py clang/tools/scan-build-py/lib/libscanbuild/arguments.py clang/tools/scan-build-py/lib/libscanbuild/clang.py clang/tools/scan-build-py/lib/libscanbuild/compilation.py clang/tools/scan-build-py/lib/libscanbuild/intercept.py clang/tools/scan-build-py/lib/libscanbuild/report.py clang/tools/scan-build-py/lib/libscanbuild/resources/scanview.css clang/tools/scan-build-py/lib/libscanbuild/resources/selectable.js clang/tools/scan-build-py/lib/libscanbuild/resources/sorttable.js clang/tools/scan-build-py/lib/libscanbuild/shell.py clang/tools/scan-build-py/libear/__init__.py clang/tools/scan-build-py/libear/config.h.in clang/tools/scan-build-py/libear/ear.c clang/tools/scan-build-py/libexec/analyze-c++ clang/tools/scan-build-py/libexec/analyze-cc clang/tools/scan-build-py/libexec/intercept-c++ clang/tools/scan-build-py/libexec/intercept-cc clang/tools/scan-build-py/libscanbuild/__init__.py clang/tools/scan-build-py/libscanbuild/analyze.py clang/tools/scan-build-py/libscanbuild/arguments.py clang/tools/scan-build-py/libscanbuild/clang.py clang/tools/scan-build-py/libscanbuild/compilation.py clang/tools/scan-build-py/libscanbuild/intercept.py clang/tools/scan-build-py/libscanbuild/report.py clang/tools/scan-build-py/libscanbuild/resources/scanview.css clang/tools/scan-build-py/libscanbuild/resources/selectable.js clang/tools/scan-build-py/libscanbuild/shell.py clang/tools/scan-build-py/tests/__init__.py clang/tools/scan-build-py/tests/functional/cases/__init__.py clang/tools/scan-build-py/tests/functional/cases/test_exec_anatomy.py clang/tools/scan-build-py/tests/functional/cases/test_from_cdb.py clang/tools/scan-build-py/tests/functional/cases/test_from_cmd.py clang/tools/scan-build-py/tests/unit/test_analyze.py Index: clang/tools/scan-build-py/tests/unit/test_analyze.py === --- clang/tools/scan-build-py/tests/unit/test_analyze.py +++ clang/tools/scan-build-py/tests/unit/test_analyze.py @@ -18,9 +18,9 @@ # scan-build can be easily matched up to compare results. def test_directory_name_comparison(self): with libear.TemporaryDirectory() as tmpdir, \ - sut.report_directory(tmpdir, False) as report_dir1, \ - sut.report_directory(tmpdir, False) as report_dir2, \ - sut.report_directory(tmpdir, False) as report_dir3: + sut.report_directory(tmpdir, False, 'html') as report_dir1, \ + sut.report_directory(tmpdir, False, 'html') as report_dir2, \ + sut.report_directory(tmpdir, False, 'html') as report_dir3: self.assertLess(report_dir1, report_dir2) self.assertLess(report_dir2, report_dir3) Index: clang/tools/scan-build-py/tests/functional/cases/test_from_cmd.py === --- clang/tools/scan-build-py/tests/functional/cases/test_from_cmd.py +++ clang/tools/scan-build-py/tests/functional/cases/test_from_cmd.py @@ -17,7 +17,7 @@ @staticmethod def run_analyzer(outdir, args, cmd): return check_call_and_report( -['scan-build', '--intercept-first', '-o', outdir] + args, +['scan-build-py', '--intercept-first', '-o', outdir] + args, cmd) def test_regular_keeps_report_dir(self): @@ -49,7 +49,7 @@ with libear.TemporaryDirectory() as tmpdir: make = make_args(tmpdir) + ['build_regular'] outdir = check_call_and_report( -['scan-build', '--plist', '-o', tmpdir, '--override-compiler'], +['scan-build-py', '--plist', '-o', tmpdir, '--override-compiler'], make) self.assertTrue(os.path.isdir(outdir)) @@ -59,7 +59,7 @@