aboutsummaryrefslogtreecommitdiff
path: root/sim/common/sim-trace.c
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2011-05-26 00:09:59 +0000
committerMike Frysinger <vapier@gentoo.org>2011-05-26 00:09:59 +0000
commit3a49ea9faceb2a5c0d8d3afdee0a057c8ebe9501 (patch)
tree2bb4cee29cc74384e4ec52406a5a892c4252f46a /sim/common/sim-trace.c
parent39f8b7c1fa376ee6d1ecb6ebee6b5fe506d269f4 (diff)
downloadgdb-3a49ea9faceb2a5c0d8d3afdee0a057c8ebe9501.zip
gdb-3a49ea9faceb2a5c0d8d3afdee0a057c8ebe9501.tar.gz
gdb-3a49ea9faceb2a5c0d8d3afdee0a057c8ebe9501.tar.bz2
sim: add syscall tracing level
It's useful to be able to trace just the system calls the simulated program is calling, so add a new --trace-syscall option for ports to leverage if they choose. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'sim/common/sim-trace.c')
-rw-r--r--sim/common/sim-trace.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/sim/common/sim-trace.c b/sim/common/sim-trace.c
index 0373532..da3e290 100644
--- a/sim/common/sim-trace.c
+++ b/sim/common/sim-trace.c
@@ -77,7 +77,8 @@ enum {
OPTION_TRACE_FUNCTION,
OPTION_TRACE_DEBUG,
OPTION_TRACE_FILE,
- OPTION_TRACE_VPU
+ OPTION_TRACE_VPU,
+ OPTION_TRACE_SYSCALL
};
static const OPTION trace_options[] =
@@ -125,6 +126,9 @@ static const OPTION trace_options[] =
{ {"trace-events", optional_argument, NULL, OPTION_TRACE_EVENTS},
'\0', "on|off", "Trace events",
trace_option_handler, NULL },
+ { {"trace-syscall", optional_argument, NULL, OPTION_TRACE_SYSCALL},
+ '\0', "on|off", "Trace system calls",
+ trace_option_handler, NULL },
#ifdef SIM_HAVE_ADDR_RANGE
{ {"trace-range", required_argument, NULL, OPTION_TRACE_RANGE},
'\0', "START,END", "Specify range of addresses for instruction tracing",
@@ -331,6 +335,13 @@ trace_option_handler (SIM_DESC sd, sim_cpu *cpu, int opt,
sim_io_eprintf (sd, "Branch tracing not compiled in, `--trace-branch' ignored\n");
break;
+ case OPTION_TRACE_SYSCALL :
+ if (WITH_TRACE_SYSCALL_P)
+ return set_trace_option (sd, "-syscall", TRACE_SYSCALL_IDX, arg);
+ else
+ sim_io_eprintf (sd, "System call tracing not compiled in, `--trace-syscall' ignored\n");
+ break;
+
case OPTION_TRACE_SEMANTICS :
if (WITH_TRACE_ALU_P
&& WITH_TRACE_FPU_P
@@ -621,6 +632,7 @@ trace_idx_to_str (int trace_idx)
case TRACE_EVENTS_IDX: return "events: ";
case TRACE_FPU_IDX: return "fpu: ";
case TRACE_BRANCH_IDX: return "branch: ";
+ case TRACE_SYSCALL_IDX: return "syscall: ";
case TRACE_VPU_IDX: return "vpu: ";
default:
sprintf (num, "?%d?", trace_idx);