[compiler-rt] r246096 - Handle suppression files ending in CRLF (\r\n)

Filipe Cabecinhas via llvm-commits llvm-commits at lists.llvm.org
Thu Aug 27 10:26:58 PDT 2015


How about checking that we deal correctly with the \r in unit tests? That
way we can avoid all this trouble.
IIRC, GnuWin32 is made of packages and the user installs what they want, no?

Thanks,

  Filipe


On Thursday, August 27, 2015, Reid Kleckner <rnk at google.com
<javascript:_e(%7B%7D,'cvml','rnk at google.com');>> wrote:

> unix2dos was in my gnuwin32 installation, so I figured it's fine.
>
> On Wed, Aug 26, 2015 at 8:51 PM, Filipe Cabecinhas <filcab at gmail.com>
> wrote:
>
>> Yeah, that's true. I'm still not happy about adding additional
>> dependencies...
>> Python is a dependency, though. I guess a small Python one liner would
>> work.
>>
>>
>> On Wednesday, August 26, 2015, Sean Silva <chisophugis at gmail.com> wrote:
>>
>>>
>>>
>>> On Wed, Aug 26, 2015 at 8:26 PM, Filipe Cabecinhas via llvm-commits <
>>> llvm-commits at lists.llvm.org> wrote:
>>>
>>>> Please don't rely on unix2dos. Comitting a file with \r\n is much
>>>> better than adding dependencies like this.
>>>> I also don't think this test should be Windows only.
>>>>
>>>
>>> VCS are notorious for changing line endings in various ways. I don't
>>> think that unix2dos is a great solution, but it at least the failure mode
>>> is "blows up; program not found" instead of silently doing something else.
>>>
>>> -- Sean Silva
>>>
>>>
>>>
>>>>
>>>>
>>>> Thank you,
>>>>
>>>>   Filipe
>>>>
>>>>
>>>> On Wednesday, August 26, 2015, Reid Kleckner via llvm-commits <
>>>> llvm-commits at lists.llvm.org> wrote:
>>>>
>>>>> Author: rnk
>>>>> Date: Wed Aug 26 17:23:50 2015
>>>>> New Revision: 246096
>>>>>
>>>>> URL: http://llvm.org/viewvc/llvm-project?rev=246096&view=rev
>>>>> Log:
>>>>> Handle suppression files ending in CRLF (\r\n)
>>>>>
>>>>> The gnuwin32 version of 'echo' appears to produce such files, causing a
>>>>> test failure that only reproduced with gnuwin32.
>>>>>
>>>>> Added:
>>>>>     compiler-rt/trunk/test/asan/TestCases/Windows/suppressions-crlf.cc
>>>>> Modified:
>>>>>     compiler-rt/trunk/lib/sanitizer_common/sanitizer_suppressions.cc
>>>>>
>>>>> Modified:
>>>>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_suppressions.cc
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_suppressions.cc?rev=246096&r1=246095&r2=246096&view=diff
>>>>>
>>>>> ==============================================================================
>>>>> --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_suppressions.cc
>>>>> (original)
>>>>> +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_suppressions.cc
>>>>> Wed Aug 26 17:23:50 2015
>>>>> @@ -112,7 +112,8 @@ void SuppressionContext::Parse(const cha
>>>>>        end = line + internal_strlen(line);
>>>>>      if (line != end && line[0] != '#') {
>>>>>        const char *end2 = end;
>>>>> -      while (line != end2 && (end2[-1] == ' ' || end2[-1] == '\t'))
>>>>> +      while (line != end2 &&
>>>>> +             (end2[-1] == ' ' || end2[-1] == '\t' || end2[-1] ==
>>>>> '\r'))
>>>>>          end2--;
>>>>>        int type;
>>>>>        for (type = 0; type < suppression_types_num_; type++) {
>>>>>
>>>>> Added:
>>>>> compiler-rt/trunk/test/asan/TestCases/Windows/suppressions-crlf.cc
>>>>> URL:
>>>>> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/Windows/suppressions-crlf.cc?rev=246096&view=auto
>>>>>
>>>>> ==============================================================================
>>>>> --- compiler-rt/trunk/test/asan/TestCases/Windows/suppressions-crlf.cc
>>>>> (added)
>>>>> +++ compiler-rt/trunk/test/asan/TestCases/Windows/suppressions-crlf.cc
>>>>> Wed Aug 26 17:23:50 2015
>>>>> @@ -0,0 +1,19 @@
>>>>> +// Try a strlen suppression, but force the input file to be DOS
>>>>> format (CRLF).
>>>>> +// RUN: %clangxx_asan -O0 %s -o %t
>>>>> +// RUN: echo "interceptor_name:strlen" > %t.supp
>>>>> +// RUN: unix2dos %t.supp
>>>>> +// RUN: %env_asan_opts=suppressions='"%t.supp"' %run %t 2>&1 |
>>>>> FileCheck %s
>>>>> +
>>>>> +#include <stdio.h>
>>>>> +#include <stdlib.h>
>>>>> +#include <string.h>
>>>>> +
>>>>> +int main() {
>>>>> +  char *a = (char *)malloc(6);
>>>>> +  free(a);
>>>>> +  size_t len = strlen(a); // BOOM
>>>>> +  fprintf(stderr, "strlen ignored, len = %zu\n", len);
>>>>> +}
>>>>> +
>>>>> +// CHECK-NOT: AddressSanitizer: heap-use-after-free
>>>>> +// CHECK: strlen ignored
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> llvm-commits mailing list
>>>>> llvm-commits at lists.llvm.org
>>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>>>>
>>>>
>>>>
>>>> --
>>>>   F
>>>>
>>>>
>>>> _______________________________________________
>>>> llvm-commits mailing list
>>>> llvm-commits at lists.llvm.org
>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>>>
>>>>
>>>
>>
>> --
>>   F
>>
>>
>

-- 
  F
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150827/d589e8e6/attachment.html>


More information about the llvm-commits mailing list