From a346c0bf2b0ed5278e0f86d4ef23a6a9d03eef40 Mon Sep 17 00:00:00 2001 From: Clifford Wolf Date: Thu, 6 Nov 2014 09:39:55 +0100 Subject: [PATCH] Made "cover" a compile-time option (disabled by default) --- Makefile | 5 +++++ kernel/driver.cc | 2 +- kernel/log.cc | 2 +- kernel/log.h | 3 +-- passes/cmds/cover.cc | 4 ++-- 5 files changed, 10 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 7733dbcbe..c1944f2e3 100644 --- a/Makefile +++ b/Makefile @@ -11,6 +11,7 @@ ENABLE_ABC := 1 ENABLE_PLUGINS := 1 ENABLE_READLINE := 1 ENABLE_VERIFIC := 0 +ENABLE_COVER := 0 # other configuration flags ENABLE_GPROF := 0 @@ -138,6 +139,10 @@ CXXFLAGS += $(patsubst %,-I$(VERIFIC_DIR)/%,$(VERIFIC_COMPONENTS)) -DYOSYS_ENABL LDLIBS += $(patsubst %,$(VERIFIC_DIR)/%/*-linux.a,$(VERIFIC_COMPONENTS)) endif +ifeq ($(ENABLE_COVER),1) +CXXFLAGS += -DYOSYS_ENABLE_COVER +endif + ifeq ($(PRETTY), 1) P_STATUS = 0 P_OFFSET = 0 diff --git a/kernel/driver.cc b/kernel/driver.cc index 5e69cced3..8164fef28 100644 --- a/kernel/driver.cc +++ b/kernel/driver.cc @@ -335,7 +335,7 @@ int main(int argc, char **argv) log("%s\n", out_count ? "" : " no commands executed"); } -#ifdef COVER_ACTIVE +#ifdef YOSYS_ENABLE_COVER if (getenv("YOSYS_COVER_DIR") || getenv("YOSYS_COVER_FILE")) { char filename_buffer[4096]; diff --git a/kernel/log.cc b/kernel/log.cc index 807f58bf6..1a21e9fe6 100644 --- a/kernel/log.cc +++ b/kernel/log.cc @@ -274,7 +274,7 @@ void log_cell(RTLIL::Cell *cell, std::string indent) // --------------------------------------------------- // This is the magic behind the code coverage counters // --------------------------------------------------- -#ifdef COVER_ACTIVE +#ifdef YOSYS_ENABLE_COVER std::map> extra_coverage_data; diff --git a/kernel/log.h b/kernel/log.h index 81d01ace7..a6f808922 100644 --- a/kernel/log.h +++ b/kernel/log.h @@ -87,8 +87,7 @@ static inline void log_assert_worker(bool cond, const char *expr, const char *fi // This is the magic behind the code coverage counters // --------------------------------------------------- -#if defined(__linux__) && !defined(NDEBUG) -#define COVER_ACTIVE +#ifdef YOSYS_ENABLE_COVER #define cover(_id) do { \ static CoverData __d __attribute__((section("yosys_cover_list"), aligned(1))) = { __FILE__, __FUNCTION__, _id, __LINE__, 0 }; \ diff --git a/passes/cmds/cover.cc b/passes/cmds/cover.cc index b8baaf3d8..6a70d1de9 100644 --- a/passes/cmds/cover.cc +++ b/passes/cmds/cover.cc @@ -128,7 +128,7 @@ struct CoverPass : public Pass { log("\n"); } -#ifdef COVER_ACTIVE +#ifdef YOSYS_ENABLE_COVER for (auto &it : get_coverage_data()) { if (!patterns.empty()) { for (auto &p : patterns) @@ -146,7 +146,7 @@ struct CoverPass : public Pass { for (auto f : out_files) fclose(f); - log_cmd_error("Coverage counters are only available in debug builds of Yosys for Linux.\n"); + log_cmd_error("This version of Yosys was not built with support for code coverage counters.\n"); #endif for (auto f : out_files) -- 2.30.2