Coverage for /Syzygy/agent/asan/memory_interceptors.h

CoverageLines executed / instrumented / missingexe / inst / missLanguageGroup
0.0%0046.C++source

Line-by-line coverage:

   1    :  // Copyright 2014 Google Inc. All Rights Reserved.
   2    :  //
   3    :  // Licensed under the Apache License, Version 2.0 (the "License");
   4    :  // you may not use this file except in compliance with the License.
   5    :  // You may obtain a copy of the License at
   6    :  //
   7    :  //     http://www.apache.org/licenses/LICENSE-2.0
   8    :  //
   9    :  // Unless required by applicable law or agreed to in writing, software
  10    :  // distributed under the License is distributed on an "AS IS" BASIS,
  11    :  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12    :  // See the License for the specific language governing permissions and
  13    :  // limitations under the License.
  14    :  //
  15    :  // Declarations relating to memory intercept functions.
  16    :  #ifndef SYZYGY_AGENT_ASAN_MEMORY_INTERCEPTORS_H_
  17    :  #define SYZYGY_AGENT_ASAN_MEMORY_INTERCEPTORS_H_
  18    :  
  19  m :  namespace agent {
  20  m :  namespace asan {
  21    :  
  22    :  // List of the memory accessor function variants this file implements.
  23    :  #define ASAN_MEM_INTERCEPT_FUNCTIONS(F) \
  24  m :      F(1, read_access, AsanReadAccess) \
  25  m :      F(2, read_access, AsanReadAccess) \
  26  m :      F(4, read_access, AsanReadAccess) \
  27  m :      F(8, read_access, AsanReadAccess) \
  28  m :      F(10, read_access, AsanReadAccess) \
  29  m :      F(16, read_access, AsanReadAccess) \
  30  m :      F(32, read_access, AsanReadAccess) \
  31  m :      F(1, write_access, AsanWriteAccess) \
  32  m :      F(2, write_access, AsanWriteAccess) \
  33  m :      F(4, write_access, AsanWriteAccess) \
  34  m :      F(8, write_access, AsanWriteAccess) \
  35  m :      F(10, write_access, AsanWriteAccess) \
  36  m :      F(16, write_access, AsanWriteAccess) \
  37  m :      F(32, write_access, AsanWriteAccess)
  38    :  
  39    :  #define ASAN_STRING_INTERCEPT_FUNCTIONS(F) \
  40  m :      F(cmps, _repz_, ecx, AsanReadAccess, AsanReadAccess, 4, 1) \
  41  m :      F(cmps, _repz_, ecx, AsanReadAccess, AsanReadAccess, 2, 1) \
  42  m :      F(cmps, _repz_, ecx, AsanReadAccess, AsanReadAccess, 1, 1) \
  43  m :      F(cmps, _, 1, AsanReadAccess, AsanReadAccess, 4, 1) \
  44  m :      F(cmps, _, 1, AsanReadAccess, AsanReadAccess, 2, 1) \
  45  m :      F(cmps, _, 1, AsanReadAccess, AsanReadAccess, 1, 1) \
  46  m :      F(movs, _repz_, ecx, AsanWriteAccess, AsanReadAccess, 4, 0) \
  47  m :      F(movs, _repz_, ecx, AsanWriteAccess, AsanReadAccess, 2, 0) \
  48  m :      F(movs, _repz_, ecx, AsanWriteAccess, AsanReadAccess, 1, 0) \
  49  m :      F(movs, _, 1, AsanWriteAccess, AsanReadAccess, 4, 0) \
  50  m :      F(movs, _, 1, AsanWriteAccess, AsanReadAccess, 2, 0) \
  51  m :      F(movs, _, 1, AsanWriteAccess, AsanReadAccess, 1, 0) \
  52  m :      F(stos, _repz_, ecx, AsanWriteAccess, AsanUnknownAccess, 4, 0) \
  53  m :      F(stos, _repz_, ecx, AsanWriteAccess, AsanUnknownAccess, 2, 0) \
  54  m :      F(stos, _repz_, ecx, AsanWriteAccess, AsanUnknownAccess, 1, 0) \
  55  m :      F(stos, _, 1, AsanWriteAccess, AsanUnknownAccess, 4, 0) \
  56  m :      F(stos, _, 1, AsanWriteAccess, AsanUnknownAccess, 2, 0) \
  57  m :      F(stos, _, 1, AsanWriteAccess, AsanUnknownAccess, 1, 0)
  58    :  
  59  m :  }  // namespace asan
  60  m :  }  // namespace agent
  61    :  
  62  m :  extern "C" {
  63    :  
  64    :  #define DECLARE_MEM_INTERCEPT_FUNCTIONS(access_size, \
  65  m :                                          access_mode_str, \
  66  m :                                          access_mode_value) \
  67  m :      void asan_check_ ## access_size ## _byte_ ## access_mode_str(); \
  68  m :      void asan_check_ ## access_size ## _byte_ ## access_mode_str ## _no_flags();
  69    :  
  70    :  // Declare all the memory interceptor functions. Note that these functions have
  71    :  // a custom calling convention, and can't be invoked directly.
  72  m :  ASAN_MEM_INTERCEPT_FUNCTIONS(DECLARE_MEM_INTERCEPT_FUNCTIONS)
  73    :  
  74    :  #undef DECLARE_MEM_INTERCEPT_FUNCTIONS
  75    :  
  76    :  #define DECLARE_STRING_INTERCEPT_FUNCTIONS(func, prefix, counter, dst_mode, \
  77  m :                                             src_mode, access_size, compare) \
  78  m :    void asan_check ## prefix ## access_size ## _byte_ ## func ## _access();
  79    :  
  80    :  // Declare all the string instruction interceptor functions. Note that these
  81    :  // functions have a custom calling convention, and can't be invoked directly.
  82  m :  ASAN_STRING_INTERCEPT_FUNCTIONS(DECLARE_STRING_INTERCEPT_FUNCTIONS)
  83    :  
  84    :  #undef DECLARE_STRING_INTERCEPT_FUNCTIONS
  85    :  
  86  m :  }
  87    :  
  88    :  #endif  // SYZYGY_AGENT_ASAN_MEMORY_INTERCEPTORS_H_

Coverage information generated Thu Mar 26 16:15:41 2015.