// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef ZIRCON_SYSTEM_ULIB_C_SANITIZERS_SANCOV_STUBS_H_
#define ZIRCON_SYSTEM_ULIB_C_SANITIZERS_SANCOV_STUBS_H_

// These macros call SANCOV_STUB(NAME) for each __sanitizer_cov_NAME symbol
// that represents a function called by instrumented code.
//
// SANCOV_STUBS covers all the entry points.
// SANCOV_NOOP_STUBS covers only the subset of SANCOV_STUBS where each
// entry point is ordinarily a no-op that might be called harmlessly
// by code during early startup before the proper runtime is in place.

#define SANCOV_STUBS               \
  SANCOV_STUB(trace_pc_guard)      \
  SANCOV_STUB(trace_pc_guard_init) \
  SANCOV_NOOP_STUBS

#define SANCOV_NOOP_STUBS         \
  SANCOV_STUB(trace_cmp)          \
  SANCOV_STUB(trace_cmp1)         \
  SANCOV_STUB(trace_cmp2)         \
  SANCOV_STUB(trace_cmp4)         \
  SANCOV_STUB(trace_cmp8)         \
  SANCOV_STUB(trace_const_cmp1)   \
  SANCOV_STUB(trace_const_cmp2)   \
  SANCOV_STUB(trace_const_cmp4)   \
  SANCOV_STUB(trace_const_cmp8)   \
  SANCOV_STUB(trace_switch)       \
  SANCOV_STUB(trace_div4)         \
  SANCOV_STUB(trace_div8)         \
  SANCOV_STUB(trace_gep)          \
  SANCOV_STUB(trace_pc)           \
  SANCOV_STUB(trace_pc_indir)     \
  SANCOV_STUB(8bit_counters_init) \
  SANCOV_STUB(pcs_init)

#endif  // ZIRCON_SYSTEM_ULIB_C_SANITIZERS_SANCOV_STUBS_H_
