public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [PATCH 4/4] sim: trace: centralize the system tracing
  2015-06-11 15:58 [PATCH 1/4] sim: trace: create a common WITH_TRACE_P macro Mike Frysinger
  2015-06-11 15:58 ` [PATCH 2/4] sim: trace: use existing defines for the useful mask Mike Frysinger
@ 2015-06-11 15:58 ` Mike Frysinger
  2015-06-11 15:58 ` [PATCH 3/4] sim: trace: add STRACE_xxx_P macros Mike Frysinger
  2 siblings, 0 replies; 4+ messages in thread
From: Mike Frysinger @ 2015-06-11 15:58 UTC (permalink / raw)
  To: gdb-patches

First we convert the ETRACE_P to STRACE_EVENTS_P.  This means we move from
using the sim_events.trace storage to the common sim_state_base.trace_data
array.  With that deleted, the common trace init code can be simplified so
the sim state works the same as the sim cpu.

Committed.
---
 sim/common/ChangeLog    |  9 +++++++++
 sim/common/sim-events.c |  9 +++------
 sim/common/sim-events.h |  1 -
 sim/common/sim-trace.c  | 12 ++----------
 4 files changed, 14 insertions(+), 17 deletions(-)

diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog
index 35f08bb..a20f92d 100644
--- a/sim/common/ChangeLog
+++ b/sim/common/ChangeLog
@@ -1,5 +1,14 @@
 2015-06-11  Mike Frysinger  <vapier@gentoo.org>
 
+	* sim-events.c (ETRACE_P): Delete.
+	(ETRACE): Change ETRACE_P to STRACE_EVENTS_P(sd).
+	(update_time_from_event, sim_events_schedule_vtracef): Likewise.
+	* sim-events.h (struct _sim_events): Delete trace member.
+	* sim-trace.c (set_trace_option_mask): Delete trace_nr check and
+	always set STATE_TRACE_FLAGS(sd)[trace_nr] element.
+
+2015-06-11  Mike Frysinger  <vapier@gentoo.org>
+
 	* sim-trace.h (STRACE_ANY_P, STRACE_INSN_P, STRACE_DECODE_P,
 	STRACE_EXTRACT_P, STRACE_LINENUM_P, STRACE_MEMORY_P, STRACE_MODEL_P,
 	STRACE_ALU_P, STRACE_CORE_P, STRACE_EVENTS_P, STRACE_FPU_P,
diff --git a/sim/common/sim-events.c b/sim/common/sim-events.c
index d7ca0df..fc52575 100644
--- a/sim/common/sim-events.c
+++ b/sim/common/sim-events.c
@@ -140,14 +140,11 @@ struct _sim_event {
 
 #define _ETRACE sd, NULL
 
-#undef ETRACE_P
-#define ETRACE_P (WITH_TRACE && STATE_EVENTS (sd)->trace)
-
 #undef ETRACE
 #define ETRACE(ARGS) \
 do \
   { \
-    if (ETRACE_P) \
+    if (STRACE_EVENTS_P (sd)) \
       { \
         if (STRACE_DEBUG_P (sd)) \
 	  { \
@@ -409,7 +406,7 @@ update_time_from_event (SIM_DESC sd)
       events->time_of_event = current_time - 1;
       events->time_from_event = -1;
     }
-  if (ETRACE_P)
+  if (STRACE_EVENTS_P (sd))
     {
       sim_event *event;
       int i;
@@ -521,7 +518,7 @@ sim_events_schedule_vtracef (SIM_DESC sd,
   new_event->data = data;
   new_event->handler = handler;
   new_event->watching = watch_timer;
-  if (fmt == NULL || !ETRACE_P || vasprintf (&new_event->trace, fmt, ap) < 0)
+  if (fmt == NULL || !STRACE_EVENTS_P (sd) || vasprintf (&new_event->trace, fmt, ap) < 0)
     new_event->trace = NULL;
   insert_sim_event (sd, new_event, delta_time);
   ETRACE ((_ETRACE,
diff --git a/sim/common/sim-events.h b/sim/common/sim-events.h
index 9c56cab..6faa5cc 100644
--- a/sim/common/sim-events.h
+++ b/sim/common/sim-events.h
@@ -94,7 +94,6 @@ struct _sim_events {
   SIM_ELAPSED_TIME resume_wallclock;
   signed64 time_of_event;
   signed64 time_from_event;
-  int trace;
 };
 
 
diff --git a/sim/common/sim-trace.c b/sim/common/sim-trace.c
index a706f1d..915965d 100644
--- a/sim/common/sim-trace.c
+++ b/sim/common/sim-trace.c
@@ -173,22 +173,14 @@ set_trace_option_mask (SIM_DESC sd, const char *name, int mask, const char *arg)
 	}
     }
 
-  /* update applicable trace bits */
+  /* Update applicable trace bits.  */
   for (trace_nr = 0; trace_nr < MAX_TRACE_VALUES; ++trace_nr)
     {
       if ((mask & (1 << trace_nr)) == 0)
 	continue;
 
       /* Set non-cpu specific values.  */
-      switch (trace_nr)
-	{
-	case TRACE_EVENTS_IDX:
-	  STATE_EVENTS (sd)->trace = trace_val;
-	  break;
-	case TRACE_DEBUG_IDX:
-	  STATE_TRACE_FLAGS (sd)[trace_nr] = trace_val;
-	  break;
-	}
+      STATE_TRACE_FLAGS (sd)[trace_nr] = trace_val;
 
       /* Set cpu values.  */
       for (cpu_nr = 0; cpu_nr < MAX_NR_PROCESSORS; cpu_nr++)
-- 
2.4.1

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 1/4] sim: trace: create a common WITH_TRACE_P macro
@ 2015-06-11 15:58 Mike Frysinger
  2015-06-11 15:58 ` [PATCH 2/4] sim: trace: use existing defines for the useful mask Mike Frysinger
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Mike Frysinger @ 2015-06-11 15:58 UTC (permalink / raw)
  To: gdb-patches

