LCOV - code coverage report
Current view: top level - gfx/skia/skia/src/core - SkMSAN.h (source / functions) Hit Total Coverage
Test: output.info Lines: 2 5 40.0 %
Date: 2017-07-14 16:53:18 Functions: 1 2 50.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*
       2             :  * Copyright 2016 Google Inc.
       3             :  *
       4             :  * Use of this source code is governed by a BSD-style license that can be
       5             :  * found in the LICENSE file.
       6             :  */
       7             : 
       8             : #ifndef SkMSAN_DEFINED
       9             : #define SkMSAN_DEFINED
      10             : 
      11             : #include "SkTypes.h"
      12             : 
      13             : // Typically declared in LLVM's msan_interface.h.  Easier for us to just re-declare.
      14             : extern "C" {
      15             :     void __msan_check_mem_is_initialized(const volatile void*, size_t);
      16             :     void __msan_unpoison                (const volatile void*, size_t);
      17             : }
      18             : 
      19             : // Code that requires initialized inputs can call this to make it clear that
      20             : // the blame for use of uninitialized data belongs further up the call stack.
      21       10357 : static inline void sk_msan_assert_initialized(const void* begin, const void* end) {
      22             : #if defined(__has_feature)
      23             :     #if __has_feature(memory_sanitizer)
      24             :         __msan_check_mem_is_initialized(begin, (const char*)end - (const char*)begin);
      25             :     #endif
      26             : #endif
      27       10357 : }
      28             : 
      29             : // Lie to MSAN that this range of memory is initialized.
      30             : // This can hide serious problems if overused.  Every use of this should refer to a bug.
      31           0 : static inline void sk_msan_mark_initialized(const void* begin, const void* end, const char* skbug) {
      32           0 :     SkASSERT(skbug && 0 != strcmp(skbug, ""));
      33             : #if defined(__has_feature)
      34             :     #if __has_feature(memory_sanitizer)
      35             :         __msan_unpoison(begin, (const char*)end - (const char*)begin);
      36             :     #endif
      37             : #endif
      38           0 : }
      39             : 
      40             : #endif//SkMSAN_DEFINED

Generated by: LCOV version 1.13