diff options
| author | John Sonnenschein <johns@joyent.com> | 2011-11-22 23:47:54 +0000 |
|---|---|---|
| committer | John Sonnenschein <johns@joyent.com> | 2011-11-22 23:47:54 +0000 |
| commit | d640e71cae133c1dc78667f20eee2e9c86e24791 (patch) | |
| tree | 8015b9e7becaa839039e06db905426ec13ebeb70 /usr/src/uts/common/dtrace/dtrace.c | |
| parent | 19f689a83f5c6b6ddb604e980fb8e7b9a5e1a3eb (diff) | |
| parent | efcb7078c2d1766a6682e861629cafbc6724c14a (diff) | |
| download | illumos-joyent-d640e71cae133c1dc78667f20eee2e9c86e24791.tar.gz | |
[OS-714] illumos merge
Merge git://github.com/illumos/illumos-gate
Conflicts:
usr/src/cmd/lp/filter/postscript/dpost/ps_include.c
usr/src/cmd/zfs/zfs_main.c
usr/src/lib/libdtrace/common/dt_program.c
usr/src/lib/libzfs/common/libzfs.h
usr/src/lib/libzfs/common/libzfs_pool.c
usr/src/man/man1m/zfs.1m
usr/src/man/man1m/zpool.1m
usr/src/uts/common/fs/zfs/zfs_ioctl.c
usr/src/uts/common/inet/tcp/tcp_input.c
Diffstat (limited to 'usr/src/uts/common/dtrace/dtrace.c')
| -rw-r--r-- | usr/src/uts/common/dtrace/dtrace.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/usr/src/uts/common/dtrace/dtrace.c b/usr/src/uts/common/dtrace/dtrace.c index eb60c15c04..0f880f2458 100644 --- a/usr/src/uts/common/dtrace/dtrace.c +++ b/usr/src/uts/common/dtrace/dtrace.c @@ -9848,12 +9848,14 @@ dtrace_ecb_action_add(dtrace_ecb_t *ecb, dtrace_actdesc_t *desc) case DTRACEACT_PRINTA: case DTRACEACT_SYSTEM: case DTRACEACT_FREOPEN: + case DTRACEACT_DIFEXPR: /* * We know that our arg is a string -- turn it into a * format. */ if (arg == NULL) { - ASSERT(desc->dtad_kind == DTRACEACT_PRINTA); + ASSERT(desc->dtad_kind == DTRACEACT_PRINTA || + desc->dtad_kind == DTRACEACT_DIFEXPR); format = 0; } else { ASSERT(arg != NULL); @@ -9864,7 +9866,6 @@ dtrace_ecb_action_add(dtrace_ecb_t *ecb, dtrace_actdesc_t *desc) /*FALLTHROUGH*/ case DTRACEACT_LIBACT: - case DTRACEACT_DIFEXPR: case DTRACEACT_TRACEMEM: case DTRACEACT_TRACEMEM_DYNSIZE: if (dp == NULL) @@ -11887,15 +11888,20 @@ dtrace_dof_actdesc(dof_hdr_t *dof, dof_sec_t *sec, dtrace_vstate_t *vstate, (uintptr_t)sec->dofs_offset + offs); kind = (dtrace_actkind_t)desc->dofa_kind; - if (DTRACEACT_ISPRINTFLIKE(kind) && + if ((DTRACEACT_ISPRINTFLIKE(kind) && (kind != DTRACEACT_PRINTA || + desc->dofa_strtab != DOF_SECIDX_NONE)) || + (kind == DTRACEACT_DIFEXPR && desc->dofa_strtab != DOF_SECIDX_NONE)) { dof_sec_t *strtab; char *str, *fmt; uint64_t i; /* - * printf()-like actions must have a format string. + * The argument to these actions is an index into the + * DOF string table. For printf()-like actions, this + * is the format string. For print(), this is the + * CTF type of the expression result. */ if ((strtab = dtrace_dof_sect(dof, DOF_SECT_STRTAB, desc->dofa_strtab)) == NULL) |
