• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-12-stable/sys/cddl/contrib/opensolaris/uts/common/dtrace/

Lines Matching refs:dof

9444 	dof_hdr_t *dof = (dof_hdr_t *)daddr;
9459 str_sec = (dof_sec_t *)(uintptr_t)(daddr + dof->dofh_secoff +
9460 provider->dofpv_strtab * dof->dofh_secsize);
9461 prb_sec = (dof_sec_t *)(uintptr_t)(daddr + dof->dofh_secoff +
9462 provider->dofpv_probes * dof->dofh_secsize);
9463 arg_sec = (dof_sec_t *)(uintptr_t)(daddr + dof->dofh_secoff +
9464 provider->dofpv_prargs * dof->dofh_secsize);
9465 off_sec = (dof_sec_t *)(uintptr_t)(daddr + dof->dofh_secoff +
9466 provider->dofpv_proffs * dof->dofh_secsize);
9476 if (dof->dofh_ident[DOF_ID_VERSION] != DOF_VERSION_1 &&
9478 enoff_sec = (dof_sec_t *)(uintptr_t)(daddr + dof->dofh_secoff +
9479 provider->dofpv_prenoffs * dof->dofh_secsize);
9533 dof_hdr_t *dof = (dof_hdr_t *)daddr;
9538 for (i = 0; i < dof->dofh_secnum; i++) {
9540 dof->dofh_secoff + i * dof->dofh_secsize);
9562 dof_hdr_t *dof = (dof_hdr_t *)daddr;
9571 str_sec = (dof_sec_t *)(uintptr_t)(daddr + dof->dofh_secoff +
9572 provider->dofpv_strtab * dof->dofh_secsize);
9590 dof_hdr_t *dof = (dof_hdr_t *)daddr;
9595 for (i = 0; i < dof->dofh_secnum; i++) {
9597 dof->dofh_secoff + i * dof->dofh_secsize);
13165 dtrace_dof_error(dof_hdr_t *dof, const char *str)
13183 dof_hdr_t *dof;
13192 dof = kmem_zalloc(len, KM_SLEEP);
13193 dof->dofh_ident[DOF_ID_MAG0] = DOF_MAG_MAG0;
13194 dof->dofh_ident[DOF_ID_MAG1] = DOF_MAG_MAG1;
13195 dof->dofh_ident[DOF_ID_MAG2] = DOF_MAG_MAG2;
13196 dof->dofh_ident[DOF_ID_MAG3] = DOF_MAG_MAG3;
13198 dof->dofh_ident[DOF_ID_MODEL] = DOF_MODEL_NATIVE;
13199 dof->dofh_ident[DOF_ID_ENCODING] = DOF_ENCODE_NATIVE;
13200 dof->dofh_ident[DOF_ID_VERSION] = DOF_VERSION;
13201 dof->dofh_ident[DOF_ID_DIFVERS] = DIF_VERSION;
13202 dof->dofh_ident[DOF_ID_DIFIREG] = DIF_DIR_NREGS;
13203 dof->dofh_ident[DOF_ID_DIFTREG] = DIF_DTR_NREGS;
13205 dof->dofh_flags = 0;
13206 dof->dofh_hdrsize = sizeof (dof_hdr_t);
13207 dof->dofh_secsize = sizeof (dof_sec_t);
13208 dof->dofh_secnum = 1; /* only DOF_SECT_OPTDESC */
13209 dof->dofh_secoff = sizeof (dof_hdr_t);
13210 dof->dofh_loadsz = len;
13211 dof->dofh_filesz = len;
13212 dof->dofh_pad = 0;
13217 sec = (dof_sec_t *)((uintptr_t)dof + sizeof (dof_hdr_t));
13226 sec->dofs_offset = (uintptr_t)opt - (uintptr_t)dof;
13235 return (dof);
13241 dof_hdr_t hdr, *dof;
13270 dof = kmem_alloc(hdr.dofh_loadsz, KM_SLEEP);
13272 if (copyin((void *)uarg, dof, hdr.dofh_loadsz) != 0 ||
13273 dof->dofh_loadsz != hdr.dofh_loadsz) {
13274 kmem_free(dof, hdr.dofh_loadsz);
13279 return (dof);
13286 dof_hdr_t hdr, *dof;
13320 dof = kmem_alloc(loadsz, KM_SLEEP);
13322 if (proc_readmem(td, p, uarg, dof, loadsz) != loadsz ||
13323 dof->dofh_loadsz != loadsz) {
13324 kmem_free(dof, hdr.dofh_loadsz);
13329 return (dof);
13376 dof_hdr_t *dof;
13379 dof = NULL;
13430 dof = (dof_hdr_t *)dofbuf;
13431 if (bytes < dof->dofh_loadsz) {
13436 if (dof->dofh_loadsz >= dtrace_dof_maxsize) {
13441 return (dof);
13444 free(dof, M_SOLARIS);
13450 dof_hdr_t *dof;
13482 dof = kmem_alloc(loadsz, KM_SLEEP);
13483 bcopy(buf, dof, loadsz);
13486 return (dof);
13491 dtrace_dof_destroy(dof_hdr_t *dof)
13493 kmem_free(dof, dof->dofh_loadsz);
13503 dtrace_dof_sect(dof_hdr_t *dof, uint32_t type, dof_secidx_t i)
13506 ((uintptr_t)dof + dof->dofh_secoff + i * dof->dofh_secsize);
13508 if (i >= dof->dofh_secnum) {
13509 dtrace_dof_error(dof, "referenced section index is invalid");
13514 dtrace_dof_error(dof, "referenced section is not loadable");
13519 dtrace_dof_error(dof, "referenced section is the wrong type");
13527 dtrace_dof_probedesc(dof_hdr_t *dof, dof_sec_t *sec, dtrace_probedesc_t *desc)
13531 uintptr_t daddr = (uintptr_t)dof;
13536 dtrace_dof_error(dof, "invalid probe section");
13541 dtrace_dof_error(dof, "bad alignment in probe description");
13545 if (sec->dofs_offset + sizeof (dof_probedesc_t) > dof->dofh_loadsz) {
13546 dtrace_dof_error(dof, "truncated probe description");
13551 strtab = dtrace_dof_sect(dof, DOF_SECT_STRTAB, probe->dofp_strtab);
13560 dtrace_dof_error(dof, "corrupt probe provider");
13569 dtrace_dof_error(dof, "corrupt probe module");
13577 dtrace_dof_error(dof, "corrupt probe function");
13585 dtrace_dof_error(dof, "corrupt probe name");
13596 dtrace_dof_difo(dof_hdr_t *dof, dof_sec_t *sec, dtrace_vstate_t *vstate,
13602 uintptr_t daddr = (uintptr_t)dof;
13634 dtrace_dof_error(dof, "invalid DIFO header section");
13639 dtrace_dof_error(dof, "bad alignment in DIFO header");
13645 dtrace_dof_error(dof, "bad size in DIFO header");
13660 if ((subsec = dtrace_dof_sect(dof, DOF_SECT_NONE,
13665 dtrace_dof_error(dof, "exceeds maximum size");
13676 dtrace_dof_error(dof, "section not loaded");
13681 dtrace_dof_error(dof, "bad alignment");
13689 dtrace_dof_error(dof, difo[i].msg);
13694 dtrace_dof_error(dof, "entry size mismatch");
13700 dtrace_dof_error(dof, "corrupt entry size");
13721 dtrace_dof_error(dof, "unrecognized DIFO subsection");
13730 dtrace_dof_error(dof, "missing DIF text");
13770 dtrace_dof_predicate(dof_hdr_t *dof, dof_sec_t *sec, dtrace_vstate_t *vstate,
13775 if ((dp = dtrace_dof_difo(dof, sec, vstate, cr)) == NULL)
13782 dtrace_dof_actdesc(dof_hdr_t *dof, dof_sec_t *sec, dtrace_vstate_t *vstate,
13789 uintptr_t daddr = (uintptr_t)dof;
13794 dtrace_dof_error(dof, "invalid action section");
13798 if (sec->dofs_offset + sizeof (dof_actdesc_t) > dof->dofh_loadsz) {
13799 dtrace_dof_error(dof, "truncated action description");
13804 dtrace_dof_error(dof, "bad alignment in action description");
13809 dtrace_dof_error(dof, "section entry size exceeds total size");
13814 dtrace_dof_error(dof, "bad entry size in action description");
13819 dtrace_dof_error(dof, "actions exceed dtrace_actions_max");
13843 if ((strtab = dtrace_dof_sect(dof,
13847 str = (char *)((uintptr_t)dof +
13856 dtrace_dof_error(dof, "bogus format string");
13861 dtrace_dof_error(dof, "empty format string");
13892 if ((difosec = dtrace_dof_sect(dof,
13896 act->dtad_difo = dtrace_dof_difo(dof, difosec, vstate, cr);
13915 dtrace_dof_ecbdesc(dof_hdr_t *dof, dof_sec_t *sec, dtrace_vstate_t *vstate,
13924 dtrace_dof_error(dof, "truncated ECB description");
13929 dtrace_dof_error(dof, "bad alignment in ECB description");
13933 ecb = (dof_ecbdesc_t *)((uintptr_t)dof + (uintptr_t)sec->dofs_offset);
13934 sec = dtrace_dof_sect(dof, DOF_SECT_PROBEDESC, ecb->dofe_probes);
13943 if (dtrace_dof_probedesc(dof, sec, desc) == NULL)
13947 if ((sec = dtrace_dof_sect(dof,
13951 if ((pred = dtrace_dof_predicate(dof, sec, vstate, cr)) == NULL)
13958 if ((sec = dtrace_dof_sect(dof,
13962 ep->dted_action = dtrace_dof_actdesc(dof, sec, vstate, cr);
13984 dtrace_dof_relocate(dof_hdr_t *dof, dof_sec_t *sec, uint64_t ubase,
13987 uintptr_t daddr = (uintptr_t)dof;
13997 dtrace_dof_error(dof, "invalid relocation header");
14001 ss = dtrace_dof_sect(dof, DOF_SECT_STRTAB, dofr->dofr_strtab);
14002 rs = dtrace_dof_sect(dof, DOF_SECT_RELTAB, dofr->dofr_relsec);
14003 ts = dtrace_dof_sect(dof, DOF_SECT_NONE, dofr->dofr_tgtsec);
14011 dtrace_dof_error(dof, "invalid relocation section");
14028 dtrace_dof_error(dof, "bad relocation offset");
14033 dtrace_dof_error(dof, "bad relocation offset");
14038 dtrace_dof_error(dof, "misaligned setx relo");
14049 dtrace_dof_error(dof, "invalid relocation type");
14066 dtrace_dof_slurp(dof_hdr_t *dof, dtrace_vstate_t *vstate, cred_t *cr,
14069 uint64_t len = dof->dofh_loadsz, seclen;
14070 uintptr_t daddr = (uintptr_t)dof;
14076 ASSERT(dof->dofh_loadsz >= sizeof (dof_hdr_t));
14083 if (bcmp(&dof->dofh_ident[DOF_ID_MAG0],
14085 dtrace_dof_error(dof, "DOF magic string mismatch");
14089 if (dof->dofh_ident[DOF_ID_MODEL] != DOF_MODEL_ILP32 &&
14090 dof->dofh_ident[DOF_ID_MODEL] != DOF_MODEL_LP64) {
14091 dtrace_dof_error(dof, "DOF has invalid data model");
14095 if (dof->dofh_ident[DOF_ID_ENCODING] != DOF_ENCODE_NATIVE) {
14096 dtrace_dof_error(dof, "DOF encoding mismatch");
14100 if (dof->dofh_ident[DOF_ID_VERSION] != DOF_VERSION_1 &&
14101 dof->dofh_ident[DOF_ID_VERSION] != DOF_VERSION_2) {
14102 dtrace_dof_error(dof, "DOF version mismatch");
14106 if (dof->dofh_ident[DOF_ID_DIFVERS] != DIF_VERSION_2) {
14107 dtrace_dof_error(dof, "DOF uses unsupported instruction set");
14111 if (dof->dofh_ident[DOF_ID_DIFIREG] > DIF_DIR_NREGS) {
14112 dtrace_dof_error(dof, "DOF uses too many integer registers");
14116 if (dof->dofh_ident[DOF_ID_DIFTREG] > DIF_DTR_NREGS) {
14117 dtrace_dof_error(dof, "DOF uses too many tuple registers");
14122 if (dof->dofh_ident[i] != 0) {
14123 dtrace_dof_error(dof, "DOF has invalid ident byte set");
14128 if (dof->dofh_flags & ~DOF_FL_VALID) {
14129 dtrace_dof_error(dof, "DOF has invalid flag bits set");
14133 if (dof->dofh_secsize == 0) {
14134 dtrace_dof_error(dof, "zero section header size");
14143 seclen = (uint64_t)dof->dofh_secnum * (uint64_t)dof->dofh_secsize;
14145 if (dof->dofh_secoff > len || seclen > len ||
14146 dof->dofh_secoff + seclen > len) {
14147 dtrace_dof_error(dof, "truncated section headers");
14151 if (!IS_P2ALIGNED(dof->dofh_secoff, sizeof (uint64_t))) {
14152 dtrace_dof_error(dof, "misaligned section headers");
14156 if (!IS_P2ALIGNED(dof->dofh_secsize, sizeof (uint64_t))) {
14157 dtrace_dof_error(dof, "misaligned section size");
14166 for (i = 0; i < dof->dofh_secnum; i++) {
14168 (uintptr_t)dof->dofh_secoff + i * dof->dofh_secsize);
14176 dtrace_dof_error(dof, "illegal sections "
14184 dtrace_dof_error(dof, "loadable section with load "
14193 dtrace_dof_error(dof, "bad section alignment");
14198 dtrace_dof_error(dof, "misaligned section");
14204 dtrace_dof_error(dof, "corrupt section header");
14210 dtrace_dof_error(dof, "non-terminating string table");
14220 for (i = 0; i < dof->dofh_secnum; i++) {
14222 (uintptr_t)dof->dofh_secoff + i * dof->dofh_secsize);
14229 if (dtrace_dof_relocate(dof, sec, ubase, udaddr) != 0)
14238 for (i = 0; i < dof->dofh_secnum; i++) {
14240 (uintptr_t)dof->dofh_secoff + i * dof->dofh_secsize);
14245 if ((ep = dtrace_dof_ecbdesc(dof, sec, vstate, cr)) == NULL) {
14262 dtrace_dof_options(dof_hdr_t *dof, dtrace_state_t *state)
14269 for (i = 0; i < dof->dofh_secnum; i++) {
14270 dof_sec_t *sec = (dof_sec_t *)((uintptr_t)dof +
14271 (uintptr_t)dof->dofh_secoff + i * dof->dofh_secsize);
14277 dtrace_dof_error(dof, "bad alignment in "
14283 dtrace_dof_error(dof, "zeroed option entry size");
14288 dtrace_dof_error(dof, "bad option entry size");
14293 desc = (dof_optdesc_t *)((uintptr_t)dof +
14297 dtrace_dof_error(dof, "non-zero option string");
14302 dtrace_dof_error(dof, "unset option");
14308 dtrace_dof_error(dof, "rejected option");
15537 dof_hdr_t *dof;
15538 char c[32]; /* enough for "dof-data-" + digits */
15544 (void) snprintf(c, sizeof (c), "dof-data-%d", i);
15548 if ((dof = dtrace_dof_property(c)) == NULL) {
15563 dtrace_dof_destroy(dof);
15588 dtrace_dof_destroy(dof);
15593 rv = dtrace_dof_slurp(dof, &state->dts_vstate, CRED(),
15597 rv = dtrace_dof_options(dof, state);
15600 dtrace_dof_destroy(dof);
16119 dof_hdr_t *dof;
16121 dof = (dof_hdr_t *)(uintptr_t)hprov->dthp_prov.dofhp_dof;
16122 dtrace_dof_destroy(dof);
16130 dtrace_helper_provider_validate(dof_hdr_t *dof, dof_sec_t *sec)
16132 uintptr_t daddr = (uintptr_t)dof;
16145 dtrace_dof_error(dof, "misaligned section offset");
16154 ((dof->dofh_ident[DOF_ID_VERSION] == DOF_VERSION_1) ?
16157 dtrace_dof_error(dof, "provider section too small");
16162 str_sec = dtrace_dof_sect(dof, DOF_SECT_STRTAB, provider->dofpv_strtab);
16163 prb_sec = dtrace_dof_sect(dof, DOF_SECT_PROBES, provider->dofpv_probes);
16164 arg_sec = dtrace_dof_sect(dof, DOF_SECT_PRARGS, provider->dofpv_prargs);
16165 off_sec = dtrace_dof_sect(dof, DOF_SECT_PROFFS, provider->dofpv_proffs);
16173 if (dof->dofh_ident[DOF_ID_VERSION] != DOF_VERSION_1 &&
16175 (enoff_sec = dtrace_dof_sect(dof, DOF_SECT_PRENOFFS,
16183 dtrace_dof_error(dof, "invalid provider name");
16189 dtrace_dof_error(dof, "invalid entry size");
16194 dtrace_dof_error(dof, "misaligned entry size");
16199 dtrace_dof_error(dof, "invalid entry size");
16204 dtrace_dof_error(dof, "misaligned section offset");
16209 dtrace_dof_error(dof, "invalid entry size");
16225 dtrace_dof_error(dof, "invalid function name");
16230 dtrace_dof_error(dof, "function name too long");
16242 dtrace_dof_error(dof, "invalid probe name");
16254 dtrace_dof_error(dof, "invalid probe offset");
16258 if (dof->dofh_ident[DOF_ID_VERSION] != DOF_VERSION_1) {
16268 dtrace_dof_error(dof, "is-enabled "
16276 dtrace_dof_error(dof, "invalid is-enabled "
16282 dtrace_dof_error(dof, "zero probe and "
16287 dtrace_dof_error(dof, "zero probe offsets");
16295 dtrace_dof_error(dof, "invalid args");
16303 dtrace_dof_error(dof, "bad "
16310 dtrace_dof_error(dof, "native "
16322 dtrace_dof_error(dof, "bad "
16328 dtrace_dof_error(dof, "bad "
16335 dtrace_dof_error(dof, "translated argument "
16349 dtrace_helper_slurp(dof_hdr_t *dof, dof_helper_t *dhp, struct proc *p)
16355 uintptr_t daddr = (uintptr_t)dof;
16364 if ((rv = dtrace_dof_slurp(dof, vstate, NULL, &enab, dhp->dofhp_addr,
16366 dtrace_dof_destroy(dof);
16373 for (i = 0; i < dof->dofh_secnum; i++) {
16375 dof->dofh_secoff + i * dof->dofh_secsize);
16380 if (dtrace_helper_provider_validate(dof, sec) != 0) {
16382 dtrace_dof_destroy(dof);
16414 dtrace_dof_destroy(dof);
16422 dtrace_dof_error(dof, "unmatched helpers");
16434 dhp->dofhp_dof = (uint64_t)(uintptr_t)dof;
16446 dtrace_dof_destroy(dof);
17378 dof_hdr_t *dof = dtrace_dof_copyin(arg, &rval);
17380 if (dof == NULL)
17386 * dtrace_helper_slurp() takes responsibility for the dof --
17389 if ((rval = dtrace_helper_slurp(dof, dhp)) != -1) {
17641 dof_hdr_t *dof;
17658 if ((dof = dtrace_dof_copyin(arg, &rval)) == NULL)
17668 dtrace_dof_destroy(dof);
17672 if (dtrace_dof_slurp(dof, vstate, cr, &enab, 0, B_TRUE) != 0) {
17675 dtrace_dof_destroy(dof);
17679 if ((rval = dtrace_dof_options(dof, state)) != 0) {
17683 dtrace_dof_destroy(dof);
17695 dtrace_dof_destroy(dof);
17890 dof_hdr_t hdr, *dof;
17897 dof = dtrace_dof_create(state);
17900 len = MIN(hdr.dofh_loadsz, dof->dofh_loadsz);
17901 rval = copyout(dof, (void *)arg, len);
17902 dtrace_dof_destroy(dof);