[compiler-rt] r327062 - [asan] Fix a false positive ODR violation due to LTO ConstantMerge pass [compiler-rt part, take 3]

Matt Morehouse via llvm-commits llvm-commits at lists.llvm.org
Thu Mar 8 16:30:28 PST 2018


I sent an email on r327068.  strcat is deprecated on Windows, which is
causing a warning.

Side note, looks like all 4 of those tests are failing on Android
<http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-android/builds/8468/steps/run%20lit%20tests%20%5Bi686%2Ffugu-userdebug%2FN2G48C%5D/logs/stdio>
.

On Thu, Mar 8, 2018 at 4:25 PM, Kuba Mracek <mracek at apple.com> wrote:

> No problem. Do you know why it's failing though? Dan added this test today
> along with 3 other very similar tests (https://reviews.llvm.org/D43702),
> but only this one (strcat-overlap.cc) fails...
>
> Kuba
>
>
> On Mar 8, 2018, at 4:24 PM, Matt Morehouse <mascasa at google.com> wrote:
>
> Great, thanks for the strcat test fix as well!
>
> On Thu, Mar 8, 2018 at 4:22 PM, Kuba Mracek <mracek at apple.com> wrote:
>
>> The bot is back to green: <http://lab.llvm.org:8011/buil
>> ders/sanitizer-windows/builds/25347>
>>
>> Kuba
>>
>>
>> On Mar 8, 2018, at 3:59 PM, Kuba Mracek via llvm-commits <
>> llvm-commits at lists.llvm.org> wrote:
>>
>> Thanks!
>>
>> Kuba
>>
>> On Mar 8, 2018, at 3:05 PM, Matt Morehouse via llvm-commits <
>> llvm-commits at lists.llvm.org> wrote:
>>
>> This seems to fail on Windows:  http://lab.llvm.org:
>> 8011/builders/sanitizer-windows/builds/25343/steps/run%
>> 20check-asan/logs/stdio
>>
>> FAIL: AddressSanitizer-i386-windows :: TestCases/lto-constmerge-odr.cc (488 of 602)
>> ******************** TEST 'AddressSanitizer-i386-windows :: TestCases/lto-constmerge-odr.cc' FAILED ********************
>> Script:
>> --
>> C:/b/slave/sanitizer-windows/build/./bin/clang.exe  -fsanitize=address -mno-omit-leaf-frame-pointer -fno-omit-frame-pointer -fno-optimize-sibling-calls -gline-tables-only -gcodeview -gcolumn-info   -fms-compatibility-version=19.00.24215.1  -O3 -flto C:\b\slave\sanitizer-windows\llvm\projects\compiler-rt\test\asan\TestCases\lto-constmerge-odr.cc -o C:\b\slave\sanitizer-windows\build\projects\compiler-rt\test\asan\I386WindowsConfig\TestCases\Output\lto-constmerge-odr.cc.tmp
>> C:\b\slave\sanitizer-windows\build\projects\compiler-rt\test\asan\I386WindowsConfig\TestCases\Output\lto-constmerge-odr.cc.tmp 2>&1
>> --
>> Exit Code: 1107
>>
>> Command Output (stdout):
>> --
>> $ "C:/b/slave/sanitizer-windows/build/./bin/clang.exe" "-fsanitize=address" "-mno-omit-leaf-frame-pointer" "-fno-omit-frame-pointer" "-fno-optimize-sibling-calls" "-gline-tables-only" "-gcodeview" "-gcolumn-info" "-fms-compatibility-version=19.00.24215.1" "-O3" "-flto" "C:\b\slave\sanitizer-windows\llvm\projects\compiler-rt\test\asan\TestCases\lto-constmerge-odr.cc" "-o" "C:\b\slave\sanitizer-windows\build\projects\compiler-rt\test\asan\I386WindowsConfig\TestCases\Output\lto-constmerge-odr.cc.tmp"
>> # command output:
>> c:\users\buildbot\appdata\local\temp\lit_tmp_q0kr73\lto-constmerge-odr-c755bc.o : fatal error LNK1107: invalid or corrupt file: cannot read at 0x2F08
>>
>>
>> # command stderr:
>> clang.exe: error: linker command failed with exit code 1107 (use -v to see invocation)
>>
>>
>> error: command failed with exit status: 1107
>>
>>
>>
>> On Thu, Mar 8, 2018 at 1:02 PM, Kuba Mracek via llvm-commits <
>> llvm-commits at lists.llvm.org> wrote:
>>
>>> Author: kuba.brecka
>>> Date: Thu Mar  8 13:02:52 2018
>>> New Revision: 327062
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=327062&view=rev
>>> Log:
>>> [asan] Fix a false positive ODR violation due to LTO ConstantMerge pass
>>> [compiler-rt part, take 3]
>>>
>>> This fixes a false positive ODR violation that is reported by ASan when
>>> using LTO. In cases, where two constant globals have the same value, LTO
>>> will merge them, which breaks ASan's ODR detection. See the included
>>> testcase for an example.
>>>
>>> Differential Revision: https://reviews.llvm.org/D43959
>>>
>>>
>>> Added:
>>>     compiler-rt/trunk/test/asan/TestCases/lto-constmerge-odr.cc
>>> Modified:
>>>     compiler-rt/trunk/test/asan/TestCases/Darwin/odr-lto.cc
>>>
>>> Modified: compiler-rt/trunk/test/asan/TestCases/Darwin/odr-lto.cc
>>> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/a
>>> san/TestCases/Darwin/odr-lto.cc?rev=327062&r1=327061&r2=327062&view=diff
>>> ============================================================
>>> ==================
>>> --- compiler-rt/trunk/test/asan/TestCases/Darwin/odr-lto.cc (original)
>>> +++ compiler-rt/trunk/test/asan/TestCases/Darwin/odr-lto.cc Thu Mar  8
>>> 13:02:52 2018
>>> @@ -3,15 +3,10 @@
>>>
>>>  // REQUIRES: lto
>>>
>>> -// RUN: %clangxx_asan -DPART=0 -c %s -o %t-1.o -flto
>>> -// RUN: %clangxx_asan -DPART=1 -c %s -o %t-2.o -flto
>>> -// RUN: %clangxx_asan %t-1.o %t-2.o -o %t -flto
>>> -// RUN: not %run %t 2>&1 | FileCheck %s --check-prefix=CHECK-ODR
>>> -
>>>  // RUN: %clangxx_asan -DPART=0 -c %s -o %t-1.o -flto -mllvm
>>> -asan-use-private-alias
>>>  // RUN: %clangxx_asan -DPART=1 -c %s -o %t-2.o -flto -mllvm
>>> -asan-use-private-alias
>>>  // RUN: %clangxx_asan %t-1.o %t-2.o -o %t -flto
>>> -// RUN: %env_asan_opts=use_odr_indicator=1 %run %t 2>&1 | FileCheck %s
>>> --check-prefix=CHECK-NO-ODR
>>> +// RUN: %env_asan_opts=use_odr_indicator=1 %run %t 2>&1 | FileCheck %s
>>>
>>>  #include <stdio.h>
>>>  #include <stdlib.h>
>>> @@ -40,6 +35,5 @@ void putstest()
>>>
>>>  #endif // PART == 1
>>>
>>> -// CHECK-ODR: ERROR: AddressSanitizer: odr-violation
>>> -// CHECK-NO-ODR-NOT: ERROR: AddressSanitizer: odr-violation
>>> -// CHECK-NO-ODR: Done.
>>> +// CHECK-NOT: ERROR: AddressSanitizer: odr-violation
>>> +// CHECK: Done.
>>>
>>> Added: compiler-rt/trunk/test/asan/TestCases/lto-constmerge-odr.cc
>>> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/a
>>> san/TestCases/lto-constmerge-odr.cc?rev=327062&view=auto
>>> ============================================================
>>> ==================
>>> --- compiler-rt/trunk/test/asan/TestCases/lto-constmerge-odr.cc (added)
>>> +++ compiler-rt/trunk/test/asan/TestCases/lto-constmerge-odr.cc Thu
>>> Mar  8 13:02:52 2018
>>> @@ -0,0 +1,14 @@
>>> +// RUN: %clangxx_asan -O3 -flto %s -o %t
>>> +// RUN: %run %t 2>&1
>>> +
>>> +// REQUIRES: lto
>>> +
>>> +int main(int argc, const char * argv[]) {
>>> +  struct { long width, height; } a = {16, 16};
>>> +  struct { long width, height; } b = {16, 16};
>>> +
>>> +  // Just to make sure 'a' and 'b' don't get optimized out.
>>> +  asm volatile("" : : "r" (&a), "r" (&b));
>>> +
>>> +  return 0;
>>> +}
>>>
>>>
>>> _______________________________________________
>>> llvm-commits mailing list
>>> llvm-commits at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
>>
>> _______________________________________________
>> 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/20180308/6177519b/attachment.html>


More information about the llvm-commits mailing list