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

Kuba Mracek via llvm-commits llvm-commits at lists.llvm.org
Thu Mar 8 16:44:03 PST 2018


Ah, thanks. r327091.

Kuba

> On Mar 8, 2018, at 4:30 PM, Matt Morehouse <mascasa at google.com> wrote:
> 
> 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 <mailto: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 <https://reviews.llvm.org/D43702>), but only this one (strcat-overlap.cc <http://strcat-overlap.cc/>) fails...
> 
> Kuba
> 
> 
>> On Mar 8, 2018, at 4:24 PM, Matt Morehouse <mascasa at google.com <mailto: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 <mailto:mracek at apple.com>> wrote:
>> The bot is back to green: <http://lab.llvm.org:8011/builders/sanitizer-windows/builds/25347 <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 <mailto: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 <mailto: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 <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 <http://lto-constmerge-odr.cc/> (488 of 602)
>>>> ******************** TEST 'AddressSanitizer-i386-windows :: TestCases/lto-constmerge-odr.cc <http://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 <http://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 <http://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 <mailto: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 <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 <https://reviews.llvm.org/D43959>
>>>> 
>>>> 
>>>> Added:
>>>>     compiler-rt/trunk/test/asan/TestCases/lto-constmerge-odr.cc <http://lto-constmerge-odr.cc/>
>>>> Modified:
>>>>     compiler-rt/trunk/test/asan/TestCases/Darwin/odr-lto.cc <http://odr-lto.cc/>
>>>> 
>>>> Modified: compiler-rt/trunk/test/asan/TestCases/Darwin/odr-lto.cc <http://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 <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 <http://odr-lto.cc/> (original)
>>>> +++ compiler-rt/trunk/test/asan/TestCases/Darwin/odr-lto.cc <http://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 <http://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 <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 <http://lto-constmerge-odr.cc/> (added)
>>>> +++ compiler-rt/trunk/test/asan/TestCases/lto-constmerge-odr.cc <http://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 <mailto:llvm-commits at lists.llvm.org>
>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits>
>>>> 
>>>> _______________________________________________
>>>> llvm-commits mailing list
>>>> llvm-commits at lists.llvm.org <mailto:llvm-commits at lists.llvm.org>
>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits>
>>> 
>>> _______________________________________________
>>> llvm-commits mailing list
>>> llvm-commits at lists.llvm.org <mailto:llvm-commits at lists.llvm.org>
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits <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/4f61b38d/attachment.html>


More information about the llvm-commits mailing list