Deleted Added
full compact
25,26c25,26
< * Copyright (c) 2011, Joyent Inc. All rights reserved.
< * Copyright (c) 2012 by Delphix. All rights reserved.
---
> * Copyright (c) 2013, Joyent Inc. All rights reserved.
> * Copyright (c) 2013 by Delphix. All rights reserved.
200c200
< const char *p, *q, *end, *obj;
---
> const char *p, *q, *r, *end, *obj;
228,229c228,244
< if (strchr(q + 1, '`') != NULL)
< return (dt_set_errno(dtp, EDT_BADSCOPE));
---
> /*
> * There may be at most three delimeters. The second
> * delimeter is usually used to distinguish the type
> * within a given module, however, there could be a link
> * map id on the scene in which case that delimeter
> * would be the third. We determine presence of the lmid
> * if it rouglhly meets the from LM[0-9]
> */
> if ((r = strchr(q + 1, '`')) != NULL &&
> ((r = strchr(r + 1, '`')) != NULL)) {
> if (strchr(r + 1, '`') != NULL)
> return (dt_set_errno(dtp,
> EDT_BADSCOPE));
> if (q[1] != 'L' || q[2] != 'M')
> return (dt_set_errno(dtp,
> EDT_BADSCOPE));
> }
258a274
> uint_t bflags = tip->dtt_flags;
289a306
> tip->dtt_flags = bflags;
393c410
< dt_node_type_assign(dnp, dnp->dn_ctfp, dnp->dn_type);
---
> dt_node_type_assign(dnp, dnp->dn_ctfp, dnp->dn_type, B_FALSE);
662c679,680
< dt_node_type_assign(dt_node_t *dnp, ctf_file_t *fp, ctf_id_t type)
---
> dt_node_type_assign(dt_node_t *dnp, ctf_file_t *fp, ctf_id_t type,
> boolean_t user)
693a712,714
> if (user)
> dnp->dn_flags |= DT_NF_USERLAND;
>
730a752
> dtrace_hdl_t *dtp = yypcb->pcb_hdl;
742a765,778
> /*
> * Here we have a 32-bit user pointer that is being used with a 64-bit
> * kernel. When we're using it and its tagged as a userland reference --
> * then we need to keep it as a 32-bit pointer. However, if we are
> * referring to it as a kernel address, eg. being used after a copyin()
> * then we need to make sure that we actually return the kernel's size
> * of a pointer, 8 bytes.
> */
> if (ctf_type_kind(dnp->dn_ctfp, base) == CTF_K_POINTER &&
> ctf_getmodel(dnp->dn_ctfp) == CTF_MODEL_ILP32 &&
> !(dnp->dn_flags & DT_NF_USERLAND) &&
> dtp->dt_conf.dtc_ctfmodel == CTF_MODEL_LP64)
> return (8);
>
1229c1265
< dtp->dt_ints[i].did_type);
---
> dtp->dt_ints[i].did_type, B_FALSE);
1264c1300
< dt_node_type_assign(dnp, DT_STR_CTFP(dtp), DT_STR_TYPE(dtp));
---
> dt_node_type_assign(dnp, DT_STR_CTFP(dtp), DT_STR_TYPE(dtp), B_FALSE);
1340d1375
< dt_node_type_assign(dnp, dtt.dtt_ctfp, dtt.dtt_type);
1341a1377,1378
> dt_node_type_assign(dnp, dtt.dtt_ctfp, dtt.dtt_type, dtt.dtt_flags);
>
1584c1621,1622
< dt_node_type_assign(&idn, idp->di_ctfp, idp->di_type);
---
> dt_node_type_assign(&idn, idp->di_ctfp, idp->di_type,
> B_FALSE);
1794c1832
< dt_node_type_assign(&dn, dtt.dtt_ctfp, ctm.ctm_type);
---
> dt_node_type_assign(&dn, dtt.dtt_ctfp, ctm.ctm_type, B_FALSE);
1850c1888,1889
< ctf_lookup_by_name(dtp->dt_ddefs->dm_ctfp, "size_t"));
---
> ctf_lookup_by_name(dtp->dt_ddefs->dm_ctfp, "size_t"),
> B_FALSE);
1928c1967
< DT_INT_CTFP(dtp), DT_INT_TYPE(dtp));
---
> DT_INT_CTFP(dtp), DT_INT_TYPE(dtp), B_FALSE);
1933c1972
< DT_INT_CTFP(dtp), DT_INT_TYPE(dtp));
---
> DT_INT_CTFP(dtp), DT_INT_TYPE(dtp), B_FALSE);
1938c1977
< DT_INT_CTFP(dtp), DT_INT_TYPE(dtp));
---
> DT_INT_CTFP(dtp), DT_INT_TYPE(dtp), B_FALSE);
1955c1994
< DT_INT_CTFP(dtp), DT_INT_TYPE(dtp));
---
> DT_INT_CTFP(dtp), DT_INT_TYPE(dtp), B_FALSE);
1960c1999
< DT_INT_CTFP(dtp), DT_INT_TYPE(dtp));
---
> DT_INT_CTFP(dtp), DT_INT_TYPE(dtp), B_FALSE);
1969c2008
< DT_INT_CTFP(dtp), DT_INT_TYPE(dtp));
---
> DT_INT_CTFP(dtp), DT_INT_TYPE(dtp), B_FALSE);
1978c2017
< DT_INT_CTFP(dtp), DT_INT_TYPE(dtp));
---
> DT_INT_CTFP(dtp), DT_INT_TYPE(dtp), B_FALSE);
1987c2026
< DT_INT_CTFP(dtp), DT_INT_TYPE(dtp));
---
> DT_INT_CTFP(dtp), DT_INT_TYPE(dtp), B_FALSE);
1996c2035
< DT_INT_CTFP(dtp), DT_INT_TYPE(dtp));
---
> DT_INT_CTFP(dtp), DT_INT_TYPE(dtp), B_FALSE);
2237c2276
< dt_node_type_assign(dnp, dtt.dtt_ctfp, dtt.dtt_type);
---
> dt_node_type_assign(dnp, dtt.dtt_ctfp, dtt.dtt_type, B_FALSE);
2392c2431,2432
< dt_node_type_assign(dnp, dtt.dtt_ctfp, dtt.dtt_type);
---
> dt_node_type_assign(dnp, dtt.dtt_ctfp, dtt.dtt_type,
> dtt.dtt_flags);
2423c2463
< dt_node_type_assign(&sn, src.dtt_ctfp, src.dtt_type);
---
> dt_node_type_assign(&sn, src.dtt_ctfp, src.dtt_type, B_FALSE);
2426c2466
< dt_node_type_assign(&dn, dst.dtt_ctfp, dst.dtt_type);
---
> dt_node_type_assign(&dn, dst.dtt_ctfp, dst.dtt_type, B_FALSE);
2672c2712
< DT_DYN_CTFP(dtp), DT_DYN_TYPE(dtp));
---
> DT_DYN_CTFP(dtp), DT_DYN_TYPE(dtp), B_FALSE);
2748c2788,2789
< dt_node_type_assign(dnp, dtt.dtt_ctfp, dtt.dtt_type);
---
> dt_node_type_assign(dnp, dtt.dtt_ctfp, dtt.dtt_type,
> dtt.dtt_flags);
2796c2837
< DT_DYN_CTFP(dtp), DT_DYN_TYPE(dtp));
---
> DT_DYN_CTFP(dtp), DT_DYN_TYPE(dtp), B_FALSE);
2899c2940,2941
< dt_node_type_assign(cp, dtt.dtt_ctfp, dtt.dtt_type);
---
> dt_node_type_assign(cp, dtt.dtt_ctfp, dtt.dtt_type,
> dtt.dtt_flags);
2916c2958,2959
< dnp->dn_ident->di_ctfp, dnp->dn_ident->di_type);
---
> dnp->dn_ident->di_ctfp, dnp->dn_ident->di_type,
> cp->dn_flags & DT_NF_USERLAND);
2936c2979,2980
< dt_node_type_assign(dnp, cp->dn_ctfp, type);
---
> dt_node_type_assign(dnp, cp->dn_ctfp, type,
> cp->dn_flags & DT_NF_USERLAND);
2993c3037,3038
< dt_node_type_assign(dnp, DT_INT_CTFP(dtp), DT_INT_TYPE(dtp));
---
> dt_node_type_assign(dnp, DT_INT_CTFP(dtp), DT_INT_TYPE(dtp),
> B_FALSE);
3026,3029c3071,3072
< dt_node_type_assign(dnp, dtt.dtt_ctfp, dtt.dtt_type);
<
< if (cp->dn_flags & DT_NF_USERLAND)
< dnp->dn_flags |= DT_NF_USERLAND;
---
> dt_node_type_assign(dnp, dtt.dtt_ctfp, dtt.dtt_type,
> cp->dn_flags & DT_NF_USERLAND);
3044c3087,3088
< ctf_lookup_by_name(dtp->dt_ddefs->dm_ctfp, "size_t"));
---
> ctf_lookup_by_name(dtp->dt_ddefs->dm_ctfp, "size_t"),
> B_FALSE);
3054c3098,3099
< dt_node_type_assign(dnp, DT_STR_CTFP(dtp), DT_STR_TYPE(dtp));
---
> dt_node_type_assign(dnp, DT_STR_CTFP(dtp), DT_STR_TYPE(dtp),
> cp->dn_flags & DT_NF_USERLAND);
3247c3292,3293
< dt_node_type_assign(dnp, DT_INT_CTFP(dtp), DT_INT_TYPE(dtp));
---
> dt_node_type_assign(dnp, DT_INT_CTFP(dtp), DT_INT_TYPE(dtp),
> B_FALSE);
3291c3337,3338
< dt_node_type_assign(rp, lp->dn_ctfp, lp->dn_type);
---
> dt_node_type_assign(rp, lp->dn_ctfp, lp->dn_type,
> B_FALSE);
3323c3370,3371
< dt_node_type_assign(dnp, DT_INT_CTFP(dtp), DT_INT_TYPE(dtp));
---
> dt_node_type_assign(dnp, DT_INT_CTFP(dtp), DT_INT_TYPE(dtp),
> B_FALSE);
3371c3419
< dt_node_type_assign(dnp, ctfp, type);
---
> dt_node_type_assign(dnp, ctfp, type, B_FALSE);
3512c3560
< dt_node_type_assign(lp, ctfp, type);
---
> dt_node_type_assign(lp, ctfp, type, B_FALSE);
3726c3774
< dt_node_type_assign(dnp, ctfp, m.ctm_type);
---
> dt_node_type_assign(dnp, ctfp, m.ctm_type, B_FALSE);
3852c3900,3901
< dt_node_type_assign(dnp, DT_DYN_CTFP(dtp), DT_DYN_TYPE(dtp));
---
> dt_node_type_assign(dnp, DT_DYN_CTFP(dtp), DT_DYN_TYPE(dtp),
> B_FALSE);
4017c4066
< dt_node_type_assign(dnp, ctfp, type);
---
> dt_node_type_assign(dnp, ctfp, type, B_FALSE);
4050c4099,4100
< dt_node_type_assign(dnp, DT_DYN_CTFP(dtp), DT_DYN_TYPE(dtp));
---
> dt_node_type_assign(dnp, DT_DYN_CTFP(dtp), DT_DYN_TYPE(dtp),
> B_FALSE);
4252c4302,4303
< dt_node_type_assign(mnp, dxp->dx_dst_ctfp, ctm.ctm_type);
---
> dt_node_type_assign(mnp, dxp->dx_dst_ctfp, ctm.ctm_type,
> B_FALSE);
4271c4322
< dt_node_type_assign(dnp, DT_DYN_CTFP(dtp), DT_DYN_TYPE(dtp));
---
> dt_node_type_assign(dnp, DT_DYN_CTFP(dtp), DT_DYN_TYPE(dtp), B_FALSE);
4564c4615,4617
< tp->dtdt_flags = (dnp->dn_flags & DT_NF_REF) ? DIF_TF_BYREF : 0;
---
> tp->dtdt_flags = (dnp->dn_flags & DT_NF_REF) ?
> (dnp->dn_flags & DT_NF_USERLAND) ? DIF_TF_BYUREF :
> DIF_TF_BYREF : 0;