[llvm] r309646 - [libFuzzer] enable -fsanitize-coverage=pc-table for all tests

Kostya Serebryany via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 1 10:56:47 PDT 2017


Hold on, I'll revert only the part that actually causes the failure.


On Tue, Aug 1, 2017 at 10:46 AM, Vitaly Buka <vitalybuka at google.com> wrote:

> I am going revert this change?
>
> On Tue, Aug 1, 2017 at 8:16 AM, Kostya Serebryany <kcc at google.com> wrote:
>
>> Hi Reid, Zach,
>>
>> I've introduced yet another kind of coverage instrumentation, which
>> doesn't work on windows out of the box.
>> Could you please help?
>> This is again something about section naming.
>>
>> --kcc
>>
>>
>> On Tue, Aug 1, 2017 at 1:27 AM, Vitaly Buka <vitalybuka at google.com>
>> wrote:
>>
>>> Broken by this patch
>>> http://lab.llvm.org:8011/builders/sanitizer-windows/builds/14792
>>>
>>> On Mon, Jul 31, 2017 at 5:48 PM, Kostya Serebryany via llvm-commits <
>>> llvm-commits at lists.llvm.org> wrote:
>>>
>>>> Author: kcc
>>>> Date: Mon Jul 31 17:48:44 2017
>>>> New Revision: 309646
>>>>
>>>> URL: http://llvm.org/viewvc/llvm-project?rev=309646&view=rev
>>>> Log:
>>>> [libFuzzer] enable -fsanitize-coverage=pc-table for all tests
>>>>
>>>> Modified:
>>>>     llvm/trunk/lib/Fuzzer/FuzzerTracePC.cpp
>>>>     llvm/trunk/lib/Fuzzer/FuzzerTracePC.h
>>>>     llvm/trunk/lib/Fuzzer/test/CMakeLists.txt
>>>>     llvm/trunk/lib/Fuzzer/test/inline-8bit-counters.test
>>>>
>>>> Modified: llvm/trunk/lib/Fuzzer/FuzzerTracePC.cpp
>>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Fuzzer/Fu
>>>> zzerTracePC.cpp?rev=309646&r1=309645&r2=309646&view=diff
>>>> ============================================================
>>>> ==================
>>>> --- llvm/trunk/lib/Fuzzer/FuzzerTracePC.cpp (original)
>>>> +++ llvm/trunk/lib/Fuzzer/FuzzerTracePC.cpp Mon Jul 31 17:48:44 2017
>>>> @@ -72,7 +72,7 @@ void TracePC::HandlePCsInit(const uint8_
>>>>    if (NumPCTables && ModulePCTable[NumPCTables - 1].Start == B) return;
>>>>    assert(NumPCTables < sizeof(ModulePCTable) /
>>>> sizeof(ModulePCTable[0]));
>>>>    ModulePCTable[NumPCTables++] = {B, E};
>>>> -  NumPCsInPCTables = E - B;
>>>> +  NumPCsInPCTables += E - B;
>>>>  }
>>>>
>>>>  void TracePC::HandleInit(uint32_t *Start, uint32_t *Stop) {
>>>> @@ -95,26 +95,36 @@ void TracePC::HandleInit(uint32_t *Start
>>>>
>>>>  void TracePC::PrintModuleInfo() {
>>>>    if (NumGuards) {
>>>> -    Printf("INFO: Loaded %zd modules (%zd guards): ", NumModules,
>>>> NumGuards);
>>>> +    Printf("INFO: Loaded %zd modules   (%zd guards): ", NumModules,
>>>> NumGuards);
>>>>      for (size_t i = 0; i < NumModules; i++)
>>>> -      Printf("[%p, %p), ", Modules[i].Start, Modules[i].Stop);
>>>> +      Printf("%zd [%p, %p), ", Modules[i].Stop - Modules[i].Start,
>>>> +             Modules[i].Start, Modules[i].Stop);
>>>>      Printf("\n");
>>>>    }
>>>>    if (NumModulesWithInline8bitCounters) {
>>>> -    Printf("INFO: Loaded %zd modules with %zd inline 8-bit counters: ",
>>>> +    Printf("INFO: Loaded %zd modules   (%zd inline 8-bit counters): ",
>>>>             NumModulesWithInline8bitCounters, NumInline8bitCounters);
>>>>      for (size_t i = 0; i < NumModulesWithInline8bitCounters; i++)
>>>> -      Printf("[%p, %p), ", ModuleCounters[i].Start,
>>>> ModuleCounters[i].Stop);
>>>> +      Printf("%zd [%p, %p), ", ModuleCounters[i].Stop -
>>>> ModuleCounters[i].Start,
>>>> +             ModuleCounters[i].Start, ModuleCounters[i].Stop);
>>>>      Printf("\n");
>>>>    }
>>>>    if (NumPCTables) {
>>>> -    Printf("INFO: Loaded %zd PC tables,   %zd PCs: ", NumPCTables,
>>>> +    Printf("INFO: Loaded %zd PC tables (%zd PCs): ", NumPCTables,
>>>>             NumPCsInPCTables);
>>>>      for (size_t i = 0; i < NumPCTables; i++) {
>>>> -      Printf("[%p,%p), ", ModulePCTable[i].Start,
>>>> ModulePCTable[i].Stop,
>>>> -             ModulePCTable[i].Stop - ModulePCTable[i].Start);
>>>> +      Printf("%zd [%p,%p), ", ModulePCTable[i].Stop -
>>>> ModulePCTable[i].Start,
>>>> +             ModulePCTable[i].Start, ModulePCTable[i].Stop);
>>>>      }
>>>>      Printf("\n");
>>>> +
>>>> +    if ((NumGuards && NumGuards != NumPCsInPCTables) ||
>>>> +        (NumInline8bitCounters && NumInline8bitCounters !=
>>>> NumPCsInPCTables)) {
>>>> +      Printf("ERROR: The size of coverage PC tables does not match the"
>>>> +             " number of instrumented PCs. This might be a bug in the
>>>> compiler,"
>>>> +             " please contact the libFuzzer developers.\n");
>>>> +      _Exit(1);
>>>> +    }
>>>>    }
>>>>  }
>>>>
>>>>
>>>> Modified: llvm/trunk/lib/Fuzzer/FuzzerTracePC.h
>>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Fuzzer/Fu
>>>> zzerTracePC.h?rev=309646&r1=309645&r2=309646&view=diff
>>>> ============================================================
>>>> ==================
>>>> --- llvm/trunk/lib/Fuzzer/FuzzerTracePC.h (original)
>>>> +++ llvm/trunk/lib/Fuzzer/FuzzerTracePC.h Mon Jul 31 17:48:44 2017
>>>> @@ -86,7 +86,8 @@ class TracePC {
>>>>
>>>>    void ResetMaps() {
>>>>      ValueProfileMap.Reset();
>>>> -    memset(Counters(), 0, GetNumPCs());
>>>> +    if (NumModules)
>>>> +      memset(Counters(), 0, GetNumPCs());
>>>>      ClearExtraCounters();
>>>>      ClearInlineCounters();
>>>>    }
>>>>
>>>> Modified: llvm/trunk/lib/Fuzzer/test/CMakeLists.txt
>>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Fuzzer/te
>>>> st/CMakeLists.txt?rev=309646&r1=309645&r2=309646&view=diff
>>>> ============================================================
>>>> ==================
>>>> --- llvm/trunk/lib/Fuzzer/test/CMakeLists.txt (original)
>>>> +++ llvm/trunk/lib/Fuzzer/test/CMakeLists.txt Mon Jul 31 17:48:44 2017
>>>> @@ -15,7 +15,7 @@ foreach (VARNAME ${variables_to_filter})
>>>>  endforeach()
>>>>
>>>>  # Enable the coverage instrumentation (it is disabled for the Fuzzer
>>>> lib).
>>>> -set(CMAKE_CXX_FLAGS "${LIBFUZZER_FLAGS_BASE}
>>>> -fsanitize-coverage=trace-pc-guard,indirect-calls,trace-cmp,trace-div,trace-gep
>>>> -gline-tables-only")
>>>> +set(CMAKE_CXX_FLAGS "${LIBFUZZER_FLAGS_BASE}
>>>> -fsanitize-coverage=trace-pc-guard,indirect-calls,trace-cmp,trace-div,trace-gep,pc-table
>>>> -gline-tables-only")
>>>>
>>>>  if(MSVC)
>>>>    # For tests use the CRT specified for release build
>>>>
>>>> Modified: llvm/trunk/lib/Fuzzer/test/inline-8bit-counters.test
>>>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Fuzzer/te
>>>> st/inline-8bit-counters.test?rev=309646&r1=309645&r2=309646&view=diff
>>>> ============================================================
>>>> ==================
>>>> --- llvm/trunk/lib/Fuzzer/test/inline-8bit-counters.test (original)
>>>> +++ llvm/trunk/lib/Fuzzer/test/inline-8bit-counters.test Mon Jul 31
>>>> 17:48:44 2017
>>>> @@ -1,4 +1,4 @@
>>>>  REQUIRES: linux
>>>> -CHECK: INFO: Loaded 1 modules with {{.*}} inline 8-bit counters
>>>> +CHECK: INFO: Loaded 1 modules ({{.*}} inline 8-bit counters)
>>>>  CHECK: BINGO
>>>>  RUN: not LLVMFuzzer-SimpleTest-Inline8bitCounters -runs=1000000
>>>> -seed=1 2>&1 | FileCheck %s
>>>>
>>>>
>>>> _______________________________________________
>>>> llvm-commits mailing list
>>>> llvm-commits at lists.llvm.org
>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>>>
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170801/cb82119c/attachment.html>


More information about the llvm-commits mailing list