aboutsummaryrefslogtreecommitdiff
path: root/c_emulator/riscv_sim.c
diff options
context:
space:
mode:
authorPeter Rugg <pdr32@cam.ac.uk>2021-03-17 13:36:34 +0000
committerRobert Norton <robert.m.norton@gmail.com>2021-06-29 13:12:03 +0100
commit83718b6984fc06b3a88df0b4106614091cc28e3b (patch)
tree7e8a6b0578cdd17f5b84797fef6065ff50e1b9fe /c_emulator/riscv_sim.c
parent545d1c9aecfc15c2dd4b0bb188c5c74eb9857506 (diff)
downloadsail-riscv-83718b6984fc06b3a88df0b4106614091cc28e3b.zip
sail-riscv-83718b6984fc06b3a88df0b4106614091cc28e3b.tar.gz
sail-riscv-83718b6984fc06b3a88df0b4106614091cc28e3b.tar.bz2
Add option to specify SAILCOV output file
Diffstat (limited to 'c_emulator/riscv_sim.c')
-rw-r--r--c_emulator/riscv_sim.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/c_emulator/riscv_sim.c b/c_emulator/riscv_sim.c
index 4fbeb07..1967c2f 100644
--- a/c_emulator/riscv_sim.c
+++ b/c_emulator/riscv_sim.c
@@ -101,6 +101,9 @@ void set_config_print(char *var, bool val) {
struct timeval init_start, init_end, run_end;
int total_insns = 0;
int insn_limit = 0;
+#ifdef SAILCOV
+char *sailcov_file = NULL;
+#endif
static struct option options[] = {
{"enable-dirty-update", no_argument, 0, 'd'},
@@ -124,6 +127,9 @@ static struct option options[] = {
{"trace", optional_argument, 0, 'v'},
{"no-trace", optional_argument, 0, 'V'},
{"inst-limit", required_argument, 0, 'l'},
+#ifdef SAILCOV
+ {"sailcov-file", required_argument, 0, 'c'},
+#endif
{0, 0, 0, 0}
};
@@ -228,6 +234,7 @@ char *process_args(int argc, char **argv)
"V::"
"v::"
"l:"
+ "c:"
, options, NULL);
if (c == -1) break;
switch (c) {
@@ -314,6 +321,11 @@ char *process_args(int argc, char **argv)
case 'l':
insn_limit = atoi(optarg);
break;
+#ifdef SAILCOV
+ case 'c':
+ sailcov_file = strdup(optarg);
+ break;
+#endif
case '?':
print_usage(argv[0], 1);
break;
@@ -935,6 +947,12 @@ void init_logs()
fprintf(stderr, "Cannot create terminal log '%s': %s\n", term_log, strerror(errno));
exit(1);
}
+
+#ifdef SAILCOV
+ if (sailcov_file != NULL) {
+ sail_set_coverage_file(sailcov_file);
+ }
+#endif
}
int main(int argc, char **argv)