static void dt_dis_sets(const dtrace_difo_t *dp, const char *name, dif_instr_t in, FILE *fp) { uint_t strptr = DIF_INSTR_STRING(in); (void) fprintf(fp, "%-4s DT_STRING[%u], %%r%u", name, strptr, DIF_INSTR_RD(in)); if (strptr < dp->dtdo_strlen) (void) fprintf(fp, "\t\t! \"%s\"", dp->dtdo_strtab + strptr); }
static void dis_sets(const dtrace_difo_t *dp, const char *name, dif_instr_t instr) { uint_t strptr = DIF_INSTR_STRING(instr); mdb_printf("%-4s DIF_STRING[%u], %%r%u", name, strptr, DIF_INSTR_RD(instr)); if (dp != NULL && strptr < dp->dtdo_strlen) { char *str = mdb_alloc(dp->dtdo_strlen, UM_SLEEP | UM_GC); if (mdb_vread(str, dp->dtdo_strlen, (uintptr_t)dp->dtdo_strtab) == -1) mdb_warn("failed to read data at %p", dp->dtdo_strtab); else mdb_printf("\t\t! \"%s\"", str + strptr); } }