[llvm] r310240 - Add -asan-force-dynamic-shadow test

Kuba Mracek via llvm-commits llvm-commits at lists.llvm.org
Mon Aug 7 14:08:18 PDT 2017


<http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20170731/476672.html <http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20170731/476672.html>>.

The fix was to disable the "copy byvals via memcpy" feature when using the dynamic shadow, which is more of a temporary fix, done in r310241.  And r310242 should be included as well to make sure we don't try to re-enable this feature without making it work first.

Kuba

> On 7 Aug 2017, at 14:02, Hans Wennborg <hans at chromium.org> wrote:
> 
> Was there a bug or any written communication about the miscompile?
> Which commit fixed it, and which added the regression test?
> 
> Sorry if I seem confused, but some more context would help.
> 
> On Mon, Aug 7, 2017 at 2:00 PM, Vitaly Buka <vitalybuka at google.com> wrote:
>> Particularity this one is not regression test, I just noticed that this flag
>> is untested.
>> 
>> On Mon, Aug 7, 2017 at 1:58 PM, Kuba Mracek <mracek at apple.com> wrote:
>>> 
>>> It's a miscompile when using ASan with a dynamic shadow memory.
>>> 
>>> CC'ing Vitaly and Kostya.
>>> 
>>> Kuba
>>> 
>>>> On 7 Aug 2017, at 13:40, Hans Wennborg <hans at chromium.org> wrote:
>>>> 
>>>> Which bug? There's zero context here.
>>>> 
>>>> On Mon, Aug 7, 2017 at 1:39 PM, Kuba Mracek <mracek at apple.com> wrote:
>>>>> It's a regression test for a recent bug.  The bug was not covered by an
>>>>> existing test.  I want to make sure the bug doesn't reappear.
>>>>> 
>>>>> Kuba
>>>>> 
>>>>>> On 7 Aug 2017, at 13:38, Hans Wennborg <hans at chromium.org> wrote:
>>>>>> 
>>>>>> What's the motivation? It seems this just adds a test for
>>>>>> functionality that landed sime time back?
>>>>>> 
>>>>>> On Mon, Aug 7, 2017 at 8:18 AM, Kuba Mracek <mracek at apple.com> wrote:
>>>>>>> Please merge into release_50.
>>>>>>> 
>>>>>>> Thanks,
>>>>>>> Kuba
>>>>>>> 
>>>>>>>> On 7 Aug 2017, at 00:12, Vitaly Buka via llvm-commits
>>>>>>>> <llvm-commits at lists.llvm.org> wrote:
>>>>>>>> 
>>>>>>>> Author: vitalybuka
>>>>>>>> Date: Mon Aug  7 00:12:33 2017
>>>>>>>> New Revision: 310240
>>>>>>>> 
>>>>>>>> URL: http://llvm.org/viewvc/llvm-project?rev=310240&view=rev
>>>>>>>> Log:
>>>>>>>> Add -asan-force-dynamic-shadow test
>>>>>>>> 
>>>>>>>> Added:
>>>>>>>> 
>>>>>>>> llvm/trunk/test/Instrumentation/AddressSanitizer/force-dynamic-shadow.ll
>>>>>>>> 
>>>>>>>> Added:
>>>>>>>> llvm/trunk/test/Instrumentation/AddressSanitizer/force-dynamic-shadow.ll
>>>>>>>> URL:
>>>>>>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Instrumentation/AddressSanitizer/force-dynamic-shadow.ll?rev=310240&view=auto
>>>>>>>> 
>>>>>>>> ==============================================================================
>>>>>>>> ---
>>>>>>>> llvm/trunk/test/Instrumentation/AddressSanitizer/force-dynamic-shadow.ll
>>>>>>>> (added)
>>>>>>>> +++
>>>>>>>> llvm/trunk/test/Instrumentation/AddressSanitizer/force-dynamic-shadow.ll Mon
>>>>>>>> Aug  7 00:12:33 2017
>>>>>>>> @@ -0,0 +1,22 @@
>>>>>>>> +; Test -asan-force-dynamic-shadow flag.
>>>>>>>> +;
>>>>>>>> +; RUN: opt -asan -asan-module -S -asan-force-dynamic-shadow=1 < %s
>>>>>>>> | FileCheck %s --check-prefixes=CHECK,CHECK-FDS
>>>>>>>> +; RUN: opt -asan -asan-module -S -asan-force-dynamic-shadow=0 < %s
>>>>>>>> | FileCheck %s --check-prefixes=CHECK,CHECK-NDS
>>>>>>>> +
>>>>>>>> +target triple = "x86_64-unknown-linux-gnu"
>>>>>>>> +
>>>>>>>> +define i32 @test_load(i32* %a) sanitize_address {
>>>>>>>> +; First instrumentation in the function must be to load the dynamic
>>>>>>>> shadow
>>>>>>>> +; address into a local variable.
>>>>>>>> +; CHECK-LABEL: @test_load
>>>>>>>> +; CHECK: entry:
>>>>>>>> +; CHECK-FDS-NEXT: %[[SHADOW:[^ ]*]] = load i64, i64*
>>>>>>>> @__asan_shadow_memory_dynamic_address
>>>>>>>> +; CHECK-NDS-NOT: __asan_shadow_memory_dynamic_address
>>>>>>>> +
>>>>>>>> +; Shadow address is loaded and added into the whole offset
>>>>>>>> computation.
>>>>>>>> +; CHECK-FDS add i64 %{{.*}}, %[[SHADOW] ]
>>>>>>>> +
>>>>>>>> +entry:
>>>>>>>> +  %tmp1 = load i32, i32* %a, align 4
>>>>>>>> +  ret i32 %tmp1
>>>>>>>> +}
>>>>>>>> 
>>>>>>>> 
>>>>>>>> _______________________________________________
>>>>>>>> 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/20170807/30936162/attachment.html>


More information about the llvm-commits mailing list