[compiler-rt] r209815 - [sanitizer] Add coverage_dir flag.
Evgeniy Stepanov
eugeni.stepanov at gmail.com
Mon Jun 2 02:14:59 PDT 2014
done
On Fri, May 30, 2014 at 9:53 PM, Kostya Serebryany <kcc at google.com> wrote:
> please document this flag at
> https://code.google.com/p/address-sanitizer/wiki/AsanCoverage
> (and also add all coverage-related flags to
> https://code.google.com/p/address-sanitizer/wiki/Flags)
>
>
> On Thu, May 29, 2014 at 6:33 PM, Evgeniy Stepanov
> <eugeni.stepanov at gmail.com> wrote:
>>
>> Author: eugenis
>> Date: Thu May 29 09:33:16 2014
>> New Revision: 209815
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=209815&view=rev
>> Log:
>> [sanitizer] Add coverage_dir flag.
>>
>> Modified:
>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_coverage_libcdep.cc
>>
>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_coverage_mapping_libcdep.cc
>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_flags.cc
>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_flags.h
>> compiler-rt/trunk/test/asan/TestCases/Linux/coverage-direct.cc
>>
>> Modified:
>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_coverage_libcdep.cc
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_coverage_libcdep.cc?rev=209815&r1=209814&r2=209815&view=diff
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_coverage_libcdep.cc
>> (original)
>> +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_coverage_libcdep.cc
>> Thu May 29 09:33:16 2014
>> @@ -91,9 +91,9 @@ class CoverageData {
>> static CoverageData coverage_data;
>>
>> void CoverageData::DirectInit() {
>> - InternalScopedString path(64);
>> - internal_snprintf((char *)path.data(), path.size(), "%zd.sancov.raw",
>> - internal_getpid());
>> + InternalScopedString path(1024);
>> + internal_snprintf((char *)path.data(), path.size(),
>> "%s/%zd.sancov.raw",
>> + common_flags()->coverage_dir, internal_getpid());
>> pc_fd = OpenFile(path.data(), true);
>> if (internal_iserror(pc_fd)) {
>> Report(" Coverage: failed to open %s for writing\n", path.data());
>> @@ -221,15 +221,17 @@ static int CovOpenFile(bool packed, cons
>> InternalScopedBuffer<char> path(1024);
>> if (!packed) {
>> CHECK(name);
>> - internal_snprintf((char *)path.data(), path.size(), "%s.%zd.sancov",
>> - name, internal_getpid());
>> + Printf("%s\n", common_flags()->coverage_dir);
>> + internal_snprintf((char *)path.data(), path.size(),
>> "%s/%s.%zd.sancov",
>> + common_flags()->coverage_dir, name,
>> internal_getpid());
>> } else {
>> if (!name)
>> - internal_snprintf((char *)path.data(), path.size(),
>> "%zd.sancov.packed",
>> + internal_snprintf((char *)path.data(), path.size(),
>> + "%s/%zd.sancov.packed",
>> common_flags()->coverage_dir,
>> internal_getpid());
>> else
>> - internal_snprintf((char *)path.data(), path.size(),
>> "%s.sancov.packed",
>> - name);
>> + internal_snprintf((char *)path.data(), path.size(),
>> "%s/%s.sancov.packed",
>> + common_flags()->coverage_dir, name);
>> }
>> uptr fd = OpenFile(path.data(), true);
>> if (internal_iserror(fd)) {
>> @@ -279,8 +281,9 @@ static void CovDump() {
>> }
>> } else {
>> // One file per module per process.
>> - internal_snprintf((char *)path.data(), path.size(),
>> "%s.%zd.sancov",
>> - module_name, internal_getpid());
>> + internal_snprintf((char *)path.data(), path.size(),
>> "%s/%s.%zd.sancov",
>> + common_flags()->coverage_dir, module_name,
>> + internal_getpid());
>> int fd = CovOpenFile(false /* packed */, module_name);
>> if (fd > 0) {
>> internal_write(fd, offsets.data(), offsets.size() *
>> sizeof(u32));
>>
>> Modified:
>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_coverage_mapping_libcdep.cc
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_coverage_mapping_libcdep.cc?rev=209815&r1=209814&r2=209815&view=diff
>>
>> ==============================================================================
>> ---
>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_coverage_mapping_libcdep.cc
>> (original)
>> +++
>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_coverage_mapping_libcdep.cc
>> Thu May 29 09:33:16 2014
>> @@ -41,9 +41,12 @@ void CovUpdateMapping() {
>> if (!common_flags()->coverage || !common_flags()->coverage_direct)
>> return;
>>
>> int err;
>> - InternalScopedString tmp_path(64);
>> - internal_snprintf((char *)tmp_path.data(), tmp_path.size(),
>> - "%zd.sancov.map.tmp", internal_getpid());
>> + InternalScopedString tmp_path(64 +
>> +
>> internal_strlen(common_flags()->coverage_dir));
>> + uptr res = internal_snprintf((char *)tmp_path.data(), tmp_path.size(),
>> + "%s/%zd.sancov.map.tmp",
>> common_flags()->coverage_dir,
>> + internal_getpid());
>> + CHECK_LE(res, tmp_path.size());
>> uptr map_fd = OpenFile(tmp_path.data(), true);
>> if (internal_iserror(map_fd)) {
>> Report(" Coverage: failed to open %s for writing\n",
>> tmp_path.data());
>> @@ -59,7 +62,7 @@ void CovUpdateMapping() {
>>
>> InternalScopedString line(4096);
>> line.append("%d\n", sizeof(uptr) * 8);
>> - uptr res = internal_write(map_fd, line.data(), line.length());
>> + res = internal_write(map_fd, line.data(), line.length());
>> if (internal_iserror(res, &err)) {
>> Printf("sancov.map write failed: %d\n", err);
>> Die();
>> @@ -84,9 +87,10 @@ void CovUpdateMapping() {
>>
>> internal_close(map_fd);
>>
>> - InternalScopedString path(64);
>> - internal_snprintf((char *)path.data(), path.size(), "%zd.sancov.map",
>> - internal_getpid());
>> + InternalScopedString path(64 +
>> internal_strlen(common_flags()->coverage_dir));
>> + res = internal_snprintf((char *)path.data(), path.size(),
>> "%s/%zd.sancov.map",
>> + common_flags()->coverage_dir, internal_getpid());
>> + CHECK_LE(res, path.size());
>> res = internal_rename(tmp_path.data(), path.data());
>> if (internal_iserror(res, &err)) {
>> Printf("sancov.map rename failed: %d\n", err);
>>
>> Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_flags.cc
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_flags.cc?rev=209815&r1=209814&r2=209815&view=diff
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_flags.cc (original)
>> +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_flags.cc Thu May 29
>> 09:33:16 2014
>> @@ -56,6 +56,7 @@ void SetCommonFlagsDefaults(CommonFlags
>> f->intercept_tls_get_addr = false;
>> f->coverage = false;
>> f->coverage_direct = false;
>> + f->coverage_dir = ".";
>> f->full_address_space = false;
>> }
>>
>> @@ -132,6 +133,9 @@ void ParseCommonFlagsFromString(CommonFl
>> "If set, coverage information will be dumped directly to a
>> memory "
>> "mapped file. This way data is not lost even if the process
>> is "
>> "suddenly killed.");
>> + ParseFlag(str, &f->coverage_dir, "coverage_dir",
>> + "Target directory for coverage dumps. Defaults to the current
>> "
>> + "directory.");
>> ParseFlag(str, &f->full_address_space, "full_address_space",
>> "Sanitize complete address space; "
>> "by default kernel area on 32-bit platforms will not be
>> sanitized");
>>
>> Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_flags.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_flags.h?rev=209815&r1=209814&r2=209815&view=diff
>>
>> ==============================================================================
>> --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_flags.h (original)
>> +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_flags.h Thu May 29
>> 09:33:16 2014
>> @@ -55,6 +55,7 @@ struct CommonFlags {
>> uptr mmap_limit_mb;
>> bool coverage;
>> bool coverage_direct;
>> + const char *coverage_dir;
>> bool full_address_space;
>> };
>>
>>
>> Modified: compiler-rt/trunk/test/asan/TestCases/Linux/coverage-direct.cc
>> URL:
>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/Linux/coverage-direct.cc?rev=209815&r1=209814&r2=209815&view=diff
>>
>> ==============================================================================
>> --- compiler-rt/trunk/test/asan/TestCases/Linux/coverage-direct.cc
>> (original)
>> +++ compiler-rt/trunk/test/asan/TestCases/Linux/coverage-direct.cc Thu May
>> 29 09:33:16 2014
>> @@ -4,13 +4,13 @@
>>
>> // RUN: rm -rf %T/coverage-direct
>>
>> -// RUN: mkdir -p %T/coverage-direct/normal && cd
>> %T/coverage-direct/normal
>> -// RUN: ASAN_OPTIONS=coverage=1:coverage_direct=0:verbosity=1 %run %t
>> -// RUN: %sancov print *.sancov >out.txt
>> -// RUN: cd ../..
>> +// RUN: mkdir -p %T/coverage-direct/normal
>> +// RUN:
>> ASAN_OPTIONS=coverage=1:coverage_direct=0:coverage_dir=%T/coverage-direct/normal:verbosity=1
>> %run %t
>> +// RUN: %sancov print %T/coverage-direct/normal/*.sancov
>> >%T/coverage-direct/normal/out.txt
>>
>> -// RUN: mkdir -p %T/coverage-direct/direct && cd
>> %T/coverage-direct/direct
>> -// RUN: ASAN_OPTIONS=coverage=1:coverage_direct=1:verbosity=1 %run %t
>> +// RUN: mkdir -p %T/coverage-direct/direct
>> +// RUN:
>> ASAN_OPTIONS=coverage=1:coverage_direct=1:coverage_dir=%T/coverage-direct/direct:verbosity=1
>> %run %t
>> +// RUN: cd %T/coverage-direct/direct
>> // RUN: %sancov rawunpack *.sancov.raw
>> // RUN: %sancov print *.sancov >out.txt
>> // RUN: cd ../..
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
>
More information about the llvm-commits
mailing list