Author: markj
Date: Sat Nov 12 19:26:12 2016
New Revision: 308582
URL: https://svnweb.freebsd.org/changeset/base/308582

Log:
  Remove the DTrace printt and typeref actions.
  
  These are FreeBSD-specific and were added in r178576 to provide the ability
  to pretty-print instances of compound types. However, the print action has
  long since been augmented to provide this functionality with a simpler
  interface.
  
  Discussed with:       gnn
  Differential Revision:        https://reviews.freebsd.org/D8478

Modified:
  head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c
  head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cg.c
  head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c
  head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_errtags.h
  head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_impl.h
  head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c
  head/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c
  head/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h

Modified: head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c
==============================================================================
--- head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c  Sat Nov 12 
19:05:41 2016        (r308581)
+++ head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c  Sat Nov 12 
19:26:12 2016        (r308582)
@@ -1058,46 +1058,6 @@ dt_action_printm(dtrace_hdl_t *dtp, dt_n
 }
 
 static void
-dt_action_printt(dtrace_hdl_t *dtp, dt_node_t *dnp, dtrace_stmtdesc_t *sdp)
-{
-       dtrace_actdesc_t *ap = dt_stmt_action(dtp, sdp);
-
-       dt_node_t *size = dnp->dn_args;
-       dt_node_t *addr = dnp->dn_args->dn_list;
-
-       char n[DT_TYPE_NAMELEN];
-
-       if (dt_node_is_posconst(size) == 0) {
-               dnerror(size, D_PRINTT_SIZE, "printt( ) argument #1 must "
-                   "be a non-zero positive integral constant expression\n");
-       }
-
-       if (addr == NULL || addr->dn_kind != DT_NODE_FUNC ||
-           addr->dn_ident != dt_idhash_lookup(dtp->dt_globals, "typeref")) {
-               dnerror(addr, D_PRINTT_ADDR,
-                   "printt( ) argument #2 is incompatible with "
-                   "prototype:\n\tprototype: typeref()\n"
-                   "\t argument: %s\n",
-                   dt_node_type_name(addr, n, sizeof (n)));
-       }
-
-       dt_cg(yypcb, addr);
-       ap->dtad_difo = dt_as(yypcb);
-       ap->dtad_kind = DTRACEACT_PRINTT;
-
-       ap->dtad_difo->dtdo_rtype.dtdt_flags |= DIF_TF_BYREF;
-
-       /*
-        * Allow additional buffer space for the data size, type size,
-        * type string length and a stab in the dark (32 bytes) for the
-        * type string. The type string is part of the typeref() that
-        * this action references.
-        */
-       ap->dtad_difo->dtdo_rtype.dtdt_size = size->dn_value + 3 * 
sizeof(uintptr_t) + 32;
-
-}
-
-static void
 dt_action_commit(dtrace_hdl_t *dtp, dt_node_t *dnp, dtrace_stmtdesc_t *sdp)
 {
        dtrace_actdesc_t *ap = dt_stmt_action(dtp, sdp);
@@ -1169,9 +1129,6 @@ dt_compile_fun(dtrace_hdl_t *dtp, dt_nod
        case DT_ACT_PRINTM:
                dt_action_printm(dtp, dnp->dn_expr, sdp);
                break;
-       case DT_ACT_PRINTT:
-               dt_action_printt(dtp, dnp->dn_expr, sdp);
-               break;
        case DT_ACT_RAISE:
                dt_action_raise(dtp, dnp->dn_expr, sdp);
                break;

Modified: head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cg.c
==============================================================================
--- head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cg.c  Sat Nov 12 
19:05:41 2016        (r308581)
+++ head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cg.c  Sat Nov 12 
19:26:12 2016        (r308582)
@@ -1353,40 +1353,6 @@ dt_cg_inline(dt_node_t *dnp, dt_irlist_t
        }
 }
 
-static void
-dt_cg_func_typeref(dtrace_hdl_t *dtp, dt_node_t *dnp)
-{
-       dtrace_typeinfo_t dtt;
-       dt_node_t *addr = dnp->dn_args;
-       dt_node_t *nelm = addr->dn_list;
-       dt_node_t *strp = nelm->dn_list;
-       dt_node_t *typs = strp->dn_list;
-       char buf[DT_TYPE_NAMELEN];
-       char *p;
-
-       ctf_type_name(addr->dn_ctfp, addr->dn_type, buf, sizeof (buf));
-
-       /*
-        * XXX Hack alert! XXX
-        * The prototype has two dummy args that we munge to represent
-        * the type string and the type size.
-        *
-        * Yes, I hear your grumble, but it works for now. We'll come
-        * up with a more elegant implementation later. :-)
-        */
-       free(strp->dn_string);
-
-       if ((p = strchr(buf, '*')) != NULL)
-               *p = '\0';
-
-       strp->dn_string = strdup(buf);
-
-       if (dtrace_lookup_by_type(dtp,  DTRACE_OBJ_EVERY, buf, &dtt) < 0)
-               return;
-
-       typs->dn_value = ctf_type_size(dtt.dtt_ctfp, dtt.dtt_type);
-}
-
 typedef struct dt_xlmemb {
        dt_ident_t *dtxl_idp;           /* translated ident */
        dt_irlist_t *dtxl_dlp;          /* instruction list */
@@ -2002,8 +1968,6 @@ dt_cg_node(dt_node_t *dnp, dt_irlist_t *
 
                switch (dnp->dn_kind) {
                case DT_NODE_FUNC: {
-                       dtrace_hdl_t *dtp = yypcb->pcb_hdl;
-
                        if ((idp = dnp->dn_ident)->di_kind != DT_IDENT_FUNC) {
                                dnerror(dnp, D_CG_EXPR, "%s %s( ) may not be "
                                    "called from a D expression (D program "
@@ -2011,15 +1975,6 @@ dt_cg_node(dt_node_t *dnp, dt_irlist_t *
                                    dt_idkind_name(idp->di_kind), idp->di_name);
                        }
 
-                       switch (idp->di_id) {
-                       case DIF_SUBR_TYPEREF:
-                               dt_cg_func_typeref(dtp, dnp);
-                               break;
-
-                       default:
-                               break;
-                       }
-
                        dt_cg_arglist(dnp->dn_ident, dnp->dn_args, dlp, drp);
 
                        dnp->dn_reg = dt_regset_alloc(drp);

Modified: head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c
==============================================================================
--- head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c     Sat Nov 
12 19:05:41 2016        (r308581)
+++ head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c     Sat Nov 
12 19:26:12 2016        (r308582)
@@ -1537,314 +1537,6 @@ dt_print_umod(dtrace_hdl_t *dtp, FILE *f
        return (err);
 }
 
-int
-dt_print_memory(dtrace_hdl_t *dtp, FILE *fp, caddr_t addr)
-{
-       int quiet = (dtp->dt_options[DTRACEOPT_QUIET] != DTRACEOPT_UNSET);
-       size_t nbytes = *((uintptr_t *) addr);
-
-       return (dt_print_bytes(dtp, fp, addr + sizeof(uintptr_t),
-           nbytes, 50, quiet, 1));
-}
-
-typedef struct dt_type_cbdata {
-       dtrace_hdl_t            *dtp;
-       dtrace_typeinfo_t       dtt;
-       caddr_t                 addr;
-       caddr_t                 addrend;
-       const char              *name;
-       int                     f_type;
-       int                     indent;
-       int                     type_width;
-       int                     name_width;
-       FILE                    *fp;
-} dt_type_cbdata_t;
-
-static int     dt_print_type_data(dt_type_cbdata_t *, ctf_id_t);
-
-static int
-dt_print_type_member(const char *name, ctf_id_t type, ulong_t off, void *arg)
-{
-       dt_type_cbdata_t cbdata;
-       dt_type_cbdata_t *cbdatap = arg;
-       ssize_t ssz;
-
-       if ((ssz = ctf_type_size(cbdatap->dtt.dtt_ctfp, type)) <= 0)
-               return (0);
-
-       off /= 8;
-
-       cbdata = *cbdatap;
-       cbdata.name = name;
-       cbdata.addr += off;
-       cbdata.addrend = cbdata.addr + ssz;
-
-       return (dt_print_type_data(&cbdata, type));
-}
-
-static int
-dt_print_type_width(const char *name, ctf_id_t type, ulong_t off, void *arg)
-{
-       char buf[DT_TYPE_NAMELEN];
-       char *p;
-       dt_type_cbdata_t *cbdatap = arg;
-       size_t sz = strlen(name);
-
-       ctf_type_name(cbdatap->dtt.dtt_ctfp, type, buf, sizeof (buf));
-
-       if ((p = strchr(buf, '[')) != NULL)
-               p[-1] = '\0';
-       else
-               p = "";
-
-       sz += strlen(p);
-
-       if (sz > cbdatap->name_width)
-               cbdatap->name_width = sz;
-
-       sz = strlen(buf);
-
-       if (sz > cbdatap->type_width)
-               cbdatap->type_width = sz;
-
-       return (0);
-}
-
-static int
-dt_print_type_data(dt_type_cbdata_t *cbdatap, ctf_id_t type)
-{
-       caddr_t addr = cbdatap->addr;
-       caddr_t addrend = cbdatap->addrend;
-       char buf[DT_TYPE_NAMELEN];
-       char *p;
-       int cnt = 0;
-       uint_t kind = ctf_type_kind(cbdatap->dtt.dtt_ctfp, type);
-       ssize_t ssz = ctf_type_size(cbdatap->dtt.dtt_ctfp, type);
-
-       ctf_type_name(cbdatap->dtt.dtt_ctfp, type, buf, sizeof (buf));
-
-       if ((p = strchr(buf, '[')) != NULL)
-               p[-1] = '\0';
-       else
-               p = "";
-
-       if (cbdatap->f_type) {
-               int type_width = roundup(cbdatap->type_width + 1, 4);
-               int name_width = roundup(cbdatap->name_width + 1, 4);
-
-               name_width -= strlen(cbdatap->name);
-
-               dt_printf(cbdatap->dtp, cbdatap->fp, "%*s%-*s%s%-*s     = 
",cbdatap->indent * 4,"",type_width,buf,cbdatap->name,name_width,p);
-       }
-
-       while (addr < addrend) {
-               dt_type_cbdata_t cbdata;
-               ctf_arinfo_t arinfo;
-               ctf_encoding_t cte;
-               uintptr_t *up;
-               void *vp = addr;
-               cbdata = *cbdatap;
-               cbdata.name = "";
-               cbdata.addr = addr;
-               cbdata.addrend = addr + ssz;
-               cbdata.f_type = 0;
-               cbdata.indent++;
-               cbdata.type_width = 0;
-               cbdata.name_width = 0;
-
-               if (cnt > 0)
-                       dt_printf(cbdatap->dtp, cbdatap->fp, "%*s", 
cbdatap->indent * 4,"");
-
-               switch (kind) {
-               case CTF_K_INTEGER:
-                       if (ctf_type_encoding(cbdatap->dtt.dtt_ctfp, type, 
&cte) != 0)
-                               return (-1);
-                       if ((cte.cte_format & CTF_INT_SIGNED) != 0)
-                               switch (cte.cte_bits) {
-                               case 8:
-                                       if (isprint(*((char *) vp)))
-                                               dt_printf(cbdatap->dtp, 
cbdatap->fp, "'%c', ", *((char *) vp));
-                                       dt_printf(cbdatap->dtp, cbdatap->fp, 
"%d (0x%x);\n", *((char *) vp), *((char *) vp));
-                                       break;
-                               case 16:
-                                       dt_printf(cbdatap->dtp, cbdatap->fp, 
"%hd (0x%hx);\n", *((short *) vp), *((u_short *) vp));
-                                       break;
-                               case 32:
-                                       dt_printf(cbdatap->dtp, cbdatap->fp, 
"%d (0x%x);\n", *((int *) vp), *((u_int *) vp));
-                                       break;
-                               case 64:
-                                       dt_printf(cbdatap->dtp, cbdatap->fp, 
"%jd (0x%jx);\n", *((long long *) vp), *((unsigned long long *) vp));
-                                       break;
-                               default:
-                                       dt_printf(cbdatap->dtp, cbdatap->fp, 
"CTF_K_INTEGER: format %x offset %u bits 
%u\n",cte.cte_format,cte.cte_offset,cte.cte_bits);
-                                       break;
-                               }
-                       else
-                               switch (cte.cte_bits) {
-                               case 8:
-                                       dt_printf(cbdatap->dtp, cbdatap->fp, 
"%u (0x%x);\n", *((uint8_t *) vp) & 0xff, *((uint8_t *) vp) & 0xff);
-                                       break;
-                               case 16:
-                                       dt_printf(cbdatap->dtp, cbdatap->fp, 
"%hu (0x%hx);\n", *((u_short *) vp), *((u_short *) vp));
-                                       break;
-                               case 32:
-                                       dt_printf(cbdatap->dtp, cbdatap->fp, 
"%u (0x%x);\n", *((u_int *) vp), *((u_int *) vp));
-                                       break;
-                               case 64:
-                                       dt_printf(cbdatap->dtp, cbdatap->fp, 
"%ju (0x%jx);\n", *((unsigned long long *) vp), *((unsigned long long *) vp));
-                                       break;
-                               default:
-                                       dt_printf(cbdatap->dtp, cbdatap->fp, 
"CTF_K_INTEGER: format %x offset %u bits 
%u\n",cte.cte_format,cte.cte_offset,cte.cte_bits);
-                                       break;
-                               }
-                       break;
-               case CTF_K_FLOAT:
-                       dt_printf(cbdatap->dtp, cbdatap->fp, "CTF_K_FLOAT: 
format %x offset %u bits %u\n",cte.cte_format,cte.cte_offset,cte.cte_bits);
-                       break;
-               case CTF_K_POINTER:
-                       dt_printf(cbdatap->dtp, cbdatap->fp, "%p;\n", *((void 
**) addr));
-                       break;
-               case CTF_K_ARRAY:
-                       if (ctf_array_info(cbdatap->dtt.dtt_ctfp, type, 
&arinfo) != 0)
-                               return (-1);
-                       dt_printf(cbdatap->dtp, cbdatap->fp, 
"{\n%*s",cbdata.indent * 4,"");
-                       dt_print_type_data(&cbdata, arinfo.ctr_contents);
-                       dt_printf(cbdatap->dtp, cbdatap->fp, 
"%*s};\n",cbdatap->indent * 4,"");
-                       break;
-               case CTF_K_FUNCTION:
-                       dt_printf(cbdatap->dtp, cbdatap->fp, 
"CTF_K_FUNCTION:\n");
-                       break;
-               case CTF_K_STRUCT:
-                       cbdata.f_type = 1;
-                       if (ctf_member_iter(cbdatap->dtt.dtt_ctfp, type,
-                           dt_print_type_width, &cbdata) != 0)
-                               return (-1);
-                       dt_printf(cbdatap->dtp, cbdatap->fp, "{\n");
-                       if (ctf_member_iter(cbdatap->dtt.dtt_ctfp, type,
-                           dt_print_type_member, &cbdata) != 0)
-                               return (-1);
-                       dt_printf(cbdatap->dtp, cbdatap->fp, 
"%*s};\n",cbdatap->indent * 4,"");
-                       break;
-               case CTF_K_UNION:
-                       cbdata.f_type = 1;
-                       if (ctf_member_iter(cbdatap->dtt.dtt_ctfp, type,
-                           dt_print_type_width, &cbdata) != 0)
-                               return (-1);
-                       dt_printf(cbdatap->dtp, cbdatap->fp, "{\n");
-                       if (ctf_member_iter(cbdatap->dtt.dtt_ctfp, type,
-                           dt_print_type_member, &cbdata) != 0)
-                               return (-1);
-                       dt_printf(cbdatap->dtp, cbdatap->fp, 
"%*s};\n",cbdatap->indent * 4,"");
-                       break;
-               case CTF_K_ENUM:
-                       dt_printf(cbdatap->dtp, cbdatap->fp, "%s;\n", 
ctf_enum_name(cbdatap->dtt.dtt_ctfp, type, *((int *) vp)));
-                       break;
-               case CTF_K_TYPEDEF:
-                       dt_print_type_data(&cbdata, 
ctf_type_reference(cbdatap->dtt.dtt_ctfp,type));
-                       break;
-               case CTF_K_VOLATILE:
-                       if (cbdatap->f_type)
-                               dt_printf(cbdatap->dtp, cbdatap->fp, "volatile 
");
-                       dt_print_type_data(&cbdata, 
ctf_type_reference(cbdatap->dtt.dtt_ctfp,type));
-                       break;
-               case CTF_K_CONST:
-                       if (cbdatap->f_type)
-                               dt_printf(cbdatap->dtp, cbdatap->fp, "const ");
-                       dt_print_type_data(&cbdata, 
ctf_type_reference(cbdatap->dtt.dtt_ctfp,type));
-                       break;
-               case CTF_K_RESTRICT:
-                       if (cbdatap->f_type)
-                               dt_printf(cbdatap->dtp, cbdatap->fp, "restrict 
");
-                       dt_print_type_data(&cbdata, 
ctf_type_reference(cbdatap->dtt.dtt_ctfp,type));
-                       break;
-               default:
-                       break;
-               }
-
-               addr += ssz;
-               cnt++;
-       }
-
-       return (0);
-}
-
-static int
-dt_print_type(dtrace_hdl_t *dtp, FILE *fp, caddr_t addr)
-{
-       caddr_t addrend;
-       char *p;
-       dtrace_typeinfo_t dtt;
-       dt_type_cbdata_t cbdata;
-       int num = 0;
-       int quiet = (dtp->dt_options[DTRACEOPT_QUIET] != DTRACEOPT_UNSET);
-       ssize_t ssz;
-
-       if (!quiet)
-               dt_printf(dtp, fp, "\n");
-
-       /* Get the total number of bytes of data buffered. */
-       size_t nbytes = *((uintptr_t *) addr);
-       addr += sizeof(uintptr_t);
-
-       /*
-        * Get the size of the type so that we can check that it matches
-        * the CTF data we look up and so that we can figure out how many
-        * type elements are buffered.
-        */
-       size_t typs = *((uintptr_t *) addr);
-       addr += sizeof(uintptr_t);
-
-       /*
-        * Point to the type string in the buffer. Get it's string
-        * length and round it up to become the offset to the start
-        * of the buffered type data which we would like to be aligned
-        * for easy access.
-        */
-       char *strp = (char *) addr;
-       int offset = roundup(strlen(strp) + 1, sizeof(uintptr_t));
-
-       /*
-        * The type string might have a format such as 'int [20]'.
-        * Check if there is an array dimension present.
-        */
-       if ((p = strchr(strp, '[')) != NULL) {
-               /* Strip off the array dimension. */
-               *p++ = '\0';
-
-               for (; *p != '\0' && *p != ']'; p++)
-                       num = num * 10 + *p - '0';
-       } else
-               /* No array dimension, so default. */
-               num = 1;
-
-       /* Lookup the CTF type from the type string. */
-       if (dtrace_lookup_by_type(dtp,  DTRACE_OBJ_EVERY, strp, &dtt) < 0)
-               return (-1);
-
-       /* Offset the buffer address to the start of the data... */
-       addr += offset;
-
-       ssz = ctf_type_size(dtt.dtt_ctfp, dtt.dtt_type);
-
-       if (typs != ssz) {
-               printf("Expected type size from buffer (%lu) to match type size 
looked up now (%ld)\n", (u_long) typs, (long) ssz);
-               return (-1);
-       }
-
-       cbdata.dtp = dtp;
-       cbdata.dtt = dtt;
-       cbdata.name = "";
-       cbdata.addr = addr;
-       cbdata.addrend = addr + nbytes;
-       cbdata.indent = 1;
-       cbdata.f_type = 1;
-       cbdata.type_width = 0;
-       cbdata.name_width = 0;
-       cbdata.fp = fp;
-
-       return (dt_print_type_data(&cbdata, dtt.dtt_type));
-}
-
 static int
 dt_print_sym(dtrace_hdl_t *dtp, FILE *fp, const char *format, caddr_t addr)
 {
@@ -1904,6 +1596,16 @@ dt_print_mod(dtrace_hdl_t *dtp, FILE *fp
        return (0);
 }
 
+static int
+dt_print_memory(dtrace_hdl_t *dtp, FILE *fp, caddr_t addr)
+{
+       int quiet = (dtp->dt_options[DTRACEOPT_QUIET] != DTRACEOPT_UNSET);
+       size_t nbytes = *((uintptr_t *) addr);
+
+       return (dt_print_bytes(dtp, fp, addr + sizeof(uintptr_t),
+           nbytes, 50, quiet, 1));
+}
+
 typedef struct dt_normal {
        dtrace_aggvarid_t dtnd_id;
        uint64_t dtnd_normal;
@@ -2644,12 +2346,6 @@ dt_consume_cpu(dtrace_hdl_t *dtp, FILE *
                                goto nextrec;
                        }
 
-                       if (act == DTRACEACT_PRINTT) {
-                               if (dt_print_type(dtp, fp, addr) < 0)
-                                       return (-1);
-                               goto nextrec;
-                       }
-
                        if (DTRACEACT_ISPRINTFLIKE(act)) {
                                void *fmtdata;
                                int (*func)(dtrace_hdl_t *, FILE *, void *,

Modified: head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_errtags.h
==============================================================================
--- head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_errtags.h     Sat Nov 
12 19:05:41 2016        (r308581)
+++ head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_errtags.h     Sat Nov 
12 19:26:12 2016        (r308582)
@@ -265,8 +265,6 @@ typedef enum {
        D_NOREG,                        /* no available internal registers */
        D_PRINTM_ADDR,                  /* printm() memref bad type */
        D_PRINTM_SIZE,                  /* printm() size bad type */
-       D_PRINTT_ADDR,                  /* printt() typeref bad type */
-       D_PRINTT_SIZE                   /* printt() size bad type */
 } dt_errtag_t;
 
 extern const char *dt_errtag(dt_errtag_t);

Modified: head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_impl.h
==============================================================================
--- head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_impl.h        Sat Nov 
12 19:05:41 2016        (r308581)
+++ head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_impl.h        Sat Nov 
12 19:26:12 2016        (r308582)
@@ -488,7 +488,6 @@ struct dtrace_hdl {
 #define        DT_ACT_SETOPT           DT_ACT(28)      /* setopt() action */
 #define        DT_ACT_PRINT            DT_ACT(29)      /* print() action */
 #define        DT_ACT_PRINTM           DT_ACT(30)      /* printm() action */
-#define        DT_ACT_PRINTT           DT_ACT(31)      /* printt() action */
 
 /*
  * Sentinel to tell freopen() to restore the saved stdout.  This must not

Modified: head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c
==============================================================================
--- head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c        Sat Nov 
12 19:05:41 2016        (r308581)
+++ head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c        Sat Nov 
12 19:26:12 2016        (r308582)
@@ -392,8 +392,6 @@ static const dt_ident_t _dtrace_globals[
        &dt_idops_func, "void(@, ...)" },
 { "printm", DT_IDENT_ACTFUNC, 0, DT_ACT_PRINTM, DT_ATTR_STABCMN, DT_VERS_1_0,
        &dt_idops_func, "void(size_t, uintptr_t *)" },
-{ "printt", DT_IDENT_ACTFUNC, 0, DT_ACT_PRINTT, DT_ATTR_STABCMN, DT_VERS_1_0,
-       &dt_idops_func, "void(size_t, uintptr_t *)" },
 { "probefunc", DT_IDENT_SCALAR, 0, DIF_VAR_PROBEFUNC,
        DT_ATTR_STABCMN, DT_VERS_1_0, &dt_idops_type, "string" },
 { "probemod", DT_IDENT_SCALAR, 0, DIF_VAR_PROBEMOD,
@@ -505,8 +503,6 @@ static const dt_ident_t _dtrace_globals[
        &dt_idops_func, "void(@, size_t, ...)" },
 { "trunc", DT_IDENT_ACTFUNC, 0, DT_ACT_TRUNC, DT_ATTR_STABCMN,
        DT_VERS_1_0, &dt_idops_func, "void(...)" },
-{ "typeref", DT_IDENT_FUNC, 0, DIF_SUBR_TYPEREF, DT_ATTR_STABCMN, DT_VERS_1_1,
-       &dt_idops_func, "uintptr_t *(void *, size_t, string, size_t)" },
 { "uaddr", DT_IDENT_ACTFUNC, 0, DT_ACT_UADDR, DT_ATTR_STABCMN,
        DT_VERS_1_2, &dt_idops_func, "_usymaddr(uintptr_t)" },
 { "ucaller", DT_IDENT_SCALAR, 0, DIF_VAR_UCALLER, DT_ATTR_STABCMN,

Modified: head/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c
==============================================================================
--- head/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c        Sat Nov 
12 19:05:41 2016        (r308581)
+++ head/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c        Sat Nov 
12 19:26:12 2016        (r308582)
@@ -6042,22 +6042,6 @@ inetout: regs[rd] = (uintptr_t)end + 1;
                break;
        }
 #endif
-
-       case DIF_SUBR_TYPEREF: {
-               uintptr_t size = 4 * sizeof(uintptr_t);
-               uintptr_t *typeref = (uintptr_t *) 
P2ROUNDUP(mstate->dtms_scratch_ptr, sizeof(uintptr_t));
-               size_t scratch_size = ((uintptr_t) typeref - 
mstate->dtms_scratch_ptr) + size;
-
-               /* address, num_elements, type_str, type_len */
-               typeref[0] = tupregs[0].dttk_value;
-               typeref[1] = tupregs[1].dttk_value;
-               typeref[2] = tupregs[2].dttk_value;
-               typeref[3] = tupregs[3].dttk_value;
-
-               regs[rd] = (uintptr_t) typeref;
-               mstate->dtms_scratch_ptr += scratch_size;
-               break;
-       }
        }
 }
 
@@ -7707,66 +7691,6 @@ dtrace_probe(dtrace_id_t id, uintptr_t a
                                break;
                        }
 
-                       case DTRACEACT_PRINTT: {
-                               /* The DIF returns a 'typeref'. */
-                               uintptr_t *typeref = (uintptr_t *)(uintptr_t) 
val;
-                               char c = '\0' + 1;
-                               size_t s;
-
-                               /*
-                                * Get the type string length and round it
-                                * up so that the data that follows is
-                                * aligned for easy access.
-                                */
-                               size_t typs = strlen((char *) typeref[2]) + 1;
-                               typs = roundup(typs,  sizeof(uintptr_t));
-
-                               /*
-                                *Get the size from the typeref using the
-                                * number of elements and the type size.
-                                */
-                               size = typeref[1] * typeref[3];
-
-                               /*
-                                * Check if the size exceeds the allocated
-                                * buffer size.
-                                */
-                               if (size + typs + 2 * sizeof(uintptr_t) > 
dp->dtdo_rtype.dtdt_size) {
-                                       /* Flag a drop! */
-                                       *flags |= CPU_DTRACE_DROP;
-                               
-                               }
-
-                               /* Store the size in the buffer first. */
-                               DTRACE_STORE(uintptr_t, tomax,
-                                   valoffs, size);
-                               valoffs += sizeof(uintptr_t);
-
-                               /* Store the type size in the buffer. */
-                               DTRACE_STORE(uintptr_t, tomax,
-                                   valoffs, typeref[3]);
-                               valoffs += sizeof(uintptr_t);
-
-                               val = typeref[2];
-
-                               for (s = 0; s < typs; s++) {
-                                       if (c != '\0')
-                                               c = dtrace_load8(val++);
-
-                                       DTRACE_STORE(uint8_t, tomax,
-                                           valoffs++, c);
-                               }
-
-                               /*
-                                * Reset to the memory address rather than
-                                * the typeref array, then let the BYREF
-                                * code below do the work to store the 
-                                * memory data in the buffer.
-                                */
-                               val = typeref[0];
-                               break;
-                       }
-
                        case DTRACEACT_CHILL:
                                if (dtrace_priv_kernel_destructive(state))
                                        dtrace_action_chill(&mstate, val);
@@ -10342,12 +10266,12 @@ dtrace_difo_validate_helper(dtrace_difo_
                            subr == DIF_SUBR_NTOHS ||
                            subr == DIF_SUBR_NTOHL ||
                            subr == DIF_SUBR_NTOHLL ||
-                           subr == DIF_SUBR_MEMREF ||
-#ifndef illumos
-                           subr == DIF_SUBR_MEMSTR ||
-#endif
-                           subr == DIF_SUBR_TYPEREF)
+                           subr == DIF_SUBR_MEMREF)
                                break;
+#ifdef __FreeBSD__
+                       if (subr == DIF_SUBR_MEMSTR)
+                               break;
+#endif
 
                        err += efunc(pc, "invalid subr %u\n", subr);
                        break;
@@ -11647,10 +11571,6 @@ dtrace_ecb_action_add(dtrace_ecb_t *ecb,
                        size = dp->dtdo_rtype.dtdt_size;
                        break;
 
-               case DTRACEACT_PRINTT:
-                       size = dp->dtdo_rtype.dtdt_size;
-                       break;
-
                case DTRACEACT_COMMIT: {
                        dtrace_action_t *act = ecb->dte_action;
 

Modified: head/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h
==============================================================================
--- head/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h   Sat Nov 12 
19:05:41 2016        (r308581)
+++ head/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h   Sat Nov 12 
19:26:12 2016        (r308582)
@@ -308,7 +308,7 @@ typedef enum dtrace_probespec {
 #define        DIF_SUBR_TOUPPER                44
 #define        DIF_SUBR_TOLOWER                45
 #define        DIF_SUBR_MEMREF                 46
-#define        DIF_SUBR_TYPEREF                47
+#define        DIF_SUBR_UNUSED                 47
 #define        DIF_SUBR_SX_SHARED_HELD         48
 #define        DIF_SUBR_SX_EXCLUSIVE_HELD      49
 #define        DIF_SUBR_SX_ISEXCLUSIVE         50
@@ -429,7 +429,6 @@ typedef struct dtrace_difv {
 #define        DTRACEACT_TRACEMEM              6       /* tracemem() action */
 #define        DTRACEACT_TRACEMEM_DYNSIZE      7       /* dynamic tracemem() 
size */
 #define        DTRACEACT_PRINTM                8       /* printm() action 
(BSD) */
-#define        DTRACEACT_PRINTT                9       /* printt() action 
(BSD) */
 
 #define        DTRACEACT_PROC                  0x0100
 #define        DTRACEACT_USTACK                (DTRACEACT_PROC + 1)
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to