This way we can use the IDX macros everywhere and not worry about the
encoding of the WITH_TRACE define in multiple places.

Committed.
---
 sim/common/ChangeLog   | 12 +++++++++++-
 sim/common/sim-trace.h | 35 +++++++++++++++++------------------
 2 files changed, 28 insertions(+), 19 deletions(-)

diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog
index b7d2f52..039c675 100644
--- a/sim/common/ChangeLog
+++ b/sim/common/ChangeLog
@@ -1,4 +1,14 @@
-2015-06-09  Mike Stump  <mrs@mrs.kithrup.com> (obvious patch)
+2015-06-11  Mike Frysinger  <vapier@gentoo.org>
+
+	* sim-trace.h (WITH_TRACE_P): New define.
+	(WITH_TRACE_INSN_P, WITH_TRACE_DECODE_P, WITH_TRACE_EXTRACT_P,
+	WITH_TRACE_LINENUM_P, WITH_TRACE_MEMORY_P, WITH_TRACE_MODEL_P,
+	WITH_TRACE_ALU_P, WITH_TRACE_CORE_P, WITH_TRACE_EVENTS_P,
+	WITH_TRACE_FPU_P, WITH_TRACE_VPU_P, WITH_TRACE_BRANCH_P,
+	WITH_TRACE_SYSCALL_P, WITH_TRACE_DEBUG_P, STRACE_P, TRACE_P):
+	Redefine to use WITH_TRACE_P.
+
+2015-06-09  Mike Stump  <mrs@mrs.kithrup.com>
 
 	* sim-events.c (sim_events_schedule_after_signal): Fix spelling
 	mistake in call to sim_engine_abort.
