[DTrace-devel] [PATCH 2/4] Report clause function name in disassembly listing if known
Kris Van Hees
kris.van.hees at oracle.com
Fri Jan 22 14:04:32 PST 2021
Signed-off-by: Kris Van Hees <kris.van.hees at oracle.com>
---
libdtrace/dt_cc.c | 4 ++--
libdtrace/dt_dis.c | 8 ++++++--
libdtrace/dt_impl.h | 3 ++-
3 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/libdtrace/dt_cc.c b/libdtrace/dt_cc.c
index 691c31f2..0ee1c381 100644
--- a/libdtrace/dt_cc.c
+++ b/libdtrace/dt_cc.c
@@ -2620,7 +2620,7 @@ dt_program_construct(dtrace_hdl_t *dtp, dt_probe_t *prp, uint_t cflags)
return NULL;
if (cflags & DTRACE_C_DIFV && DT_DISASM(dtp, 2))
- dt_dis_difo(dp, stderr);
+ dt_dis_difo(dp, stderr, NULL);
if (dt_link(dtp, prp, dp) != 0) {
dt_difo_free(dtp, dp);
@@ -2628,7 +2628,7 @@ dt_program_construct(dtrace_hdl_t *dtp, dt_probe_t *prp, uint_t cflags)
}
if (cflags & DTRACE_C_DIFV && DT_DISASM(dtp, 3))
- dt_dis_difo(dp, stderr);
+ dt_dis_difo(dp, stderr, NULL);
return dp;
}
diff --git a/libdtrace/dt_dis.c b/libdtrace/dt_dis.c
index 3db8acd5..9c7ef35e 100644
--- a/libdtrace/dt_dis.c
+++ b/libdtrace/dt_dis.c
@@ -469,7 +469,7 @@ dt_dis_rtab(const char *rtag, const dtrace_difo_t *dp, FILE *fp,
}
void
-dt_dis_difo(const dtrace_difo_t *dp, FILE *fp)
+dt_dis_difo(const dtrace_difo_t *dp, FILE *fp, const dt_ident_t *idp)
{
static const struct opent {
const char *op_name;
@@ -618,6 +618,9 @@ dt_dis_difo(const dtrace_difo_t *dp, FILE *fp)
fprintf(fp, "%-3s %-5s %-20s %s\n",
"INS", "OFF", "OPCODE", "INSTRUCTION");
+ if (idp != NULL)
+ fprintf(fp, "<%s>:\n", idp->di_name);
+
for (i = 0; i < dp->dtdo_len; i++) {
const struct bpf_insn *instr = &dp->dtdo_buf[i];
uint8_t opcode = instr->code;
@@ -754,7 +757,8 @@ dt_dis_stmts(dtrace_hdl_t *dtp, dtrace_prog_t *pgp, dtrace_stmtdesc_t *sdp,
d->last_ecb = sdp->dtsd_ecbdesc;
}
- dt_dis_difo(dt_dlib_get_func_difo(dtp, sdp->dtsd_clause), d->fp);
+ dt_dis_difo(dt_dlib_get_func_difo(dtp, sdp->dtsd_clause), d->fp,
+ sdp->dtsd_clause);
return 0;
}
diff --git a/libdtrace/dt_impl.h b/libdtrace/dt_impl.h
index bc996929..e1aab88d 100644
--- a/libdtrace/dt_impl.h
+++ b/libdtrace/dt_impl.h
@@ -729,7 +729,8 @@ extern void dt_pragma(dt_node_t *);
extern int dt_reduce(dtrace_hdl_t *, dt_version_t);
extern dtrace_difo_t *dt_as(dt_pcb_t *);
extern void dt_dis_program(dtrace_hdl_t *dtp, dtrace_prog_t *pgp, FILE *fp);
-extern void dt_dis_difo(const dtrace_difo_t *dp, FILE *fp);
+extern void dt_dis_difo(const dtrace_difo_t *dp, FILE *fp,
+ const dt_ident_t *idp);
extern int dt_aggregate_go(dtrace_hdl_t *);
extern int dt_aggregate_init(dtrace_hdl_t *);
--
2.28.0
More information about the DTrace-devel
mailing list