r312232 - docs: don't say that data flow tracing interface is unstable
Author: dvyukov Date: Thu Aug 31 04:02:44 2017 New Revision: 312232 URL: http://llvm.org/viewvc/llvm-project?rev=312232&view=rev Log: docs: don't say that data flow tracing interface is unstable We are starting to use data flow tracing in kernel. The interface is not subject to change anymore. Reviewed in https://reviews.llvm.org/D37303 Modified: cfe/trunk/docs/SanitizerCoverage.rst Modified: cfe/trunk/docs/SanitizerCoverage.rst URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/SanitizerCoverage.rst?rev=312232&r1=312231&r2=312232&view=diff == --- cfe/trunk/docs/SanitizerCoverage.rst (original) +++ cfe/trunk/docs/SanitizerCoverage.rst Thu Aug 31 04:02:44 2017 @@ -281,8 +281,6 @@ the `LLVM GEP instructions
Re: [PATCH] D24628: [ASAN] Pass previous stack information through __sanitizer_finish_switch_fiber
dvyukov added a comment. We need a test that passes non-NULL to these arguments and shows how to use the returned values. Comment at: test/asan/TestCases/Linux/swapcontext_annotation.cc:176-199 @@ -164,7 +175,26 @@ ret += Run(argc - 1, 0, stack); +// CHECK: Child stack: [[CHILD_STACK:0x[0-9a-f]*]] +// CHECK: Main context from: [[CHILD_STACK]] 524288 ret += Run(argc - 1, 1, stack); +// CHECK: Child stack: [[CHILD_STACK:0x[0-9a-f]*]] +// CHECK: Main context from: [[CHILD_STACK]] 524288 ret += Run(argc - 1, 2, stack); +// CHECK: Child stack: [[CHILD_STACK:0x[0-9a-f]*]] +// CHECK: NextChild stack: [[NEXT_CHILD_STACK:0x[0-9a-f]*]] +// CHECK: NextChild from: [[CHILD_STACK]] 524288 +// CHECK: Main context from: [[NEXT_CHILD_STACK]] 524288 ret += Run(argc - 1, 0, heap); +// CHECK: Child stack: [[CHILD_STACK:0x[0-9a-f]*]] +// CHECK: Main context from: [[CHILD_STACK]] 524288 ret += Run(argc - 1, 1, heap); +// CHECK: Child stack: [[CHILD_STACK:0x[0-9a-f]*]] +// CHECK: Main context from: [[CHILD_STACK]] 524288 ret += Run(argc - 1, 2, heap); +// CHECK: Child stack: [[CHILD_STACK:0x[0-9a-f]*]] +// CHECK: NextChild stack: [[NEXT_CHILD_STACK:0x[0-9a-f]*]] +// CHECK: NextChild from: [[CHILD_STACK]] 524288 +// CHECK: Main context from: [[NEXT_CHILD_STACK]] 524288 + +// CHECK: Iteration 0 passed +printf("Iteration %d passed\n", i); } andriigrynenko wrote: > This only checks the first iteration of the loop. Can I do it better with > FileCheck ? Yes, you can add CHECKs for the second iteration as well. https://reviews.llvm.org/D24628 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: [PATCH] D24628: [ASAN] Pass previous stack information through __sanitizer_finish_switch_fiber
dvyukov added a comment. LGTM Any other comments? Or I will submit it tomorrow. Comment at: test/asan/TestCases/Linux/swapcontext_annotation.cc:7 @@ +6,3 @@ +// RUN: %clangxx_asan -std=c++11 -lpthread -O3 %s -o %t && %run %t 2>&1 | FileCheck %s +// RUN: %clangxx_asan -std=c++11 -lpthread -O0 %s -o %t && %run %t 2>&1 | FileCheck <( seq 60 | xargs -i -- grep LOOPCHECK %s ) --check-prefix LOOPCHECK +// RUN: %clangxx_asan -std=c++11 -lpthread -O1 %s -o %t && %run %t 2>&1 | FileCheck <( seq 60 | xargs -i -- grep LOOPCHECK %s ) --check-prefix LOOPCHECK nice https://reviews.llvm.org/D24628 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: [PATCH] D24628: [ASAN] Pass previous stack information through __sanitizer_finish_switch_fiber
dvyukov accepted this revision. dvyukov added a comment. This revision is now accepted and ready to land. Submitted in 282582. https://reviews.llvm.org/D24628 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] a1255dc - Use-after-return sanitizer binary metadata
Author: Dmitry Vyukov Date: 2022-11-29T17:37:36+01:00 New Revision: a1255dc467f7ce57a966efa764ee91d9115a URL: https://github.com/llvm/llvm-project/commit/a1255dc467f7ce57a966efa764ee91d9115a DIFF: https://github.com/llvm/llvm-project/commit/a1255dc467f7ce57a966efa764ee91d9115a.diff LOG: Use-after-return sanitizer binary metadata Currently per-function metadata consists of: (start-pc, size, features) This adds a new UAR feature and if it's set an additional element: (start-pc, size, features, stack-args-size) Reviewed By: melver Differential Revision: https://reviews.llvm.org/D136078 Added: llvm/lib/CodeGen/SanitizerBinaryMetadata.cpp llvm/test/Instrumentation/SanitizerBinaryMetadata/common.h llvm/test/Instrumentation/SanitizerBinaryMetadata/covered.cpp llvm/test/Instrumentation/SanitizerBinaryMetadata/lit.local.cfg llvm/test/Instrumentation/SanitizerBinaryMetadata/uar.cpp Modified: clang/include/clang/Basic/CodeGenOptions.def clang/include/clang/Basic/CodeGenOptions.h clang/include/clang/Driver/Options.td clang/lib/CodeGen/BackendUtil.cpp clang/lib/Driver/SanitizerArgs.cpp llvm/include/llvm/CodeGen/CodeGenPassBuilder.h llvm/include/llvm/CodeGen/MachinePassRegistry.def llvm/include/llvm/CodeGen/Passes.h llvm/include/llvm/InitializePasses.h llvm/include/llvm/Transforms/Instrumentation.h llvm/include/llvm/Transforms/Instrumentation/SanitizerBinaryMetadata.h llvm/lib/CodeGen/CMakeLists.txt llvm/lib/CodeGen/CodeGen.cpp llvm/lib/CodeGen/TargetPassConfig.cpp llvm/lib/Transforms/Instrumentation/SanitizerBinaryMetadata.cpp Removed: diff --git a/clang/include/clang/Basic/CodeGenOptions.def b/clang/include/clang/Basic/CodeGenOptions.def index 43521b76652db..81d5ccd4856d4 100644 --- a/clang/include/clang/Basic/CodeGenOptions.def +++ b/clang/include/clang/Basic/CodeGenOptions.def @@ -288,6 +288,8 @@ CODEGENOPT(SanitizeCoverageTraceLoads, 1, 0) ///< Enable tracing of loads. CODEGENOPT(SanitizeCoverageTraceStores, 1, 0) ///< Enable tracing of stores. CODEGENOPT(SanitizeBinaryMetadataCovered, 1, 0) ///< Emit PCs for covered functions. CODEGENOPT(SanitizeBinaryMetadataAtomics, 1, 0) ///< Emit PCs for atomic operations. +CODEGENOPT(SanitizeBinaryMetadataUAR, 1, 0) ///< Emit PCs for start of functions +///< that are subject for use-after-return checking. CODEGENOPT(SanitizeStats , 1, 0) ///< Collect statistics for sanitizers. CODEGENOPT(SimplifyLibCalls , 1, 1) ///< Set when -fbuiltin is enabled. CODEGENOPT(SoftFloat , 1, 0) ///< -soft-float. diff --git a/clang/include/clang/Basic/CodeGenOptions.h b/clang/include/clang/Basic/CodeGenOptions.h index 13794035c9076..a1a20995f211d 100644 --- a/clang/include/clang/Basic/CodeGenOptions.h +++ b/clang/include/clang/Basic/CodeGenOptions.h @@ -497,7 +497,8 @@ class CodeGenOptions : public CodeGenOptionsBase { // Check if any one of SanitizeBinaryMetadata* is enabled. bool hasSanitizeBinaryMetadata() const { -return SanitizeBinaryMetadataCovered || SanitizeBinaryMetadataAtomics; +return SanitizeBinaryMetadataCovered || SanitizeBinaryMetadataAtomics || + SanitizeBinaryMetadataUAR; } }; diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 8da5e25bd38d0..1d577ab70788e 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -5575,6 +5575,10 @@ def fexperimental_sanitize_metadata_EQ_atomics : Flag<["-"], "fexperimental-sanitize-metadata=atomics">, HelpText<"Emit PCs for atomic operations used by binary analysis sanitizers">, MarshallingInfoFlag>; +def fexperimental_sanitize_metadata_EQ_uar +: Flag<["-"], "fexperimental-sanitize-metadata=uar">, + HelpText<"Emit PCs for start of functions that are subject for use-after-return checking.">, + MarshallingInfoFlag>; def fpatchable_function_entry_offset_EQ : Joined<["-"], "fpatchable-function-entry-offset=">, MetaVarName<"">, HelpText<"Generate M NOPs before function entry">, diff --git a/clang/lib/CodeGen/BackendUtil.cpp b/clang/lib/CodeGen/BackendUtil.cpp index 2b241967f5e7b..717ec33441232 100644 --- a/clang/lib/CodeGen/BackendUtil.cpp +++ b/clang/lib/CodeGen/BackendUtil.cpp @@ -234,6 +234,7 @@ getSanitizerBinaryMetadataOptions(const CodeGenOptions &CGOpts) { SanitizerBinaryMetadataOptions Opts; Opts.Covered = CGOpts.SanitizeBinaryMetadataCovered; Opts.Atomics = CGOpts.SanitizeBinaryMetadataAtomics; + Opts.UAR = CGOpts.SanitizeBinaryMetadataUAR; return Opts; } diff --git a/clang/lib/Driver/SanitizerArgs.cpp b/clang/lib/Driver/SanitizerArgs.cpp index af27dbc92c8e6..96a701366e37b 100644 --- a/clang/lib/Driver/SanitizerArgs.cpp +++ b/clang/lib/Driver/SanitizerArgs.cpp @@ -104,6 +104,7 @@ enum Cover
[clang] e6aea4a - Use-after-return sanitizer binary metadata
Author: Dmitry Vyukov Date: 2022-11-30T09:14:19+01:00 New Revision: e6aea4a5db09c845276ece92737a6aac97794100 URL: https://github.com/llvm/llvm-project/commit/e6aea4a5db09c845276ece92737a6aac97794100 DIFF: https://github.com/llvm/llvm-project/commit/e6aea4a5db09c845276ece92737a6aac97794100.diff LOG: Use-after-return sanitizer binary metadata Currently per-function metadata consists of: (start-pc, size, features) This adds a new UAR feature and if it's set an additional element: (start-pc, size, features, stack-args-size) Reviewed By: melver Differential Revision: https://reviews.llvm.org/D136078 Added: llvm/lib/CodeGen/SanitizerBinaryMetadata.cpp llvm/test/Instrumentation/SanitizerBinaryMetadata/common.h llvm/test/Instrumentation/SanitizerBinaryMetadata/covered.cpp llvm/test/Instrumentation/SanitizerBinaryMetadata/lit.local.cfg llvm/test/Instrumentation/SanitizerBinaryMetadata/uar.cpp Modified: clang/include/clang/Basic/CodeGenOptions.def clang/include/clang/Basic/CodeGenOptions.h clang/include/clang/Driver/Options.td clang/lib/CodeGen/BackendUtil.cpp clang/lib/Driver/SanitizerArgs.cpp llvm/include/llvm/CodeGen/CodeGenPassBuilder.h llvm/include/llvm/CodeGen/MachinePassRegistry.def llvm/include/llvm/CodeGen/Passes.h llvm/include/llvm/InitializePasses.h llvm/include/llvm/Transforms/Instrumentation.h llvm/include/llvm/Transforms/Instrumentation/SanitizerBinaryMetadata.h llvm/lib/CodeGen/CMakeLists.txt llvm/lib/CodeGen/CodeGen.cpp llvm/lib/CodeGen/TargetPassConfig.cpp llvm/lib/Transforms/Instrumentation/SanitizerBinaryMetadata.cpp Removed: diff --git a/clang/include/clang/Basic/CodeGenOptions.def b/clang/include/clang/Basic/CodeGenOptions.def index 43521b76652db..81d5ccd4856d4 100644 --- a/clang/include/clang/Basic/CodeGenOptions.def +++ b/clang/include/clang/Basic/CodeGenOptions.def @@ -288,6 +288,8 @@ CODEGENOPT(SanitizeCoverageTraceLoads, 1, 0) ///< Enable tracing of loads. CODEGENOPT(SanitizeCoverageTraceStores, 1, 0) ///< Enable tracing of stores. CODEGENOPT(SanitizeBinaryMetadataCovered, 1, 0) ///< Emit PCs for covered functions. CODEGENOPT(SanitizeBinaryMetadataAtomics, 1, 0) ///< Emit PCs for atomic operations. +CODEGENOPT(SanitizeBinaryMetadataUAR, 1, 0) ///< Emit PCs for start of functions +///< that are subject for use-after-return checking. CODEGENOPT(SanitizeStats , 1, 0) ///< Collect statistics for sanitizers. CODEGENOPT(SimplifyLibCalls , 1, 1) ///< Set when -fbuiltin is enabled. CODEGENOPT(SoftFloat , 1, 0) ///< -soft-float. diff --git a/clang/include/clang/Basic/CodeGenOptions.h b/clang/include/clang/Basic/CodeGenOptions.h index 13794035c9076..a1a20995f211d 100644 --- a/clang/include/clang/Basic/CodeGenOptions.h +++ b/clang/include/clang/Basic/CodeGenOptions.h @@ -497,7 +497,8 @@ class CodeGenOptions : public CodeGenOptionsBase { // Check if any one of SanitizeBinaryMetadata* is enabled. bool hasSanitizeBinaryMetadata() const { -return SanitizeBinaryMetadataCovered || SanitizeBinaryMetadataAtomics; +return SanitizeBinaryMetadataCovered || SanitizeBinaryMetadataAtomics || + SanitizeBinaryMetadataUAR; } }; diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 8da5e25bd38d0..1d577ab70788e 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -5575,6 +5575,10 @@ def fexperimental_sanitize_metadata_EQ_atomics : Flag<["-"], "fexperimental-sanitize-metadata=atomics">, HelpText<"Emit PCs for atomic operations used by binary analysis sanitizers">, MarshallingInfoFlag>; +def fexperimental_sanitize_metadata_EQ_uar +: Flag<["-"], "fexperimental-sanitize-metadata=uar">, + HelpText<"Emit PCs for start of functions that are subject for use-after-return checking.">, + MarshallingInfoFlag>; def fpatchable_function_entry_offset_EQ : Joined<["-"], "fpatchable-function-entry-offset=">, MetaVarName<"">, HelpText<"Generate M NOPs before function entry">, diff --git a/clang/lib/CodeGen/BackendUtil.cpp b/clang/lib/CodeGen/BackendUtil.cpp index 2b241967f5e7b..717ec33441232 100644 --- a/clang/lib/CodeGen/BackendUtil.cpp +++ b/clang/lib/CodeGen/BackendUtil.cpp @@ -234,6 +234,7 @@ getSanitizerBinaryMetadataOptions(const CodeGenOptions &CGOpts) { SanitizerBinaryMetadataOptions Opts; Opts.Covered = CGOpts.SanitizeBinaryMetadataCovered; Opts.Atomics = CGOpts.SanitizeBinaryMetadataAtomics; + Opts.UAR = CGOpts.SanitizeBinaryMetadataUAR; return Opts; } diff --git a/clang/lib/Driver/SanitizerArgs.cpp b/clang/lib/Driver/SanitizerArgs.cpp index af27dbc92c8e6..96a701366e37b 100644 --- a/clang/lib/Driver/SanitizerArgs.cpp +++ b/clang/lib/Driver/SanitizerArgs.cpp @@ -104,6 +104,7 @@ enum Cover
[clang] 0aedf9d - Revert "Use-after-return sanitizer binary metadata"
Author: Dmitry Vyukov Date: 2022-11-30T09:38:56+01:00 New Revision: 0aedf9d7141fcae75956c651f1c2474db6862350 URL: https://github.com/llvm/llvm-project/commit/0aedf9d7141fcae75956c651f1c2474db6862350 DIFF: https://github.com/llvm/llvm-project/commit/0aedf9d7141fcae75956c651f1c2474db6862350.diff LOG: Revert "Use-after-return sanitizer binary metadata" This reverts commit e6aea4a5db09c845276ece92737a6aac97794100. Broke tests: https://lab.llvm.org/buildbot/#/builders/16/builds/38992 Added: Modified: clang/include/clang/Basic/CodeGenOptions.def clang/include/clang/Basic/CodeGenOptions.h clang/include/clang/Driver/Options.td clang/lib/CodeGen/BackendUtil.cpp clang/lib/Driver/SanitizerArgs.cpp llvm/include/llvm/CodeGen/CodeGenPassBuilder.h llvm/include/llvm/CodeGen/MachinePassRegistry.def llvm/include/llvm/CodeGen/Passes.h llvm/include/llvm/InitializePasses.h llvm/include/llvm/Transforms/Instrumentation.h llvm/include/llvm/Transforms/Instrumentation/SanitizerBinaryMetadata.h llvm/lib/CodeGen/CMakeLists.txt llvm/lib/CodeGen/CodeGen.cpp llvm/lib/CodeGen/TargetPassConfig.cpp llvm/lib/Transforms/Instrumentation/SanitizerBinaryMetadata.cpp Removed: llvm/lib/CodeGen/SanitizerBinaryMetadata.cpp llvm/test/Instrumentation/SanitizerBinaryMetadata/common.h llvm/test/Instrumentation/SanitizerBinaryMetadata/covered.cpp llvm/test/Instrumentation/SanitizerBinaryMetadata/lit.local.cfg llvm/test/Instrumentation/SanitizerBinaryMetadata/uar.cpp diff --git a/clang/include/clang/Basic/CodeGenOptions.def b/clang/include/clang/Basic/CodeGenOptions.def index 81d5ccd4856d4..43521b76652db 100644 --- a/clang/include/clang/Basic/CodeGenOptions.def +++ b/clang/include/clang/Basic/CodeGenOptions.def @@ -288,8 +288,6 @@ CODEGENOPT(SanitizeCoverageTraceLoads, 1, 0) ///< Enable tracing of loads. CODEGENOPT(SanitizeCoverageTraceStores, 1, 0) ///< Enable tracing of stores. CODEGENOPT(SanitizeBinaryMetadataCovered, 1, 0) ///< Emit PCs for covered functions. CODEGENOPT(SanitizeBinaryMetadataAtomics, 1, 0) ///< Emit PCs for atomic operations. -CODEGENOPT(SanitizeBinaryMetadataUAR, 1, 0) ///< Emit PCs for start of functions -///< that are subject for use-after-return checking. CODEGENOPT(SanitizeStats , 1, 0) ///< Collect statistics for sanitizers. CODEGENOPT(SimplifyLibCalls , 1, 1) ///< Set when -fbuiltin is enabled. CODEGENOPT(SoftFloat , 1, 0) ///< -soft-float. diff --git a/clang/include/clang/Basic/CodeGenOptions.h b/clang/include/clang/Basic/CodeGenOptions.h index a1a20995f211d..13794035c9076 100644 --- a/clang/include/clang/Basic/CodeGenOptions.h +++ b/clang/include/clang/Basic/CodeGenOptions.h @@ -497,8 +497,7 @@ class CodeGenOptions : public CodeGenOptionsBase { // Check if any one of SanitizeBinaryMetadata* is enabled. bool hasSanitizeBinaryMetadata() const { -return SanitizeBinaryMetadataCovered || SanitizeBinaryMetadataAtomics || - SanitizeBinaryMetadataUAR; +return SanitizeBinaryMetadataCovered || SanitizeBinaryMetadataAtomics; } }; diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 1d577ab70788e..8da5e25bd38d0 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -5575,10 +5575,6 @@ def fexperimental_sanitize_metadata_EQ_atomics : Flag<["-"], "fexperimental-sanitize-metadata=atomics">, HelpText<"Emit PCs for atomic operations used by binary analysis sanitizers">, MarshallingInfoFlag>; -def fexperimental_sanitize_metadata_EQ_uar -: Flag<["-"], "fexperimental-sanitize-metadata=uar">, - HelpText<"Emit PCs for start of functions that are subject for use-after-return checking.">, - MarshallingInfoFlag>; def fpatchable_function_entry_offset_EQ : Joined<["-"], "fpatchable-function-entry-offset=">, MetaVarName<"">, HelpText<"Generate M NOPs before function entry">, diff --git a/clang/lib/CodeGen/BackendUtil.cpp b/clang/lib/CodeGen/BackendUtil.cpp index 717ec33441232..2b241967f5e7b 100644 --- a/clang/lib/CodeGen/BackendUtil.cpp +++ b/clang/lib/CodeGen/BackendUtil.cpp @@ -234,7 +234,6 @@ getSanitizerBinaryMetadataOptions(const CodeGenOptions &CGOpts) { SanitizerBinaryMetadataOptions Opts; Opts.Covered = CGOpts.SanitizeBinaryMetadataCovered; Opts.Atomics = CGOpts.SanitizeBinaryMetadataAtomics; - Opts.UAR = CGOpts.SanitizeBinaryMetadataUAR; return Opts; } diff --git a/clang/lib/Driver/SanitizerArgs.cpp b/clang/lib/Driver/SanitizerArgs.cpp index 96a701366e37b..af27dbc92c8e6 100644 --- a/clang/lib/Driver/SanitizerArgs.cpp +++ b/clang/lib/Driver/SanitizerArgs.cpp @@ -104,7 +104,6 @@ enum CoverageFeature { enum BinaryMetadataFeature { BinaryMetadataCovered = 1 << 0, BinaryMetadataAtomics = 1 << 1, - Bina
[clang] d3c851d - Use-after-return sanitizer binary metadata
Author: Dmitry Vyukov Date: 2022-11-30T14:50:22+01:00 New Revision: d3c851d3fc8b69dda70bf5f999c5b39dc314dd73 URL: https://github.com/llvm/llvm-project/commit/d3c851d3fc8b69dda70bf5f999c5b39dc314dd73 DIFF: https://github.com/llvm/llvm-project/commit/d3c851d3fc8b69dda70bf5f999c5b39dc314dd73.diff LOG: Use-after-return sanitizer binary metadata Currently per-function metadata consists of: (start-pc, size, features) This adds a new UAR feature and if it's set an additional element: (start-pc, size, features, stack-args-size) Reviewed By: melver Differential Revision: https://reviews.llvm.org/D136078 Added: clang/test/Instrumentation/SanitizerBinaryMetadata/common.h clang/test/Instrumentation/SanitizerBinaryMetadata/covered.cpp clang/test/Instrumentation/SanitizerBinaryMetadata/uar.cpp llvm/lib/CodeGen/SanitizerBinaryMetadata.cpp Modified: clang/include/clang/Basic/CodeGenOptions.def clang/include/clang/Basic/CodeGenOptions.h clang/include/clang/Driver/Options.td clang/lib/CodeGen/BackendUtil.cpp clang/lib/Driver/SanitizerArgs.cpp llvm/include/llvm/CodeGen/CodeGenPassBuilder.h llvm/include/llvm/CodeGen/MachinePassRegistry.def llvm/include/llvm/CodeGen/Passes.h llvm/include/llvm/InitializePasses.h llvm/include/llvm/Transforms/Instrumentation.h llvm/include/llvm/Transforms/Instrumentation/SanitizerBinaryMetadata.h llvm/lib/CodeGen/CMakeLists.txt llvm/lib/CodeGen/CodeGen.cpp llvm/lib/CodeGen/TargetPassConfig.cpp llvm/lib/Transforms/Instrumentation/SanitizerBinaryMetadata.cpp llvm/test/CodeGen/AArch64/O0-pipeline.ll llvm/test/CodeGen/AArch64/O3-pipeline.ll llvm/test/CodeGen/AMDGPU/llc-pipeline.ll llvm/test/CodeGen/ARM/O3-pipeline.ll llvm/test/CodeGen/M68k/pipeline.ll llvm/test/CodeGen/PowerPC/O3-pipeline.ll llvm/test/CodeGen/RISCV/O0-pipeline.ll llvm/test/CodeGen/RISCV/O3-pipeline.ll llvm/test/CodeGen/X86/O0-pipeline.ll llvm/test/CodeGen/X86/opt-pipeline.ll Removed: diff --git a/clang/include/clang/Basic/CodeGenOptions.def b/clang/include/clang/Basic/CodeGenOptions.def index 43521b76652db..81d5ccd4856d4 100644 --- a/clang/include/clang/Basic/CodeGenOptions.def +++ b/clang/include/clang/Basic/CodeGenOptions.def @@ -288,6 +288,8 @@ CODEGENOPT(SanitizeCoverageTraceLoads, 1, 0) ///< Enable tracing of loads. CODEGENOPT(SanitizeCoverageTraceStores, 1, 0) ///< Enable tracing of stores. CODEGENOPT(SanitizeBinaryMetadataCovered, 1, 0) ///< Emit PCs for covered functions. CODEGENOPT(SanitizeBinaryMetadataAtomics, 1, 0) ///< Emit PCs for atomic operations. +CODEGENOPT(SanitizeBinaryMetadataUAR, 1, 0) ///< Emit PCs for start of functions +///< that are subject for use-after-return checking. CODEGENOPT(SanitizeStats , 1, 0) ///< Collect statistics for sanitizers. CODEGENOPT(SimplifyLibCalls , 1, 1) ///< Set when -fbuiltin is enabled. CODEGENOPT(SoftFloat , 1, 0) ///< -soft-float. diff --git a/clang/include/clang/Basic/CodeGenOptions.h b/clang/include/clang/Basic/CodeGenOptions.h index 13794035c9076..a1a20995f211d 100644 --- a/clang/include/clang/Basic/CodeGenOptions.h +++ b/clang/include/clang/Basic/CodeGenOptions.h @@ -497,7 +497,8 @@ class CodeGenOptions : public CodeGenOptionsBase { // Check if any one of SanitizeBinaryMetadata* is enabled. bool hasSanitizeBinaryMetadata() const { -return SanitizeBinaryMetadataCovered || SanitizeBinaryMetadataAtomics; +return SanitizeBinaryMetadataCovered || SanitizeBinaryMetadataAtomics || + SanitizeBinaryMetadataUAR; } }; diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 8da5e25bd38d0..1d577ab70788e 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -5575,6 +5575,10 @@ def fexperimental_sanitize_metadata_EQ_atomics : Flag<["-"], "fexperimental-sanitize-metadata=atomics">, HelpText<"Emit PCs for atomic operations used by binary analysis sanitizers">, MarshallingInfoFlag>; +def fexperimental_sanitize_metadata_EQ_uar +: Flag<["-"], "fexperimental-sanitize-metadata=uar">, + HelpText<"Emit PCs for start of functions that are subject for use-after-return checking.">, + MarshallingInfoFlag>; def fpatchable_function_entry_offset_EQ : Joined<["-"], "fpatchable-function-entry-offset=">, MetaVarName<"">, HelpText<"Generate M NOPs before function entry">, diff --git a/clang/lib/CodeGen/BackendUtil.cpp b/clang/lib/CodeGen/BackendUtil.cpp index 2b241967f5e7b..717ec33441232 100644 --- a/clang/lib/CodeGen/BackendUtil.cpp +++ b/clang/lib/CodeGen/BackendUtil.cpp @@ -234,6 +234,7 @@ getSanitizerBinaryMetadataOptions(const CodeGenOptions &CGOpts) { SanitizerBinaryMetadataOptions Opts; Opts.Covered = CGOpts.SanitizeBinaryMetadataCovered;
[clang] dbe8c2c - Use-after-return sanitizer binary metadata
Author: Dmitry Vyukov Date: 2022-12-05T14:40:31+01:00 New Revision: dbe8c2c316c40b25a0a37b91f1a1a02a55182378 URL: https://github.com/llvm/llvm-project/commit/dbe8c2c316c40b25a0a37b91f1a1a02a55182378 DIFF: https://github.com/llvm/llvm-project/commit/dbe8c2c316c40b25a0a37b91f1a1a02a55182378.diff LOG: Use-after-return sanitizer binary metadata Currently per-function metadata consists of: (start-pc, size, features) This adds a new UAR feature and if it's set an additional element: (start-pc, size, features, stack-args-size) Reviewed By: melver Differential Revision: https://reviews.llvm.org/D136078 Added: compiler-rt/test/metadata/CMakeLists.txt compiler-rt/test/metadata/common.h compiler-rt/test/metadata/covered.cpp compiler-rt/test/metadata/lit.cfg.py compiler-rt/test/metadata/lit.site.cfg.py.in compiler-rt/test/metadata/uar.cpp llvm/lib/CodeGen/SanitizerBinaryMetadata.cpp Modified: clang/include/clang/Basic/CodeGenOptions.def clang/include/clang/Basic/CodeGenOptions.h clang/include/clang/Driver/Options.td clang/lib/CodeGen/BackendUtil.cpp clang/lib/Driver/SanitizerArgs.cpp compiler-rt/test/CMakeLists.txt llvm/include/llvm/CodeGen/CodeGenPassBuilder.h llvm/include/llvm/CodeGen/MachinePassRegistry.def llvm/include/llvm/CodeGen/Passes.h llvm/include/llvm/InitializePasses.h llvm/include/llvm/Transforms/Instrumentation.h llvm/include/llvm/Transforms/Instrumentation/SanitizerBinaryMetadata.h llvm/lib/CodeGen/CMakeLists.txt llvm/lib/CodeGen/CodeGen.cpp llvm/lib/CodeGen/TargetPassConfig.cpp llvm/lib/Transforms/Instrumentation/SanitizerBinaryMetadata.cpp llvm/test/CodeGen/AArch64/O0-pipeline.ll llvm/test/CodeGen/AArch64/O3-pipeline.ll llvm/test/CodeGen/AMDGPU/llc-pipeline.ll llvm/test/CodeGen/ARM/O3-pipeline.ll llvm/test/CodeGen/M68k/pipeline.ll llvm/test/CodeGen/PowerPC/O3-pipeline.ll llvm/test/CodeGen/RISCV/O0-pipeline.ll llvm/test/CodeGen/RISCV/O3-pipeline.ll llvm/test/CodeGen/X86/O0-pipeline.ll llvm/test/CodeGen/X86/opt-pipeline.ll Removed: diff --git a/clang/include/clang/Basic/CodeGenOptions.def b/clang/include/clang/Basic/CodeGenOptions.def index 43521b76652db..81d5ccd4856d4 100644 --- a/clang/include/clang/Basic/CodeGenOptions.def +++ b/clang/include/clang/Basic/CodeGenOptions.def @@ -288,6 +288,8 @@ CODEGENOPT(SanitizeCoverageTraceLoads, 1, 0) ///< Enable tracing of loads. CODEGENOPT(SanitizeCoverageTraceStores, 1, 0) ///< Enable tracing of stores. CODEGENOPT(SanitizeBinaryMetadataCovered, 1, 0) ///< Emit PCs for covered functions. CODEGENOPT(SanitizeBinaryMetadataAtomics, 1, 0) ///< Emit PCs for atomic operations. +CODEGENOPT(SanitizeBinaryMetadataUAR, 1, 0) ///< Emit PCs for start of functions +///< that are subject for use-after-return checking. CODEGENOPT(SanitizeStats , 1, 0) ///< Collect statistics for sanitizers. CODEGENOPT(SimplifyLibCalls , 1, 1) ///< Set when -fbuiltin is enabled. CODEGENOPT(SoftFloat , 1, 0) ///< -soft-float. diff --git a/clang/include/clang/Basic/CodeGenOptions.h b/clang/include/clang/Basic/CodeGenOptions.h index 24cc56c8e05df..d34ed1d6d4919 100644 --- a/clang/include/clang/Basic/CodeGenOptions.h +++ b/clang/include/clang/Basic/CodeGenOptions.h @@ -497,7 +497,8 @@ class CodeGenOptions : public CodeGenOptionsBase { // Check if any one of SanitizeBinaryMetadata* is enabled. bool hasSanitizeBinaryMetadata() const { -return SanitizeBinaryMetadataCovered || SanitizeBinaryMetadataAtomics; +return SanitizeBinaryMetadataCovered || SanitizeBinaryMetadataAtomics || + SanitizeBinaryMetadataUAR; } }; diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 11f6253db7445..c888d4f6194ab 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -5582,6 +5582,10 @@ def fexperimental_sanitize_metadata_EQ_atomics : Flag<["-"], "fexperimental-sanitize-metadata=atomics">, HelpText<"Emit PCs for atomic operations used by binary analysis sanitizers">, MarshallingInfoFlag>; +def fexperimental_sanitize_metadata_EQ_uar +: Flag<["-"], "fexperimental-sanitize-metadata=uar">, + HelpText<"Emit PCs for start of functions that are subject for use-after-return checking.">, + MarshallingInfoFlag>; def fpatchable_function_entry_offset_EQ : Joined<["-"], "fpatchable-function-entry-offset=">, MetaVarName<"">, HelpText<"Generate M NOPs before function entry">, diff --git a/clang/lib/CodeGen/BackendUtil.cpp b/clang/lib/CodeGen/BackendUtil.cpp index b18ead066c6d2..16b48c6dc1d18 100644 --- a/clang/lib/CodeGen/BackendUtil.cpp +++ b/clang/lib/CodeGen/BackendUtil.cpp @@ -235,6 +235,7 @@ getSanitizerBinaryMetadataOptions(const CodeGenOptions &CGOpts) {
Re: [PATCH] D24628: [ASAN] Pass previous stack information through __sanitizer_finish_switch_fiber
dvyukov added a comment. We need a test that passes non-NULL to these arguments and shows how to use the returned values. Comment at: test/asan/TestCases/Linux/swapcontext_annotation.cc:47 @@ -46,3 +46,3 @@ CallNoReturn(); - __sanitizer_finish_switch_fiber(); + __sanitizer_finish_switch_fiber(NULL, NULL, NULL); #include for NULL https://reviews.llvm.org/D24628 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: r296374 - [ubsan] Factor out logic to emit a range check. NFC.
Does not seem to be related to tsan. It's just that somebody called a directory with compiler tsan_release_build, but that seems to be the only relation to tsan. Otherwise looks like a violated assertion in clang. On Mon, Feb 27, 2017 at 9:46 PM, Ivan Krasin wrote: > Hi Vedant, > > not on top of my head. Dmitriy, can you please take a look? > > krasin > > On Mon, Feb 27, 2017 at 12:43 PM, Vedant Kumar wrote: >> >> Hi Ivan, >> >> I saw a bot failure on your job after this commit: >> >> >> http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-autoconf/builds/5467/steps/tsan%20analyze/logs/stdio >> >> http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-autoconf/builds/5467/steps/build%20release%20tsan%20with%20clang/logs/stdio >> >> However, I cannot reproduce it locally with a stage2 TSAN build. >> >> After staring at my diff I couldn't find anything that would explain the >> failure. No other bots seem upset. >> >> Do you have any idea about what's going on? Let me know if you want me to >> revert... >> >> vedant >> >> > On Feb 27, 2017, at 11:46 AM, Vedant Kumar via cfe-commits >> > wrote: >> > >> > Author: vedantk >> > Date: Mon Feb 27 13:46:19 2017 >> > New Revision: 296374 >> > >> > URL: http://llvm.org/viewvc/llvm-project?rev=296374&view=rev >> > Log: >> > [ubsan] Factor out logic to emit a range check. NFC. >> > >> > This is a readability improvement, but it will also help prep an >> > upcoming patch to detect UB loads from bitfields. >> > >> > Modified: >> >cfe/trunk/lib/CodeGen/CGExpr.cpp >> >cfe/trunk/lib/CodeGen/CodeGenFunction.h >> > >> > Modified: cfe/trunk/lib/CodeGen/CGExpr.cpp >> > URL: >> > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExpr.cpp?rev=296374&r1=296373&r2=296374&view=diff >> > >> > == >> > --- cfe/trunk/lib/CodeGen/CGExpr.cpp (original) >> > +++ cfe/trunk/lib/CodeGen/CGExpr.cpp Mon Feb 27 13:46:19 2017 >> > @@ -1301,6 +1301,46 @@ llvm::MDNode *CodeGenFunction::getRangeF >> > return MDHelper.createRange(Min, End); >> > } >> > >> > +bool CodeGenFunction::EmitScalarRangeCheck(llvm::Value *Value, QualType >> > Ty, >> > + SourceLocation Loc) { >> > + bool HasBoolCheck = SanOpts.has(SanitizerKind::Bool); >> > + bool HasEnumCheck = SanOpts.has(SanitizerKind::Enum); >> > + if (!HasBoolCheck && !HasEnumCheck) >> > +return false; >> > + >> > + bool IsBool = hasBooleanRepresentation(Ty) || >> > +NSAPI(CGM.getContext()).isObjCBOOLType(Ty); >> > + bool NeedsBoolCheck = HasBoolCheck && IsBool; >> > + bool NeedsEnumCheck = HasEnumCheck && Ty->getAs(); >> > + if (!NeedsBoolCheck && !NeedsEnumCheck) >> > +return false; >> > + >> > + llvm::APInt Min, End; >> > + if (!getRangeForType(*this, Ty, Min, End, /*StrictEnums=*/true, >> > IsBool)) >> > +return true; >> > + >> > + SanitizerScope SanScope(this); >> > + llvm::Value *Check; >> > + --End; >> > + if (!Min) { >> > +Check = Builder.CreateICmpULE( >> > +Value, llvm::ConstantInt::get(getLLVMContext(), End)); >> > + } else { >> > +llvm::Value *Upper = Builder.CreateICmpSLE( >> > +Value, llvm::ConstantInt::get(getLLVMContext(), End)); >> > +llvm::Value *Lower = Builder.CreateICmpSGE( >> > +Value, llvm::ConstantInt::get(getLLVMContext(), Min)); >> > +Check = Builder.CreateAnd(Upper, Lower); >> > + } >> > + llvm::Constant *StaticArgs[] = {EmitCheckSourceLocation(Loc), >> > + EmitCheckTypeDescriptor(Ty)}; >> > + SanitizerMask Kind = >> > + NeedsEnumCheck ? SanitizerKind::Enum : SanitizerKind::Bool; >> > + EmitCheck(std::make_pair(Check, Kind), >> > SanitizerHandler::LoadInvalidValue, >> > +StaticArgs, EmitCheckValue(Value)); >> > + return true; >> > +} >> > + >> > llvm::Value *CodeGenFunction::EmitLoadOfScalar(Address Addr, bool >> > Volatile, >> >QualType Ty, >> >SourceLocation Loc, >> > @@ -1353,35 +1393,9 @@ llvm::Value *CodeGenFunction::EmitLoadOf >> > false /*ConvertTypeToTag*/); >> > } >> > >> > - bool IsBool = hasBooleanRepresentation(Ty) || >> > -NSAPI(CGM.getContext()).isObjCBOOLType(Ty); >> > - bool NeedsBoolCheck = SanOpts.has(SanitizerKind::Bool) && IsBool; >> > - bool NeedsEnumCheck = >> > - SanOpts.has(SanitizerKind::Enum) && Ty->getAs(); >> > - if (NeedsBoolCheck || NeedsEnumCheck) { >> > -SanitizerScope SanScope(this); >> > -llvm::APInt Min, End; >> > -if (getRangeForType(*this, Ty, Min, End, /*StrictEnums=*/true, >> > IsBool)) { >> > - --End; >> > - llvm::Value *Check; >> > - if (!Min) >> > -Check = Builder.CreateICmpULE( >> > - Load, llvm::ConstantInt::get(getLLVMContext(), End)); >> > - else { >> > -llvm::Value *Upper = Builder.Create
Re: r296374 - [ubsan] Factor out logic to emit a range check. NFC.
Ivan, you are listed as admin of http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-autoconf Please issue a clobber for it. If it does not help, the bot runs the following script: https://github.com/llvm-mirror/zorg/blob/master/zorg/buildbot/builders/sanitizers/buildbot_standard.sh It builds clang with clang, but the first clang is just a normal clang, it's not build tsan or anything as far as I see. On Mon, Feb 27, 2017 at 10:00 PM, Vedant Kumar wrote: > Hm, still can't reproduce this with a normal stage2-RA build of > clang+compiler_rt. > > And it looks like the next build on the job has the same issue: > > > http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-autoconf/builds/5468/steps/annotate/logs/stdio > > Do you think there could be stale build products on the machine? Could we try > to run a 'make clean' in the top-level build dir? > > vedant > >> On Feb 27, 2017, at 12:51 PM, Dmitry Vyukov wrote: >> >> Does not seem to be related to tsan. It's just that somebody called a >> directory with compiler tsan_release_build, but that seems to be the >> only relation to tsan. Otherwise looks like a violated assertion in >> clang. >> >> >> On Mon, Feb 27, 2017 at 9:46 PM, Ivan Krasin wrote: >>> Hi Vedant, >>> >>> not on top of my head. Dmitriy, can you please take a look? >>> >>> krasin >>> >>> On Mon, Feb 27, 2017 at 12:43 PM, Vedant Kumar wrote: Hi Ivan, I saw a bot failure on your job after this commit: http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-autoconf/builds/5467/steps/tsan%20analyze/logs/stdio http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-autoconf/builds/5467/steps/build%20release%20tsan%20with%20clang/logs/stdio However, I cannot reproduce it locally with a stage2 TSAN build. After staring at my diff I couldn't find anything that would explain the failure. No other bots seem upset. Do you have any idea about what's going on? Let me know if you want me to revert... vedant > On Feb 27, 2017, at 11:46 AM, Vedant Kumar via cfe-commits > wrote: > > Author: vedantk > Date: Mon Feb 27 13:46:19 2017 > New Revision: 296374 > > URL: http://llvm.org/viewvc/llvm-project?rev=296374&view=rev > Log: > [ubsan] Factor out logic to emit a range check. NFC. > > This is a readability improvement, but it will also help prep an > upcoming patch to detect UB loads from bitfields. > > Modified: > cfe/trunk/lib/CodeGen/CGExpr.cpp > cfe/trunk/lib/CodeGen/CodeGenFunction.h > > Modified: cfe/trunk/lib/CodeGen/CGExpr.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExpr.cpp?rev=296374&r1=296373&r2=296374&view=diff > > == > --- cfe/trunk/lib/CodeGen/CGExpr.cpp (original) > +++ cfe/trunk/lib/CodeGen/CGExpr.cpp Mon Feb 27 13:46:19 2017 > @@ -1301,6 +1301,46 @@ llvm::MDNode *CodeGenFunction::getRangeF > return MDHelper.createRange(Min, End); > } > > +bool CodeGenFunction::EmitScalarRangeCheck(llvm::Value *Value, QualType > Ty, > + SourceLocation Loc) { > + bool HasBoolCheck = SanOpts.has(SanitizerKind::Bool); > + bool HasEnumCheck = SanOpts.has(SanitizerKind::Enum); > + if (!HasBoolCheck && !HasEnumCheck) > +return false; > + > + bool IsBool = hasBooleanRepresentation(Ty) || > +NSAPI(CGM.getContext()).isObjCBOOLType(Ty); > + bool NeedsBoolCheck = HasBoolCheck && IsBool; > + bool NeedsEnumCheck = HasEnumCheck && Ty->getAs(); > + if (!NeedsBoolCheck && !NeedsEnumCheck) > +return false; > + > + llvm::APInt Min, End; > + if (!getRangeForType(*this, Ty, Min, End, /*StrictEnums=*/true, > IsBool)) > +return true; > + > + SanitizerScope SanScope(this); > + llvm::Value *Check; > + --End; > + if (!Min) { > +Check = Builder.CreateICmpULE( > +Value, llvm::ConstantInt::get(getLLVMContext(), End)); > + } else { > +llvm::Value *Upper = Builder.CreateICmpSLE( > +Value, llvm::ConstantInt::get(getLLVMContext(), End)); > +llvm::Value *Lower = Builder.CreateICmpSGE( > +Value, llvm::ConstantInt::get(getLLVMContext(), Min)); > +Check = Builder.CreateAnd(Upper, Lower); > + } > + llvm::Constant *StaticArgs[] = {EmitCheckSourceLocation(Loc), > + EmitCheckTypeDescriptor(Ty)}; > + SanitizerMask Kind = > + NeedsEnumCheck ? SanitizerKind::Enum : SanitizerKind::Bool; > + EmitCheck(std::make_pair(Check, Kind), > SanitizerHandler::LoadInvalidValue, > +StaticArgs, EmitCheckValue(Value)); > + return true; > +} > + > llvm::Value *CodeGenFunction::EmitLoad
[PATCH] D23835: [compiler-rt] tsan/tests: Add missing -I for top-level include directory
dvyukov added a comment. What is standalone build? And how does it fail? https://reviews.llvm.org/D23835 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D25857: [tsan][clang] Introduce a function attribute to disable TSan checking at run time
dvyukov added inline comments. Comment at: lib/CodeGen/CodeGenFunction.cpp:717 + // Ignore TSan memory acesses from within dealloc and all of its calees at + // run time. This is unpleasant. We had recursive ignores in the old Valgrind-based tsan, but managed to not reintroduce them in the new tsan so far. But I also don't see any better solution. Comment at: lib/CodeGen/CodeGenFunction.cpp:721 +if (const auto *M = dyn_cast_or_null(D)) + if (M->getMethodFamily() == OMF_dealloc) +Fn->addFnAttr("sanitize_thread_no_checking_at_run_time"); Can we do this check right in the tsan pass? Or this information is already lost there? Comment at: lib/CodeGen/CodeGenFunction.cpp:722 + if (M->getMethodFamily() == OMF_dealloc) +Fn->addFnAttr("sanitize_thread_no_checking_at_run_time"); + Also do: Fn->removeFnAttr(llvm::Attribute::SanitizeThread); That's what will effectively happen. And it will allow to simplify the other patch. https://reviews.llvm.org/D25857 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D25857: [tsan][clang] Introduce a function attribute to disable TSan checking at run time
dvyukov added inline comments. Comment at: test/CodeGen/sanitize-thread-no-checking-at-run-time.m:1 +// RUN: %clang_cc1 -triple x86_64-apple-darwin -x objective-c++ -emit-llvm -o - %s | FileCheck -check-prefix=WITHOUT %s +// RUN: %clang_cc1 -triple x86_64-apple-darwin -x objective-c++ -emit-llvm -o - %s -fsanitize=thread | FileCheck -check-prefix=TSAN %s Are you sure this is the right location for the test? test/CodeGen does not seem to contain any tests, only subdirs. Comment at: test/CodeGen/sanitize-thread-no-checking-at-run-time.m:35 +// TSAN: attributes [[ATTR]] = { nounwind {{.*}} "sanitize_thread_no_checking_at_run_time" {{.*}} } +// TSAN-NOT: sanitize_thread Does this check actually work? I would expect that sanitize_thread, if present, will be eaten by the previous line. Not sure what's the best way to fix it. What is the exact list of attributes on the previous line? Maybe we can just specify them all without using {{.*}}? https://reviews.llvm.org/D25857 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D26461: Tread TSan LLVM flags to driver: add TSan controlling flags to clang.
dvyukov added inline comments. Comment at: include/clang/Driver/Options.td:733 + Group, Flags<[CC1Option]>, + HelpText<"Enable data race detection in ThreadSanitizer">; +def fno_sanitize_thread_data_races : Flag<["-"], "fno-sanitize-thread-data-races">, These descriptions may be confusing for users. This does not disable data race detection in tsan. Even if all files are compiled with this flag, tsan can still report races. Same for traces and atomics. Please make it clear that it only enables/disables source _instrumentation_. Does user see what's the default value? If not, then I guess some users will add flags just because they do want data races detection and stack traces. We need to make it clear that all flags are enabled by default. https://reviews.llvm.org/D26461 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D25857: [tsan][clang] Introduce a function attribute to disable TSan checking at run time
dvyukov accepted this revision. dvyukov added a comment. This revision is now accepted and ready to land. > Alternatively, I could drop this aspect of the test altogether since I have > an assert in the llvm pass. Dropping the check is fine in this case. https://reviews.llvm.org/D25857 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
Re: [PATCH] D14858: Support building tsan on android.
dvyukov added a comment. > Yes, we should use shared runtime library on Android. Note that tsan is different from all of asan/msan/ubsan in that it does zillions of calls into runtime, so the indirection will have non-zero runtime cost. Is it possible to statically link it into something that has the bulk of verified code? http://reviews.llvm.org/D14858 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [SanitizerBinaryMetadata] Fix multi-version sanitizer metadata (PR #97848)
https://github.com/dvyukov approved this pull request. https://github.com/llvm/llvm-project/pull/97848 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits