<div dir="ltr">Thanks for fixing this! (and sorry for the failure)</div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Mar 18, 2015 at 2:36 PM, Justin Bogner <span dir="ltr"><<a href="mailto:mail@justinbogner.com" target="_blank">mail@justinbogner.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I copied the linux test changes to the darwin test in r232672, which<br>
seems to get the test passing again at least.<br>
<div class="HOEnZb"><div class="h5"><br>
Justin Bogner <<a href="mailto:mail@justinbogner.com">mail@justinbogner.com</a>> writes:<br>
> Ping. This has been broken for over a day on Darwin.<br>
><br>
> <a href="http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA_check/2299/" target="_blank">http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA_check/2299/</a><br>
><br>
> Filipe Cabecinhas <<a href="mailto:filcab@gmail.com">filcab@gmail.com</a>> writes:<br>
>> Hi Dmitry,<br>
>><br>
>> Please also include these symbols in compiler-rt/test/asan/TestCases/Darwin/<br>
>> interface_symbols_darwin.c, otherwise the asan tests break on Darwin.<br>
>><br>
>> Thanks<br>
>><br>
>>   F<br>
>><br>
>> On Tue, Mar 17, 2015 at 9:59 AM, Dmitry Vyukov <<a href="mailto:dvyukov@google.com">dvyukov@google.com</a>> wrote:<br>
>><br>
>>     Author: dvyukov<br>
>>     Date: Tue Mar 17 11:59:11 2015<br>
>>     New Revision: 232501<br>
>><br>
>>     URL: <a href="http://llvm.org/viewvc/llvm-project?rev=232501&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=232501&view=rev</a><br>
>>     Log:<br>
>>     asan: optimization experiments<br>
>><br>
>>     The experiments can be used to evaluate potential optimizations that<br>
>>     remove<br>
>>     instrumentation (assess false negatives). Instead of completely removing<br>
>>     some instrumentation, you set Exp to a non-zero value (mask of<br>
>>     optimization<br>
>>     experiments that want to remove instrumentation of this instruction).<br>
>>     If Exp is non-zero, this pass will emit special calls into runtime<br>
>>     (e.g. __asan_report_exp_load1 instead of __asan_report_load1). These calls<br>
>>     make runtime terminate the program in a special way (with a different<br>
>>     exit status). Then you run the new compiler on a buggy corpus, collect<br>
>>     the special terminations (ideally, you don't see them at all -- no false<br>
>>     negatives) and make the decision on the optimization.<br>
>><br>
>>     The exact reaction to experiments in runtime is not implemented in this<br>
>>     patch.<br>
>>     It will be defined and implemented in a subsequent patch.<br>
>><br>
>>     <a href="http://reviews.llvm.org/D8198" target="_blank">http://reviews.llvm.org/D8198</a><br>
>><br>
>>     Modified:<br>
>>         compiler-rt/trunk/lib/asan/asan_interceptors.cc<br>
>>         compiler-rt/trunk/lib/asan/asan_interface_internal.h<br>
>>         compiler-rt/trunk/lib/asan/asan_poisoning.cc<br>
>>         compiler-rt/trunk/lib/asan/asan_report.cc<br>
>>         compiler-rt/trunk/lib/asan/asan_rtl.cc<br>
>>         compiler-rt/trunk/lib/sanitizer_common/sanitizer_coverage_libcdep.cc<br>
>>         compiler-rt/trunk/test/asan/TestCases/Linux/interface_symbols_linux.c<br>
>><br>
>>     Modified: compiler-rt/trunk/lib/asan/asan_interceptors.cc<br>
>>     URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/</a><br>
>>     asan_interceptors.cc?rev=232501&r1=232500&r2=232501&view=diff<br>
>>     ==========================================================================<br>
>>     ====<br>
>>     --- compiler-rt/trunk/lib/asan/asan_interceptors.cc (original)<br>
>>     +++ compiler-rt/trunk/lib/asan/asan_interceptors.cc Tue Mar 17 11:59:11<br>
>>     2015<br>
>>     @@ -65,7 +65,7 @@ struct AsanInterceptorContext {<br>
>>            }                                                                 \<br>
>>            if (!suppressed) {                                                \<br>
>>              GET_CURRENT_PC_BP_SP;                                           \<br>
>>     -        __asan_report_error(pc, bp, sp, __bad, isWrite, __size);        \<br>
>>     +        __asan_report_error(pc, bp, sp, __bad, isWrite, __size, 0);     \<br>
>>            }                                                                 \<br>
>>          }                                                                   \<br>
>>        } while (0)<br>
>><br>
>>     Modified: compiler-rt/trunk/lib/asan/asan_interface_internal.h<br>
>>     URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/</a><br>
>>     asan_interface_internal.h?rev=232501&r1=232500&r2=232501&view=diff<br>
>>     ==========================================================================<br>
>>     ====<br>
>>     --- compiler-rt/trunk/lib/asan/asan_interface_internal.h (original)<br>
>>     +++ compiler-rt/trunk/lib/asan/asan_interface_internal.h Tue Mar 17<br>
>>     11:59:11 2015<br>
>>     @@ -128,7 +128,7 @@ extern "C" {<br>
>><br>
>>        SANITIZER_INTERFACE_ATTRIBUTE<br>
>>        void __asan_report_error(uptr pc, uptr bp, uptr sp,<br>
>>     -                           uptr addr, int is_write, uptr access_size);<br>
>>     +                           uptr addr, int is_write, uptr access_size, u32<br>
>>     exp);<br>
>><br>
>>        SANITIZER_INTERFACE_ATTRIBUTE<br>
>>        int __asan_set_error_exit_code(int exit_code);<br>
>>     @@ -165,6 +165,21 @@ extern "C" {<br>
>>        SANITIZER_INTERFACE_ATTRIBUTE void __asan_loadN(uptr p, uptr size);<br>
>>        SANITIZER_INTERFACE_ATTRIBUTE void __asan_storeN(uptr p, uptr size);<br>
>><br>
>>     +  SANITIZER_INTERFACE_ATTRIBUTE void __asan_exp_load1(uptr p, u32 exp);<br>
>>     +  SANITIZER_INTERFACE_ATTRIBUTE void __asan_exp_load2(uptr p, u32 exp);<br>
>>     +  SANITIZER_INTERFACE_ATTRIBUTE void __asan_exp_load4(uptr p, u32 exp);<br>
>>     +  SANITIZER_INTERFACE_ATTRIBUTE void __asan_exp_load8(uptr p, u32 exp);<br>
>>     +  SANITIZER_INTERFACE_ATTRIBUTE void __asan_exp_load16(uptr p, u32 exp);<br>
>>     +  SANITIZER_INTERFACE_ATTRIBUTE void __asan_exp_store1(uptr p, u32 exp);<br>
>>     +  SANITIZER_INTERFACE_ATTRIBUTE void __asan_exp_store2(uptr p, u32 exp);<br>
>>     +  SANITIZER_INTERFACE_ATTRIBUTE void __asan_exp_store4(uptr p, u32 exp);<br>
>>     +  SANITIZER_INTERFACE_ATTRIBUTE void __asan_exp_store8(uptr p, u32 exp);<br>
>>     +  SANITIZER_INTERFACE_ATTRIBUTE void __asan_exp_store16(uptr p, u32 exp);<br>
>>     +  SANITIZER_INTERFACE_ATTRIBUTE void __asan_exp_loadN(uptr p, uptr size,<br>
>>     +                                                      u32 exp);<br>
>>     +  SANITIZER_INTERFACE_ATTRIBUTE void __asan_exp_storeN(uptr p, uptr size,<br>
>>     +                                                       u32 exp);<br>
>>     +<br>
>>        SANITIZER_INTERFACE_ATTRIBUTE<br>
>>            void* __asan_memcpy(void *dst, const void *src, uptr size);<br>
>>        SANITIZER_INTERFACE_ATTRIBUTE<br>
>><br>
>>     Modified: compiler-rt/trunk/lib/asan/asan_poisoning.cc<br>
>>     URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/</a><br>
>>     asan_poisoning.cc?rev=232501&r1=232500&r2=232501&view=diff<br>
>>     ==========================================================================<br>
>>     ====<br>
>>     --- compiler-rt/trunk/lib/asan/asan_poisoning.cc (original)<br>
>>     +++ compiler-rt/trunk/lib/asan/asan_poisoning.cc Tue Mar 17 11:59:11 2015<br>
>>     @@ -218,7 +218,7 @@ uptr __asan_region_is_poisoned(uptr beg,<br>
>>              __asan::AddressIsPoisoned(__p + __size - 1))) {       \<br>
>>            GET_CURRENT_PC_BP_SP;                                   \<br>
>>            uptr __bad = __asan_region_is_poisoned(__p, __size);    \<br>
>>     -      __asan_report_error(pc, bp, sp, __bad, isWrite, __size);\<br>
>>     +      __asan_report_error(pc, bp, sp, __bad, isWrite, __size, 0);\<br>
>>          }                                                         \<br>
>>        } while (false);                                            \<br>
>><br>
>>     Modified: compiler-rt/trunk/lib/asan/asan_report.cc<br>
>>     URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/</a><br>
>>     asan_report.cc?rev=232501&r1=232500&r2=232501&view=diff<br>
>>     ==========================================================================<br>
>>     ====<br>
>>     --- compiler-rt/trunk/lib/asan/asan_report.cc (original)<br>
>>     +++ compiler-rt/trunk/lib/asan/asan_report.cc Tue Mar 17 11:59:11 2015<br>
>>     @@ -939,9 +939,18 @@ void ReportMacCfReallocUnknown(uptr addr<br>
>>      using namespace __asan;  // NOLINT<br>
>><br>
>>      void __asan_report_error(uptr pc, uptr bp, uptr sp, uptr addr, int<br>
>>     is_write,<br>
>>     -                         uptr access_size) {<br>
>>     +                         uptr access_size, u32 exp) {<br>
>>        ENABLE_FRAME_POINTER;<br>
>><br>
>>     +  // Optimization experiments.<br>
>>     +  // The experiments can be used to evaluate potential optimizations that<br>
>>     remove<br>
>>     +  // instrumentation (assess false negatives). Instead of completely<br>
>>     removing<br>
>>     +  // some instrumentation, compiler can emit special calls into runtime<br>
>>     +  // (e.g. __asan_report_exp_load1 instead of __asan_report_load1) and<br>
>>     pass<br>
>>     +  // mask of experiments (exp).<br>
>>     +  // The reaction to a non-zero value of exp is to be defined.<br>
>>     +  (void)exp;<br>
>>     +<br>
>>        // Determine the error type.<br>
>>        const char *bug_descr = "unknown-crash";<br>
>>        if (AddrIsInMem(addr)) {<br>
>><br>
>>     Modified: compiler-rt/trunk/lib/asan/asan_rtl.cc<br>
>>     URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/</a><br>
>>     asan_rtl.cc?rev=232501&r1=232500&r2=232501&view=diff<br>
>>     ==========================================================================<br>
>>     ====<br>
>>     --- compiler-rt/trunk/lib/asan/asan_rtl.cc (original)<br>
>>     +++ compiler-rt/trunk/lib/asan/asan_rtl.cc Tue Mar 17 11:59:11 2015<br>
>>     @@ -112,11 +112,15 @@ static void OnLowLevelAllocate(uptr ptr,<br>
>>      // -------------------------- Run-time entry ------------------- {{{1<br>
>>      // exported functions<br>
>>      #define ASAN_REPORT_ERROR(type, is_write, size)                     \<br>
>>     -extern "C" NOINLINE INTERFACE_ATTRIBUTE                        \<br>
>>     -void __asan_report_ ## type ## size(uptr addr);                \<br>
>>     -void __asan_report_ ## type ## size(uptr addr) {               \<br>
>>     +extern "C" NOINLINE INTERFACE_ATTRIBUTE                             \<br>
>>     +void __asan_report_ ## type ## size(uptr addr) {                    \<br>
>>     +  GET_CALLER_PC_BP_SP;                                              \<br>
>>     +  __asan_report_error(pc, bp, sp, addr, is_write, size, 0);         \<br>
>>     +}                                                                   \<br>
>>     +extern "C" NOINLINE INTERFACE_ATTRIBUTE                             \<br>
>>     +void __asan_report_exp_ ## type ## size(uptr addr, u32 exp) {       \<br>
>>        GET_CALLER_PC_BP_SP;                                              \<br>
>>     -  __asan_report_error(pc, bp, sp, addr, is_write, size);            \<br>
>>     +  __asan_report_error(pc, bp, sp, addr, is_write, size, exp);       \<br>
>>      }<br>
>><br>
>>      ASAN_REPORT_ERROR(load, false, 1)<br>
>>     @@ -132,18 +136,20 @@ ASAN_REPORT_ERROR(store, true, 16)<br>
>><br>
>>      #define ASAN_REPORT_ERROR_N(type, is_write)                    \<br>
>>      extern "C" NOINLINE INTERFACE_ATTRIBUTE                        \<br>
>>     -void __asan_report_ ## type ## _n(uptr addr, uptr size);       \<br>
>>      void __asan_report_ ## type ## _n(uptr addr, uptr size) {      \<br>
>>        GET_CALLER_PC_BP_SP;                                         \<br>
>>     -  __asan_report_error(pc, bp, sp, addr, is_write, size);       \<br>
>>     +  __asan_report_error(pc, bp, sp, addr, is_write, size, 0);    \<br>
>>     +}                                                              \<br>
>>     +extern "C" NOINLINE INTERFACE_ATTRIBUTE                        \<br>
>>     +void __asan_report_exp_ ## type ## _n(uptr addr, uptr size, u32 exp) {   <br>
>>       \<br>
>>     +  GET_CALLER_PC_BP_SP;                                                   <br>
>>       \<br>
>>     +  __asan_report_error(pc, bp, sp, addr, is_write, size, exp);           <br>
>>        \<br>
>>      }<br>
>><br>
>>      ASAN_REPORT_ERROR_N(load, false)<br>
>>      ASAN_REPORT_ERROR_N(store, true)<br>
>><br>
>>     -#define ASAN_MEMORY_ACCESS_CALLBACK(type, is_write, size)               <br>
>>           \<br>
>>     -  extern "C" NOINLINE INTERFACE_ATTRIBUTE void __asan_##type##size(uptr<br>
>>     addr); \<br>
>>     -  void __asan_##type##size(uptr addr) {                                 <br>
>>           \<br>
>>     +#define ASAN_MEMORY_ACCESS_CALLBACK_BODY(type, is_write, size, exp_arg) <br>
>>           \<br>
>>          uptr sp = MEM_TO_SHADOW(addr);                                       <br>
>>          \<br>
>>          uptr s = size <= SHADOW_GRANULARITY ? *reinterpret_cast<u8 *>(sp)   <br>
>>           \<br>
>>                                              : *reinterpret_cast<u16 *>(sp); <br>
>>           \<br>
>>     @@ -155,10 +161,19 @@ ASAN_REPORT_ERROR_N(store, true)<br>
>>                *__asan_test_only_reported_buggy_pointer = addr;               <br>
>>          \<br>
>>              } else {                                                         <br>
>>          \<br>
>>                GET_CALLER_PC_BP_SP;                                           <br>
>>          \<br>
>>     -          __asan_report_error(pc, bp, sp, addr, is_write, size);         <br>
>>          \<br>
>>     +          __asan_report_error(pc, bp, sp, addr, is_write, size, exp_arg);<br>
>>           \<br>
>>              }                                                               <br>
>>           \<br>
>>            }                                                                 <br>
>>           \<br>
>>     -    }                                                                   <br>
>>           \<br>
>>     +    }<br>
>>     +<br>
>>     +#define ASAN_MEMORY_ACCESS_CALLBACK(type, is_write, size)               <br>
>>           \<br>
>>     +  extern "C" NOINLINE INTERFACE_ATTRIBUTE                               <br>
>>           \<br>
>>     +  void __asan_##type##size(uptr addr) {                                 <br>
>>           \<br>
>>     +    ASAN_MEMORY_ACCESS_CALLBACK_BODY(type, is_write, size, 0)           <br>
>>           \<br>
>>     +  }                                                                     <br>
>>           \<br>
>>     +  extern "C" NOINLINE INTERFACE_ATTRIBUTE                               <br>
>>           \<br>
>>     +  void __asan_exp_##type##size(uptr addr, u32 exp) {                     <br>
>>          \<br>
>>     +    ASAN_MEMORY_ACCESS_CALLBACK_BODY(type, is_write, size, exp)         <br>
>>           \<br>
>>        }<br>
>><br>
>>      ASAN_MEMORY_ACCESS_CALLBACK(load, false, 1)<br>
>>     @@ -173,18 +188,38 @@ ASAN_MEMORY_ACCESS_CALLBACK(store, true,<br>
>>      ASAN_MEMORY_ACCESS_CALLBACK(store, true, 16)<br>
>><br>
>>      extern "C"<br>
>>     -NOINLINE INTERFACE_ATTRIBUTE void __asan_loadN(uptr addr, uptr size) {<br>
>>     +NOINLINE INTERFACE_ATTRIBUTE<br>
>>     +void __asan_loadN(uptr addr, uptr size) {<br>
>>     +  if (__asan_region_is_poisoned(addr, size)) {<br>
>>     +    GET_CALLER_PC_BP_SP;<br>
>>     +    __asan_report_error(pc, bp, sp, addr, false, size, 0);<br>
>>     +  }<br>
>>     +}<br>
>>     +<br>
>>     +extern "C"<br>
>>     +NOINLINE INTERFACE_ATTRIBUTE<br>
>>     +void __asan_exp_loadN(uptr addr, uptr size, u32 exp) {<br>
>>     +  if (__asan_region_is_poisoned(addr, size)) {<br>
>>     +    GET_CALLER_PC_BP_SP;<br>
>>     +    __asan_report_error(pc, bp, sp, addr, false, size, exp);<br>
>>     +  }<br>
>>     +}<br>
>>     +<br>
>>     +extern "C"<br>
>>     +NOINLINE INTERFACE_ATTRIBUTE<br>
>>     +void __asan_storeN(uptr addr, uptr size) {<br>
>>        if (__asan_region_is_poisoned(addr, size)) {<br>
>>          GET_CALLER_PC_BP_SP;<br>
>>     -    __asan_report_error(pc, bp, sp, addr, false, size);<br>
>>     +    __asan_report_error(pc, bp, sp, addr, true, size, 0);<br>
>>        }<br>
>>      }<br>
>><br>
>>      extern "C"<br>
>>     -NOINLINE INTERFACE_ATTRIBUTE void __asan_storeN(uptr addr, uptr size) {<br>
>>     +NOINLINE INTERFACE_ATTRIBUTE<br>
>>     +void __asan_exp_storeN(uptr addr, uptr size, u32 exp) {<br>
>>        if (__asan_region_is_poisoned(addr, size)) {<br>
>>          GET_CALLER_PC_BP_SP;<br>
>>     -    __asan_report_error(pc, bp, sp, addr, true, size);<br>
>>     +    __asan_report_error(pc, bp, sp, addr, true, size, exp);<br>
>>        }<br>
>>      }<br>
>><br>
>>     @@ -203,26 +238,40 @@ static NOINLINE void force_interface_sym<br>
>>          case 3: __asan_report_load4(0); break;<br>
>>          case 4: __asan_report_load8(0); break;<br>
>>          case 5: __asan_report_load16(0); break;<br>
>>     -    case 6: __asan_report_store1(0); break;<br>
>>     -    case 7: __asan_report_store2(0); break;<br>
>>     -    case 8: __asan_report_store4(0); break;<br>
>>     -    case 9: __asan_report_store8(0); break;<br>
>>     -    case 10: __asan_report_store16(0); break;<br>
>>     -    case 12: __asan_register_globals(0, 0); break;<br>
>>     -    case 13: __asan_unregister_globals(0, 0); break;<br>
>>     -    case 14: __asan_set_death_callback(0); break;<br>
>>     -    case 15: __asan_set_error_report_callback(0); break;<br>
>>     -    case 16: __asan_handle_no_return(); break;<br>
>>     -    case 17: __asan_address_is_poisoned(0); break;<br>
>>     -    case 25: __asan_poison_memory_region(0, 0); break;<br>
>>     -    case 26: __asan_unpoison_memory_region(0, 0); break;<br>
>>     -    case 27: __asan_set_error_exit_code(0); break;<br>
>>     -    case 30: __asan_before_dynamic_init(0); break;<br>
>>     -    case 31: __asan_after_dynamic_init(); break;<br>
>>     -    case 32: __asan_poison_stack_memory(0, 0); break;<br>
>>     -    case 33: __asan_unpoison_stack_memory(0, 0); break;<br>
>>     -    case 34: __asan_region_is_poisoned(0, 0); break;<br>
>>     -    case 35: __asan_describe_address(0); break;<br>
>>     +    case 6: __asan_report_load_n(0, 0); break;<br>
>>     +    case 7: __asan_report_store1(0); break;<br>
>>     +    case 8: __asan_report_store2(0); break;<br>
>>     +    case 9: __asan_report_store4(0); break;<br>
>>     +    case 10: __asan_report_store8(0); break;<br>
>>     +    case 11: __asan_report_store16(0); break;<br>
>>     +    case 12: __asan_report_store_n(0, 0); break;<br>
>>     +    case 13: __asan_report_exp_load1(0, 0); break;<br>
>>     +    case 14: __asan_report_exp_load2(0, 0); break;<br>
>>     +    case 15: __asan_report_exp_load4(0, 0); break;<br>
>>     +    case 16: __asan_report_exp_load8(0, 0); break;<br>
>>     +    case 17: __asan_report_exp_load16(0, 0); break;<br>
>>     +    case 18: __asan_report_exp_load_n(0, 0, 0); break;<br>
>>     +    case 19: __asan_report_exp_store1(0, 0); break;<br>
>>     +    case 20: __asan_report_exp_store2(0, 0); break;<br>
>>     +    case 21: __asan_report_exp_store4(0, 0); break;<br>
>>     +    case 22: __asan_report_exp_store8(0, 0); break;<br>
>>     +    case 23: __asan_report_exp_store16(0, 0); break;<br>
>>     +    case 24: __asan_report_exp_store_n(0, 0, 0); break;<br>
>>     +    case 25: __asan_register_globals(0, 0); break;<br>
>>     +    case 26: __asan_unregister_globals(0, 0); break;<br>
>>     +    case 27: __asan_set_death_callback(0); break;<br>
>>     +    case 28: __asan_set_error_report_callback(0); break;<br>
>>     +    case 29: __asan_handle_no_return(); break;<br>
>>     +    case 30: __asan_address_is_poisoned(0); break;<br>
>>     +    case 31: __asan_poison_memory_region(0, 0); break;<br>
>>     +    case 32: __asan_unpoison_memory_region(0, 0); break;<br>
>>     +    case 33: __asan_set_error_exit_code(0); break;<br>
>>     +    case 34: __asan_before_dynamic_init(0); break;<br>
>>     +    case 35: __asan_after_dynamic_init(); break;<br>
>>     +    case 36: __asan_poison_stack_memory(0, 0); break;<br>
>>     +    case 37: __asan_unpoison_stack_memory(0, 0); break;<br>
>>     +    case 38: __asan_region_is_poisoned(0, 0); break;<br>
>>     +    case 39: __asan_describe_address(0); break;<br>
>>        }<br>
>>      }<br>
>><br>
>>     Modified: compiler-rt/trunk/lib/sanitizer_common/<br>
>>     sanitizer_coverage_libcdep.cc<br>
>>     URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/</a><br>
>>     sanitizer_common/sanitizer_coverage_libcdep.cc?rev=232501&r1=232500&r2=<br>
>>     232501&view=diff<br>
>>     ==========================================================================<br>
>>     ====<br>
>>     --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_coverage_libcdep.cc<br>
>>     (original)<br>
>>     +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_coverage_libcdep.cc<br>
>>     Tue Mar 17 11:59:11 2015<br>
>>     @@ -806,6 +806,13 @@ void CoverageUpdateMapping() {<br>
>>      }  // namespace __sanitizer<br>
>><br>
>>      extern "C" {<br>
>>     +SANITIZER_INTERFACE_ATTRIBUTE WEAK<br>
>>     +void __sanitizer_cov_hint(uptr g, u64 c, u64 v) {<br>
>>     +  (void)g;<br>
>>     +  (void)c;<br>
>>     +  (void)v;<br>
>>     +}<br>
>>     +<br>
>>      SANITIZER_INTERFACE_ATTRIBUTE void __sanitizer_cov(u32 *guard) {<br>
>>        coverage_data.Add(StackTrace::GetPreviousInstructionPc(GET_CALLER_PC<br>
>>     ()),<br>
>>                          guard);<br>
>><br>
>>     Modified: compiler-rt/trunk/test/asan/TestCases/Linux/<br>
>>     interface_symbols_linux.c<br>
>>     URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/</a><br>
>>     TestCases/Linux/interface_symbols_linux.c?rev=232501&r1=232500&r2=232501&<br>
>>     view=diff<br>
>>     ==========================================================================<br>
>>     ====<br>
>>     --- compiler-rt/trunk/test/asan/TestCases/Linux/interface_symbols_linux.c<br>
>>     (original)<br>
>>     +++ compiler-rt/trunk/test/asan/TestCases/Linux/interface_symbols_linux.c<br>
>>     Tue Mar 17 11:59:11 2015<br>
>>     @@ -24,6 +24,18 @@<br>
>>      // RUN: echo __asan_report_store16 >> %t.interface<br>
>>      // RUN: echo __asan_report_load_n >> %t.interface<br>
>>      // RUN: echo __asan_report_store_n >> %t.interface<br>
>>     +// RUN: echo __asan_report_exp_load1 >> %t.interface<br>
>>     +// RUN: echo __asan_report_exp_load2 >> %t.interface<br>
>>     +// RUN: echo __asan_report_exp_load4 >> %t.interface<br>
>>     +// RUN: echo __asan_report_exp_load8 >> %t.interface<br>
>>     +// RUN: echo __asan_report_exp_load16 >> %t.interface<br>
>>     +// RUN: echo __asan_report_exp_store1 >> %t.interface<br>
>>     +// RUN: echo __asan_report_exp_store2 >> %t.interface<br>
>>     +// RUN: echo __asan_report_exp_store4 >> %t.interface<br>
>>     +// RUN: echo __asan_report_exp_store8 >> %t.interface<br>
>>     +// RUN: echo __asan_report_exp_store16 >> %t.interface<br>
>>     +// RUN: echo __asan_report_exp_load_n >> %t.interface<br>
>>     +// RUN: echo __asan_report_exp_store_n >> %t.interface<br>
>>      // RUN: echo __asan_get_current_fake_stack >> %t.interface<br>
>>      // RUN: echo __asan_addr_is_in_fake_stack >> %t.interface<br>
>>      // RUN: cat %t.interface | sort -u | diff %t.symbols -<br>
>><br>
>>     _______________________________________________<br>
>>     llvm-commits mailing list<br>
>>     <a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
>>     <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
>><br>
>> _______________________________________________<br>
>> llvm-commits mailing list<br>
>> <a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
>> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr">Alexey Samsonov<br><a href="mailto:vonosmas@gmail.com" target="_blank">vonosmas@gmail.com</a></div></div>
</div>