[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:24:12 PST 2018


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/
> builders/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/
>> asan/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/
>> asan/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/08fef160/attachment.html>


More information about the llvm-commits mailing list