aboutsummaryrefslogtreecommitdiff
path: root/sim
diff options
context:
space:
mode:
authorMichael Meissner <gnu@the-meissners.org>1997-05-06 11:55:21 +0000
committerMichael Meissner <gnu@the-meissners.org>1997-05-06 11:55:21 +0000
commitd0adfefd44ac5c813ecb75487b36f4d804a1324a (patch)
tree7ba558554ff646e50051a90122482fae17527291 /sim
parenta77241718f660b81eaa8e85c9b66689101654a97 (diff)
downloadgdb-d0adfefd44ac5c813ecb75487b36f4d804a1324a.zip
gdb-d0adfefd44ac5c813ecb75487b36f4d804a1324a.tar.gz
gdb-d0adfefd44ac5c813ecb75487b36f4d804a1324a.tar.bz2
Fix typo; pass trace_line request as arg; pass common stuff in static struct
Diffstat (limited to 'sim')
-rw-r--r--sim/common/sim-trace.c35
-rw-r--r--sim/common/sim-trace.h15
-rw-r--r--sim/igen/igen.c13
3 files changed, 36 insertions, 27 deletions
diff --git a/sim/common/sim-trace.c b/sim/common/sim-trace.c
index d6d85f8..0371b44 100644
--- a/sim/common/sim-trace.c
+++ b/sim/common/sim-trace.c
@@ -262,22 +262,16 @@ trace_uninstall (SIM_DESC sd)
}
void
-trace_one_insn (SIM_DESC sd, sim_cpu *cpu, const char *filename,
- int linenum, int idecode, address_word pc, const char *name)
+trace_one_insn (SIM_DESC sd, sim_cpu *cpu, address_word pc,
+ int line_p, const TRACE_INSN_DATA *insn_data)
{
- if (idecode)
- trace_printf(sd, cpu, "%s:%-*d 0x%.*lx (decode) %s\n",
- filename,
- SIZE_LINE_NUMBER, linenum,
+ if (!line_p)
+ trace_printf(sd, cpu, "trace-%s: %s:%-*d 0x%.*lx %s\n",
+ insn_data->phase,
+ *(insn_data->p_filename),
+ SIZE_LINE_NUMBER, insn_data->linenum,
SIZE_PC, (long)pc,
- name);
-
- else if (!TRACE_LINENUM_P (cpu))
- trace_printf(sd, cpu, "%s:%-*d 0x%.*lx %s\n",
- filename,
- SIZE_LINE_NUMBER, linenum,
- SIZE_PC, (long)pc,
- name);
+ *(insn_data->p_name));
else
{
@@ -315,10 +309,10 @@ trace_one_insn (SIM_DESC sd, sim_cpu *cpu, const char *filename,
sprintf (p, "%s ", pc_function);
p += strlen (p);
}
- else if (filename)
+ else if (pc_filename)
{
- char *q = (char *) strrchr (filename, '/');
- sprintf (p, "%s ", (q) ? q+1 : filename);
+ char *q = (char *) strrchr (pc_filename, '/');
+ sprintf (p, "%s ", (q) ? q+1 : pc_filename);
p += strlen (p);
}
@@ -327,10 +321,13 @@ trace_one_insn (SIM_DESC sd, sim_cpu *cpu, const char *filename,
}
}
- trace_printf (sd, cpu, "0x%.*x %-*.*s %s\n",
+ trace_printf (sd, cpu, "trace-%s: %s:%-*d 0x%.*x %-*.*s %s\n",
+ insn_data->phase,
+ *(insn_data->p_filename),
+ SIZE_LINE_NUMBER, insn_data->linenum,
SIZE_PC, (unsigned) pc,
SIZE_LOCATION, SIZE_LOCATION, buf,
- name);
+ *(insn_data->p_name));
}
}
diff --git a/sim/common/sim-trace.h b/sim/common/sim-trace.h
index 91d0be6..8e1eebc 100644
--- a/sim/common/sim-trace.h
+++ b/sim/common/sim-trace.h
@@ -89,6 +89,15 @@ typedef struct {
FILE *trace_file;
#define TRACE_FILE(t) ((t)->trace_file)
} TRACE_DATA;
+
+/* Structure containing constant stuff to pass to trace_one_insn */
+
+typedef struct {
+ const char *phase; /* which phase this in (decode,insn) */
+ char **p_filename; /* ptr to filename insns where defined in */
+ char **p_name; /* ptr to instruction name */
+ int linenum; /* line number of line where insn is defined */
+} TRACE_INSN_DATA;
/* Usage macros. */
@@ -113,9 +122,9 @@ struct _sim_cpu;
/* Non-zero if "--trace-fpu" specified for CPU. */
#define TRACE_FPU_P(cpu) TRACE_P (cpu, TRACE_FPU_IDX)
-extern void trace_one_insn PARAMS ((SIM_DESC, sim_cpu *, const char *,
- int, int, address_word,
- const char *name));
+extern void trace_one_insn PARAMS ((SIM_DESC, sim_cpu *,
+ address_word, int,
+ const TRACE_INSN_DATA *));
extern void trace_printf PARAMS ((SIM_DESC, sim_cpu *, const char *, ...))
__attribute__((format (printf, 3, 4)));
diff --git a/sim/igen/igen.c b/sim/igen/igen.c
index 68ebb66..fb9008d 100644
--- a/sim/igen/igen.c
+++ b/sim/igen/igen.c
@@ -248,15 +248,18 @@ print_itrace(lf *file,
table_entry *file_entry,
int idecode)
{
+ const char *phase = (idecode) ? "DECODE" : "INSN";
+ const char *phase_lc = (idecode) ? "decode" : "insn";
lf_printf(file, "\n");
lf_indent_suppress(file);
lf_printf(file, "#if defined(WITH_TRACE)\n");
lf_printf(file, "/* trace the instructions execution if enabled */\n");
- lf_printf(file, "if (TRACE_%s_P (CPU)) {\n", (idecode) ? "DECODE" : "INSN");
- lf_printf(file, " trace_one_insn (SD, CPU, \"%s\", %d, %d, %s, itable[MY_INDEX].name);\n",
- filter_filename(file_entry->file_name),
- file_entry->line_nr,
- idecode,
+ lf_printf(file, "if (TRACE_%s_P (CPU)) {\n", phase);
+ lf_printf(file, " static const TRACE_INSN_DATA my_insn_data = { \"%s\", &itable[MY_INDEX].file, &itable[MY_INDEX].name, %d };\n",
+ phase_lc,
+ file_entry->line_nr);
+
+ lf_printf(file, " trace_one_insn (SD, CPU, %s, TRACE_LINENUM_P (CPU), &my_insn_data);\n",
(code & generate_with_semantic_delayed_branch) ? "cia.ip" : "cia");
lf_printf(file, "}\n");