diff --git a/sim/common/sim-trace.h b/sim/common/sim-trace.h
index 3f78744..df995a6 100644
--- a/sim/common/sim-trace.h
+++ b/sim/common/sim-trace.h
@@ -111,20 +111,21 @@ enum {
 #define TRACE_debug    (1 << TRACE_DEBUG_IDX)
 
 /* Preprocessor macros to simplify tests of WITH_TRACE.  */
-#define WITH_TRACE_INSN_P	(WITH_TRACE & TRACE_insn)
-#define WITH_TRACE_DECODE_P	(WITH_TRACE & TRACE_decode)
-#define WITH_TRACE_EXTRACT_P	(WITH_TRACE & TRACE_extract)
-#define WITH_TRACE_LINENUM_P	(WITH_TRACE & TRACE_linenum)
-#define WITH_TRACE_MEMORY_P	(WITH_TRACE & TRACE_memory)
-#define WITH_TRACE_MODEL_P	(WITH_TRACE & TRACE_model)
-#define WITH_TRACE_ALU_P	(WITH_TRACE & TRACE_alu)
-#define WITH_TRACE_CORE_P	(WITH_TRACE & TRACE_core)
-#define WITH_TRACE_EVENTS_P	(WITH_TRACE & TRACE_events)
-#define WITH_TRACE_FPU_P	(WITH_TRACE & TRACE_fpu)
-#define WITH_TRACE_VPU_P	(WITH_TRACE & TRACE_vpu)
-#define WITH_TRACE_BRANCH_P	(WITH_TRACE & TRACE_branch)
-#define WITH_TRACE_SYSCALL_P	(WITH_TRACE & TRACE_syscall)
-#define WITH_TRACE_DEBUG_P	(WITH_TRACE & TRACE_debug)
+#define WITH_TRACE_P(idx)	(WITH_TRACE & (1 << idx))
+#define WITH_TRACE_INSN_P	WITH_TRACE_P (TRACE_INSN_IDX)
+#define WITH_TRACE_DECODE_P	WITH_TRACE_P (TRACE_DECODE_IDX)
+#define WITH_TRACE_EXTRACT_P	WITH_TRACE_P (TRACE_EXTRACT_IDX)
+#define WITH_TRACE_LINENUM_P	WITH_TRACE_P (TRACE_LINENUM_IDX)
+#define WITH_TRACE_MEMORY_P	WITH_TRACE_P (TRACE_MEMORY_IDX)
+#define WITH_TRACE_MODEL_P	WITH_TRACE_P (TRACE_MODEL_IDX)
+#define WITH_TRACE_ALU_P	WITH_TRACE_P (TRACE_ALU_IDX)
+#define WITH_TRACE_CORE_P	WITH_TRACE_P (TRACE_CORE_IDX)
+#define WITH_TRACE_EVENTS_P	WITH_TRACE_P (TRACE_EVENTS_IDX)
+#define WITH_TRACE_FPU_P	WITH_TRACE_P (TRACE_FPU_IDX)
+#define WITH_TRACE_VPU_P	WITH_TRACE_P (TRACE_VPU_IDX)
+#define WITH_TRACE_BRANCH_P	WITH_TRACE_P (TRACE_BRANCH_IDX)
+#define WITH_TRACE_SYSCALL_P	WITH_TRACE_P (TRACE_SYSCALL_IDX)
+#define WITH_TRACE_DEBUG_P	WITH_TRACE_P (TRACE_DEBUG_IDX)
 
 /* Tracing install handler.  */
 MODULE_INSTALL_FN trace_install;
@@ -192,8 +193,7 @@ typedef struct _trace_data {
 /* Return non-zero if tracing of IDX is enabled for non-cpu specific
    components.  The "S" in "STRACE" refers to "System".  */
 #define STRACE_P(sd,idx) \
-((WITH_TRACE & (1 << (idx))) != 0 \
- && STATE_TRACE_FLAGS (sd)[idx] != 0)
+  (WITH_TRACE_P (idx) && STATE_TRACE_FLAGS (sd)[idx] != 0)
 
 /* Non-zero if --trace-<xxxx> was specified for SD.  */
 #define STRACE_DEBUG_P(sd)	STRACE_P (sd, TRACE_DEBUG_IDX)
@@ -204,8 +204,7 @@ typedef struct _trace_data {
 
 /* Return non-zero if tracing of IDX is enabled for CPU.  */
 #define TRACE_P(cpu,idx) \
-((WITH_TRACE & (1 << (idx))) != 0 \
- && CPU_TRACE_FLAGS (cpu)[idx] != 0)
+  (WITH_TRACE_P (idx) && CPU_TRACE_FLAGS (cpu)[idx] != 0)
 
 /* Non-zero if --trace-<xxxx> was specified for CPU.  */
 #define TRACE_ANY_P(cpu)	((WITH_TRACE) && (CPU_TRACE_DATA (cpu)->trace_any_p))
-- 
2.4.1

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 2/4] sim: trace: use existing defines for the useful mask
  2015-06-11 15:58 [PATCH 1/4] sim: trace: create a common WITH_TRACE_P macro Mike Frysinger
@ 2015-06-11 15:58 ` Mike Frysinger
  2015-06-11 15:58 ` [PATCH 4/4] sim: trace: centralize the system tracing Mike Frysinger
  2015-06-11 15:58 ` [PATCH 3/4] sim: trace: add STRACE_xxx_P macros Mike Frysinger
  2 siblings, 0 replies; 4+ messages in thread
From: Mike Frysinger @ 2015-06-11 15:58 UTC (permalink / raw)
  To: gdb-patches

No point in duplicating the shift logic when we have macros already to
keep that all unified.

Committed.
---
 sim/common/ChangeLog   | 4 ++++
 sim/common/sim-trace.h | 5 +----
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog
index 039c675..586f58d 100644
--- a/sim/common/ChangeLog
+++ b/sim/common/ChangeLog
@@ -1,5 +1,9 @@
 2015-06-11  Mike Frysinger  <vapier@gentoo.org>
 
+	* sim-trace.h (TRACE_USEFUL_MASK): Change to TRACE_xxx defines.
+
+2015-06-11  Mike Frysinger  <vapier@gentoo.org>
+
 	* sim-trace.h (WITH_TRACE_P): New define.
 	(WITH_TRACE_INSN_P, WITH_TRACE_DECODE_P, WITH_TRACE_EXTRACT_P,
 	WITH_TRACE_LINENUM_P, WITH_TRACE_MEMORY_P, WITH_TRACE_MODEL_P,
diff --git a/sim/common/sim-trace.h b/sim/common/sim-trace.h
index df995a6..3d91aa9 100644
--- a/sim/common/sim-trace.h
+++ b/sim/common/sim-trace.h
@@ -87,10 +87,7 @@ enum {
    splat on the screen everything under the sun making nothing easy to
    find.  */
 #define TRACE_USEFUL_MASK \
-((1 << TRACE_INSN_IDX) \
- | (1 << TRACE_LINENUM_IDX) \
- | (1 << TRACE_MEMORY_IDX) \
- | (1 << TRACE_MODEL_IDX))
+  (TRACE_insn | TRACE_linenum | TRACE_memory | TRACE_model)
 \f
 /* Masks so WITH_TRACE can have symbolic values.
    The case choice here is on purpose.  The lowercase parts are args to
-- 
2.4.1

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 3/4] sim: trace: add STRACE_xxx_P macros
  2015-06-11 15:58 [PATCH 1/4] sim: trace: create a common WITH_TRACE_P macro Mike Frysinger
  2015-06-11 15:58 ` [PATCH 2/4] sim: trace: use existing defines for the useful mask Mike Frysinger
  2015-06-11 15:58 ` [PATCH 4/4] sim: trace: centralize the system tracing Mike Frysinger
@ 2015-06-11 15:58 ` Mike Frysinger
  2 siblings, 0 replies; 4+ messages in thread
From: Mike Frysinger @ 2015-06-11 15:58 UTC (permalink / raw)
  To: gdb-patches

These are the parallel to the TRACE_xxx_P macros and fill out the full
set to match the existing debug one.

Committed.
---
 sim/common/ChangeLog   |  7 +++++++
 sim/common/sim-trace.h | 14 ++++++++++++++
 2 files changed, 21 insertions(+)

diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog
index 586f58d..35f08bb 100644
--- a/sim/common/ChangeLog
+++ b/sim/common/ChangeLog
@@ -1,5 +1,12 @@
 2015-06-11  Mike Frysinger  <vapier@gentoo.org>
 
+	* sim-trace.h (STRACE_ANY_P, STRACE_INSN_P, STRACE_DECODE_P,
+	STRACE_EXTRACT_P, STRACE_LINENUM_P, STRACE_MEMORY_P, STRACE_MODEL_P,
+	STRACE_ALU_P, STRACE_CORE_P, STRACE_EVENTS_P, STRACE_FPU_P,
+	STRACE_VPU_P, STRACE_BRANCH_P, STRACE_SYSCALL_P): Define.
+
+2015-06-11  Mike Frysinger  <vapier@gentoo.org>
+
 	* sim-trace.h (TRACE_USEFUL_MASK): Change to TRACE_xxx defines.
 
 2015-06-11  Mike Frysinger  <vapier@gentoo.org>
diff --git a/sim/common/sim-trace.h b/sim/common/sim-trace.h
index 3d91aa9..5d6919a 100644
--- a/sim/common/sim-trace.h
+++ b/sim/common/sim-trace.h
@@ -193,6 +193,20 @@ typedef struct _trace_data {
   (WITH_TRACE_P (idx) && STATE_TRACE_FLAGS (sd)[idx] != 0)
 
 /* Non-zero if --trace-<xxxx> was specified for SD.  */
+#define STRACE_ANY_P(sd)	((WITH_TRACE) && (STATE_TRACE_DATA (sd)->trace_any_p))
+#define STRACE_INSN_P(sd)	STRACE_P (sd, TRACE_INSN_IDX)
+#define STRACE_DECODE_P(sd)	STRACE_P (sd, TRACE_DECODE_IDX)
+#define STRACE_EXTRACT_P(sd)	STRACE_P (sd, TRACE_EXTRACT_IDX)
+#define STRACE_LINENUM_P(sd)	STRACE_P (sd, TRACE_LINENUM_IDX)
+#define STRACE_MEMORY_P(sd)	STRACE_P (sd, TRACE_MEMORY_IDX)
+#define STRACE_MODEL_P(sd)	STRACE_P (sd, TRACE_MODEL_IDX)
+#define STRACE_ALU_P(sd)	STRACE_P (sd, TRACE_ALU_IDX)
+#define STRACE_CORE_P(sd)	STRACE_P (sd, TRACE_CORE_IDX)
+#define STRACE_EVENTS_P(sd)	STRACE_P (sd, TRACE_EVENTS_IDX)
+#define STRACE_FPU_P(sd)	STRACE_P (sd, TRACE_FPU_IDX)
+#define STRACE_VPU_P(sd)	STRACE_P (sd, TRACE_VPU_IDX)
+#define STRACE_BRANCH_P(sd)	STRACE_P (sd, TRACE_BRANCH_IDX)
+#define STRACE_SYSCALL_P(sd)	STRACE_P (sd, TRACE_SYSCALL_IDX)
 #define STRACE_DEBUG_P(sd)	STRACE_P (sd, TRACE_DEBUG_IDX)
 \f
 /* CPU tracing support.  */
-- 
2.4.1

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-06-11 15:58 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-06-11 15:58 [PATCH 1/4] sim: trace: create a common WITH_TRACE_P macro Mike Frysinger
2015-06-11 15:58 ` [PATCH 2/4] sim: trace: use existing defines for the useful mask Mike Frysinger
2015-06-11 15:58 ` [PATCH 4/4] sim: trace: centralize the system tracing Mike Frysinger
2015-06-11 15:58 ` [PATCH 3/4] sim: trace: add STRACE_xxx_P macros Mike Frysinger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).