From c4e4f79a2a2fd5530fa2677245f9361c7b04df70 Mon Sep 17 00:00:00 2001 From: Clifford Wolf Date: Fri, 25 Jul 2014 12:22:37 +0200 Subject: [PATCH] Disabled cover() for non-linux builds --- kernel/driver.cc | 2 +- kernel/log.h | 3 ++- passes/cmds/cover.cc | 7 +++++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/kernel/driver.cc b/kernel/driver.cc index a4556fb1b..3c185e44b 100644 --- a/kernel/driver.cc +++ b/kernel/driver.cc @@ -749,7 +749,7 @@ int main(int argc, char **argv) delete yosys_design; yosys_design = NULL; -#ifndef NDEBUG +#ifdef COVER_ACTIVE if (getenv("YOSYS_COVER_DIR") || getenv("YOSYS_COVER_FILE")) { char filename_buffer[4096]; diff --git a/kernel/log.h b/kernel/log.h index 18ea528a0..1658800dd 100644 --- a/kernel/log.h +++ b/kernel/log.h @@ -75,7 +75,8 @@ void log_cell(RTLIL::Cell *cell, std::string indent = ""); // This is the magic behind the code coverage counters // --------------------------------------------------- -#ifndef NDEBUG +#if defined(__linux__) && !defined(NDEBUG) +#define COVER_ACTIVE #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 0a96c0b23..ac72ba53a 100644 --- a/passes/cmds/cover.cc +++ b/passes/cmds/cover.cc @@ -71,6 +71,9 @@ struct CoverPass : public Pass { log(" gawk '{ p[$3] = $1; c[$3] += $2; } END { for (i in p)\n"); log(" printf \"%%-60s %%10d %%s\\n\", p[i], c[i], i; }' {files} | sort -k3\n"); log("\n"); + log("\n"); + log("Coverage counters are only available in debug builds of Yosys for Linux.\n"); + log("\n"); } virtual void execute(std::vector args, RTLIL::Design *design) { @@ -113,7 +116,7 @@ struct CoverPass : public Pass { log("\n"); } -#ifndef NDEBUG +#ifdef COVER_ACTIVE for (auto &it : get_coverage_data()) { if (!patterns.empty()) { for (auto &p : patterns) @@ -131,7 +134,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."); + log_cmd_error("Coverage counters are only available in debug builds of Yosys for Linux.\n"); #endif for (auto f : out_files) -- 2.30.2