[DTrace-devel] [PATCH] Provide a more consistent implementation of the trace() action
Kris Van Hees
kris.van.hees at oracle.com
Mon May 18 10:44:01 PDT 2020
The trace(n) action in DTrace v1 does not provide a consistent way
for displaying numeric data. Due to the fact that information about
the value is lost (whether it is a signed value), the consumer was
always interpreting the value as a signed value. However, due to
what seems like a bug, values with an integer datatype of less than
64 bits were being interpreted as 32-bit values. Therefore;
(quiet) (non-quiet)
(int8_t)-1 prints as 255 " 255"
(int16_t)-1 prints as 65535 " 65535"
(int32_t)-1 prints as -1 " -1"
(int64_t)-1 prints as -1 " -1"
(uint8_t)0xff prints as 255 " 255"
(uint16_t)0xffff
prints as 65535 " 65535"
(uint32_t)0xffffffff
prints as -1 " -1"
(uint32_t)0x7fffffff
prints as 2147483647
" 2147483647"
(uint64_t)0xffffffffffffffff
prints as -1 " -1"
(uint64_t)0x7fffffffffffffff
prints as 9223372036854775807
" 9223372036854775807"
The output statements fail to specify the correct number of decimal
characters in the output for 32-bit and 64-bit values.
This patch provides a consistent implementation by passing a flag
into the record to indicate whether the value is signed. The output
uses a custom formatting string based on the datatype width and sign
of the value.
With the new implementation:
(quiet) (non-quiet)
(int8_t)-1 prints as -1 " -1"
(int16_t)-1 prints as -1 " -1"
(int32_t)-1 prints as -1 " -1"
(int64_t)-1 prints as -1 " -1"
(uint8_t)0xff prints as 255 " 255"
(uint16_t)0xffff
prints as 65535 " 65535"
(uint32_t)0xffffffff
prints as 4294967295
" 4294967295"
(uint64_t)0xffffffffffffffff
prints as 18446744073709551615
" 18446744073709551615"
This patch also adds unit tests for the various numeric value sizes,
and a variety of error conditions.
Signed-off-by: Kris Van Hees <kris.van.hees at oracle.com>
---
libdtrace/dt_cg.c | 123 ++++++++++++------
libdtrace/dt_consume.c | 64 ++++++++-
.../trace/err.D_PROTO_LEN.missing_arg.d | 20 +++
.../trace/err.D_PROTO_LEN.missing_arg.r | 2 +
.../trace/err.D_PROTO_LEN.too_many_args.d | 20 +++
.../trace/err.D_PROTO_LEN.too_many_args.r | 2 +
test/unittest/actions/trace/err.D_TRACE_DYN.d | 22 ++++
test/unittest/actions/trace/err.D_TRACE_DYN.r | 2 +
.../unittest/actions/trace/err.D_TRACE_VOID.d | 20 +++
.../unittest/actions/trace/err.D_TRACE_VOID.r | 2 +
test/unittest/actions/trace/tst.expr.d | 21 +++
test/unittest/actions/trace/tst.expr.r | 1 +
.../actions/trace/tst.int16_t-quiet.d | 21 +++
.../actions/trace/tst.int16_t-quiet.r | 1 +
test/unittest/actions/trace/tst.int16_t.d | 19 +++
test/unittest/actions/trace/tst.int16_t.r | 5 +
.../actions/trace/tst.int32_t-quiet.d | 21 +++
.../actions/trace/tst.int32_t-quiet.r | 1 +
test/unittest/actions/trace/tst.int32_t.d | 19 +++
test/unittest/actions/trace/tst.int32_t.r | 5 +
.../actions/trace/tst.int64_t-quiet.d | 21 +++
.../actions/trace/tst.int64_t-quiet.r | 1 +
test/unittest/actions/trace/tst.int64_t.d | 19 +++
test/unittest/actions/trace/tst.int64_t.r | 5 +
.../unittest/actions/trace/tst.int8_t-quiet.d | 21 +++
.../unittest/actions/trace/tst.int8_t-quiet.r | 1 +
test/unittest/actions/trace/tst.int8_t.d | 19 +++
test/unittest/actions/trace/tst.int8_t.r | 5 +
test/unittest/actions/trace/tst.str.d | 21 +++
test/unittest/actions/trace/tst.str.r | 1 +
.../actions/trace/tst.uint16_t-quiet.d | 21 +++
.../actions/trace/tst.uint16_t-quiet.r | 1 +
test/unittest/actions/trace/tst.uint16_t.d | 19 +++
test/unittest/actions/trace/tst.uint16_t.r | 5 +
.../actions/trace/tst.uint32_t-quiet.d | 21 +++
.../actions/trace/tst.uint32_t-quiet.r | 1 +
test/unittest/actions/trace/tst.uint32_t.d | 19 +++
test/unittest/actions/trace/tst.uint32_t.r | 5 +
.../actions/trace/tst.uint64_t-quiet.d | 21 +++
.../actions/trace/tst.uint64_t-quiet.r | 1 +
test/unittest/actions/trace/tst.uint64_t.d | 19 +++
test/unittest/actions/trace/tst.uint64_t.r | 5 +
.../actions/trace/tst.uint8_t-quiet.d | 21 +++
.../actions/trace/tst.uint8_t-quiet.r | 1 +
test/unittest/actions/trace/tst.uint8_t.d | 19 +++
test/unittest/actions/trace/tst.uint8_t.r | 5 +
test/unittest/codegen/tst.post_inc_gvar_val.r | 2 +-
test/unittest/codegen/tst.post_inc_lvar_val.r | 2 +-
test/unittest/codegen/tst.post_inc_tvar_val.r | 2 +-
test/unittest/codegen/tst.pre_inc_gvar_val.r | 2 +-
test/unittest/codegen/tst.pre_inc_lvar_val.r | 2 +-
test/unittest/codegen/tst.pre_inc_tvar_val.r | 2 +-
.../codegen/tst.reg_spilling.bug31187562-2.r | 2 +-
.../codegen/tst.reg_spilling.bug31187562.r | 2 +-
54 files changed, 652 insertions(+), 53 deletions(-)
create mode 100644 test/unittest/actions/trace/err.D_PROTO_LEN.missing_arg.d
create mode 100644 test/unittest/actions/trace/err.D_PROTO_LEN.missing_arg.r
create mode 100644 test/unittest/actions/trace/err.D_PROTO_LEN.too_many_args.d
create mode 100644 test/unittest/actions/trace/err.D_PROTO_LEN.too_many_args.r
create mode 100644 test/unittest/actions/trace/err.D_TRACE_DYN.d
create mode 100644 test/unittest/actions/trace/err.D_TRACE_DYN.r
create mode 100644 test/unittest/actions/trace/err.D_TRACE_VOID.d
create mode 100644 test/unittest/actions/trace/err.D_TRACE_VOID.r
create mode 100644 test/unittest/actions/trace/tst.expr.d
create mode 100644 test/unittest/actions/trace/tst.expr.r
create mode 100644 test/unittest/actions/trace/tst.int16_t-quiet.d
create mode 100644 test/unittest/actions/trace/tst.int16_t-quiet.r
create mode 100644 test/unittest/actions/trace/tst.int16_t.d
create mode 100644 test/unittest/actions/trace/tst.int16_t.r
create mode 100644 test/unittest/actions/trace/tst.int32_t-quiet.d
create mode 100644 test/unittest/actions/trace/tst.int32_t-quiet.r
create mode 100644 test/unittest/actions/trace/tst.int32_t.d
create mode 100644 test/unittest/actions/trace/tst.int32_t.r
create mode 100644 test/unittest/actions/trace/tst.int64_t-quiet.d
create mode 100644 test/unittest/actions/trace/tst.int64_t-quiet.r
create mode 100644 test/unittest/actions/trace/tst.int64_t.d
create mode 100644 test/unittest/actions/trace/tst.int64_t.r
create mode 100644 test/unittest/actions/trace/tst.int8_t-quiet.d
create mode 100644 test/unittest/actions/trace/tst.int8_t-quiet.r
create mode 100644 test/unittest/actions/trace/tst.int8_t.d
create mode 100644 test/unittest/actions/trace/tst.int8_t.r
create mode 100644 test/unittest/actions/trace/tst.str.d
create mode 100644 test/unittest/actions/trace/tst.str.r
create mode 100644 test/unittest/actions/trace/tst.uint16_t-quiet.d
create mode 100644 test/unittest/actions/trace/tst.uint16_t-quiet.r
create mode 100644 test/unittest/actions/trace/tst.uint16_t.d
create mode 100644 test/unittest/actions/trace/tst.uint16_t.r
create mode 100644 test/unittest/actions/trace/tst.uint32_t-quiet.d
create mode 100644 test/unittest/actions/trace/tst.uint32_t-quiet.r
create mode 100644 test/unittest/actions/trace/tst.uint32_t.d
create mode 100644 test/unittest/actions/trace/tst.uint32_t.r
create mode 100644 test/unittest/actions/trace/tst.uint64_t-quiet.d
create mode 100644 test/unittest/actions/trace/tst.uint64_t-quiet.r
create mode 100644 test/unittest/actions/trace/tst.uint64_t.d
create mode 100644 test/unittest/actions/trace/tst.uint64_t.r
create mode 100644 test/unittest/actions/trace/tst.uint8_t-quiet.d
create mode 100644 test/unittest/actions/trace/tst.uint8_t-quiet.r
create mode 100644 test/unittest/actions/trace/tst.uint8_t.d
create mode 100644 test/unittest/actions/trace/tst.uint8_t.r
diff --git a/libdtrace/dt_cg.c b/libdtrace/dt_cg.c
index 1fe79e97..3e8adf86 100644
--- a/libdtrace/dt_cg.c
+++ b/libdtrace/dt_cg.c
@@ -242,6 +242,73 @@ dt_cg_spill_load(int reg)
dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, instr));
}
+static int
+dt_cg_store_val(dt_pcb_t *pcb, dt_node_t *dnp, dtrace_actkind_t kind, int act)
+{
+ dtrace_diftype_t vtype;
+ struct bpf_insn instr;
+ dt_irlist_t *dlp = &pcb->pcb_ir;
+ uint_t off;
+
+ dt_cg_node(dnp, &pcb->pcb_ir, pcb->pcb_regs);
+ dt_node_diftype(pcb->pcb_hdl, dnp, &vtype);
+
+ if (dt_node_is_scalar(dnp)) {
+ int sz = 8;
+
+ off = dt_rec_add(pcb->pcb_hdl, dt_cg_fill_gap, kind,
+ vtype.dtdt_size, vtype.dtdt_size, NULL,
+ act);
+
+ switch (vtype.dtdt_size) {
+ case sizeof(uint64_t):
+ sz = BPF_DW;
+ break;
+ case sizeof(uint32_t):
+ sz = BPF_W;
+ break;
+ case sizeof(uint16_t):
+ sz = BPF_H;
+ break;
+ case sizeof(uint8_t):
+ sz = BPF_B;
+ break;
+ }
+
+ instr = BPF_STORE(sz, BPF_REG_9, off, dnp->dn_reg);
+ dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, instr));
+ dt_regset_free(pcb->pcb_regs, dnp->dn_reg);
+
+ return 0;
+#if 0
+ } else if (dt_node_is_string(dnp->dn_args)) {
+ size_t sz = dt_node_type_size(dnp->dn_args);
+
+ /*
+ * Strings are stored as a 64-bit size followed by a character
+ * array. Given that all entries in the output buffer are
+ * aligned at 64-bit boundaries, this guarantees that the
+ * character array is also aligned at a 64-bit boundary.
+ * We will pad the string to a multiple of 8 bytes as well.
+ *
+ * We store the size as two 32-bit values, lower 4 bytes first,
+ * then the higher 4 bytes.
+ */
+ sz = P2ROUNDUP(sz, sizeof(uint64_t));
+ instr = BPF_STORE_IMM(BPF_W, BPF_REG_9, off,
+ sz & ((1UL << 32)-1));
+ dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, instr));
+ instr = BPF_STORE_IMM(BPF_W, BPF_REG_9, off + 4, sz >> 32);
+ dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, instr));
+ dt_regset_free(pcb->pcb_regs, dnp->dn_args->dn_reg);
+
+ return sz + sizeof(uint64_t);
+#endif
+ }
+
+ return -1;
+}
+
static void
dt_cg_act_breakpoint(dt_pcb_t *pcb, dt_node_t *dnp, dtrace_actkind_t kind)
{
@@ -506,61 +573,31 @@ dt_cg_act_system(dt_pcb_t *pcb, dt_node_t *dnp, dtrace_actkind_t kind)
static void
dt_cg_act_trace(dt_pcb_t *pcb, dt_node_t *dnp, dtrace_actkind_t kind)
{
- struct bpf_insn instr;
- dt_irlist_t *dlp = &pcb->pcb_ir;
char n[DT_TYPE_NAMELEN];
- uint_t off;
+ dt_node_t *arg = dnp->dn_args;
+ int type = 0;
- if (dt_node_is_void(dnp->dn_args)) {
- dnerror(dnp->dn_args, D_TRACE_VOID,
+ if (dt_node_is_void(arg)) {
+ dnerror(arg, D_TRACE_VOID,
"trace( ) may not be applied to a void expression\n");
}
- if (dt_node_is_dynamic(dnp->dn_args)) {
- dnerror(dnp->dn_args, D_TRACE_DYN,
+ if (dt_node_is_dynamic(arg)) {
+ dnerror(arg, D_TRACE_DYN,
"trace( ) may not be applied to a dynamic "
"expression\n");
}
- dt_cg_node(dnp->dn_args, &pcb->pcb_ir, pcb->pcb_regs);
-
- if (dt_node_is_scalar(dnp->dn_args)) {
- off = dt_rec_add(pcb->pcb_hdl, dt_cg_fill_gap,
- DTRACEACT_DIFEXPR, sizeof(uint64_t),
- sizeof(uint64_t), NULL, DT_ACT_TRACE);
+ if (arg->dn_flags & DT_NF_REF)
+ type = DT_NF_REF;
+ else if (arg->dn_flags & DT_NF_SIGNED)
+ type = DT_NF_SIGNED;
- instr = BPF_STORE(BPF_DW, BPF_REG_9, off, dnp->dn_args->dn_reg);
- dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, instr));
- dt_regset_free(pcb->pcb_regs, dnp->dn_args->dn_reg);
-#if 0
- } else if (dt_node_is_string(dnp->dn_args)) {
- size_t sz = dt_node_type_size(dnp->dn_args);
-
- /*
- * Strings are stored as a 64-bit size followed by a character
- * array. Given that all entries in the output buffer are
- * aligned at 64-bit boundaries, this guarantees that the
- * character array is also aligned at a 64-bit boundary.
- * We will pad the string to a multiple of 8 bytes as well.
- *
- * We store the size as two 32-bit values, lower 4 bytes first,
- * then the higher 4 bytes.
- */
- sz = P2ROUNDUP(sz, sizeof(uint64_t));
- instr = BPF_STORE_IMM(BPF_W, BPF_REG_9, off,
- sz & ((1UL << 32)-1));
- dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, instr));
- instr = BPF_STORE_IMM(BPF_W, BPF_REG_9, off + 4, sz >> 32);
- dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, instr));
- dt_regset_free(pcb->pcb_regs, dnp->dn_args->dn_reg);
-
- return sz + sizeof(uint64_t);
-#endif
- } else
- dnerror(dnp->dn_args, D_PROTO_ARG,
+ if (dt_cg_store_val(pcb, arg, DTRACEACT_DIFEXPR, type) == -1)
+ dnerror(arg, D_PROTO_ARG,
"trace( ) argument #1 is incompatible with prototype:\n"
"\tprototype: scalar or string\n\t argument: %s\n",
- dt_node_type_name(dnp->dn_args, n, sizeof (n)));
+ dt_node_type_name(arg, n, sizeof(n)));
}
static void
diff --git a/libdtrace/dt_consume.c b/libdtrace/dt_consume.c
index cabef503..6c15b4a5 100644
--- a/libdtrace/dt_consume.c
+++ b/libdtrace/dt_consume.c
@@ -2254,6 +2254,66 @@ nextepid:
return (dt_handle_cpudrop(dtp, cpu, DTRACEDROP_PRINCIPAL, drops));
}
#else
+static int
+dt_print_trace(dtrace_hdl_t *dtp, FILE *fp, dtrace_recdesc_t *rec,
+ caddr_t data, int quiet)
+{
+ /*
+ * String or any other non-numeric data items are printed as a byte
+ * stream.
+ */
+ if (rec->dtrd_arg == DT_NF_REF)
+ return dt_print_bytes(dtp, fp, data, rec->dtrd_size, 33,
+ quiet);
+
+ /*
+ * Differentiate between signed and unsigned numeric values.
+ *
+ * Note:
+ * This is an enhancement of the functionality present in DTrace v1,
+ * where values were anything smaller than a 64-bit value was used as a
+ * 32-bit value. As such, (int8_t)-1 and (int16_t)-1 would be printed
+ * as 255 and 65535, but (int32_t)-1 and (int64_t) would be printed as
+ * -1.
+ */
+ if (rec->dtrd_arg == DT_NF_SIGNED) {
+ switch (rec->dtrd_size) {
+ case sizeof(int64_t):
+ return dt_printf(dtp, fp, quiet ? "%ld" : " %19ld",
+ *(int64_t *)data);
+ case sizeof(int32_t):
+ return dt_printf(dtp, fp, quiet ? "%d" : " %10d",
+ *(int32_t *)data);
+ case sizeof(int16_t):
+ return dt_printf(dtp, fp, quiet ? "%hd" : " %5hd",
+ *(int16_t *)data);
+ case sizeof(int8_t):
+ return dt_printf(dtp, fp, quiet ? "%hhd" : " %3hhd",
+ *(int8_t *)data);
+ }
+ } else {
+ switch (rec->dtrd_size) {
+ case sizeof(uint64_t):
+ return dt_printf(dtp, fp, quiet ? "%lu" : " %20lu",
+ *(uint64_t *)data);
+ case sizeof(uint32_t):
+ return dt_printf(dtp, fp, quiet ? "%u" : " %10u",
+ *(uint32_t *)data);
+ case sizeof(uint16_t):
+ return dt_printf(dtp, fp, quiet ? "%hu" : " %5hu",
+ *(uint16_t *)data);
+ case sizeof(uint8_t):
+ return dt_printf(dtp, fp, quiet ? "%hhu" : " %3hhu",
+ *(uint8_t *)data);
+ }
+ }
+
+ /*
+ * We should never get here, but if we do... print bytes.
+ */
+ return dt_print_bytes(dtp, fp, data, rec->dtrd_size, 33, quiet);
+}
+
static dtrace_workstatus_t
dt_consume_one(dtrace_hdl_t *dtp, FILE *fp, int cpu, char *buf,
dtrace_probedata_t *pdat, dtrace_consume_probe_f *efunc,
@@ -2354,8 +2414,8 @@ dt_consume_one(dtrace_hdl_t *dtp, FILE *fp, int cpu, char *buf,
if (rval != DTRACE_CONSUME_THIS)
return dt_set_errno(dtp, EDT_BADRVAL);
- n = dt_printf(dtp, fp, quiet ? "%lld" : " %16lld",
- *(int64_t *)pdat->dtpda_data);
+ n = dt_print_trace(dtp, fp, rec, pdat->dtpda_data,
+ quiet);
if (n < 0)
return -1;
diff --git a/test/unittest/actions/trace/err.D_PROTO_LEN.missing_arg.d b/test/unittest/actions/trace/err.D_PROTO_LEN.missing_arg.d
new file mode 100644
index 00000000..1f7decae
--- /dev/null
+++ b/test/unittest/actions/trace/err.D_PROTO_LEN.missing_arg.d
@@ -0,0 +1,20 @@
+/*
+ * Oracle Linux DTrace.
+ * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
+ * Licensed under the Universal Permissive License v 1.0 as shown at
+ * http://oss.oracle.com/licenses/upl.
+ */
+
+/*
+ * ASSERTION: THe trace() action takes exactly one argument.
+ *
+ * SECTION: Actions and Subroutines/trace()
+ */
+
+#pragma D option quiet
+
+BEGIN
+{
+ trace();
+ exit(0);
+}
diff --git a/test/unittest/actions/trace/err.D_PROTO_LEN.missing_arg.r b/test/unittest/actions/trace/err.D_PROTO_LEN.missing_arg.r
new file mode 100644
index 00000000..ee9df09e
--- /dev/null
+++ b/test/unittest/actions/trace/err.D_PROTO_LEN.missing_arg.r
@@ -0,0 +1,2 @@
+-- @@stderr --
+dtrace: failed to compile script test/unittest/actions/trace/err.D_PROTO_LEN.missing_arg.d: [D_PROTO_LEN] line 18: trace( ) prototype mismatch: 0 args passed, 1 expected
diff --git a/test/unittest/actions/trace/err.D_PROTO_LEN.too_many_args.d b/test/unittest/actions/trace/err.D_PROTO_LEN.too_many_args.d
new file mode 100644
index 00000000..40b1b3b7
--- /dev/null
+++ b/test/unittest/actions/trace/err.D_PROTO_LEN.too_many_args.d
@@ -0,0 +1,20 @@
+/*
+ * Oracle Linux DTrace.
+ * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
+ * Licensed under the Universal Permissive License v 1.0 as shown at
+ * http://oss.oracle.com/licenses/upl.
+ */
+
+/*
+ * ASSERTION: THe trace() action takes exactly one argument.
+ *
+ * SECTION: Actions and Subroutines/trace()
+ */
+
+#pragma D option quiet
+
+BEGIN
+{
+ trace(1, 2);
+ exit(0);
+}
diff --git a/test/unittest/actions/trace/err.D_PROTO_LEN.too_many_args.r b/test/unittest/actions/trace/err.D_PROTO_LEN.too_many_args.r
new file mode 100644
index 00000000..9eab4b67
--- /dev/null
+++ b/test/unittest/actions/trace/err.D_PROTO_LEN.too_many_args.r
@@ -0,0 +1,2 @@
+-- @@stderr --
+dtrace: failed to compile script test/unittest/actions/trace/err.D_PROTO_LEN.too_many_args.d: [D_PROTO_LEN] line 18: trace( ) prototype mismatch: 2 args passed, 1 expected
diff --git a/test/unittest/actions/trace/err.D_TRACE_DYN.d b/test/unittest/actions/trace/err.D_TRACE_DYN.d
new file mode 100644
index 00000000..60a3fdc7
--- /dev/null
+++ b/test/unittest/actions/trace/err.D_TRACE_DYN.d
@@ -0,0 +1,22 @@
+/*
+ * Oracle Linux DTrace.
+ * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
+ * Licensed under the Universal Permissive License v 1.0 as shown at
+ * http://oss.oracle.com/licenses/upl.
+ */
+/* @@xfail: dtv2 */
+
+/*
+ * ASSERTION: The trace() action does not accept a dynamic expression as value.
+ *
+ * SECTION: Actions and Subroutines/trace()
+ */
+
+#pragma D option quiet
+
+BEGIN
+{
+ @a = count();
+ trace(@a);
+ exit(0);
+}
diff --git a/test/unittest/actions/trace/err.D_TRACE_DYN.r b/test/unittest/actions/trace/err.D_TRACE_DYN.r
new file mode 100644
index 00000000..b655c9b9
--- /dev/null
+++ b/test/unittest/actions/trace/err.D_TRACE_DYN.r
@@ -0,0 +1,2 @@
+-- @@stderr --
+dtrace: failed to compile script test/unittest/actions/trace/err.D_TRACE_DYN.d: [D_TRACE_DYN] line 20: trace( ) may not be applied to a dynamic expression
diff --git a/test/unittest/actions/trace/err.D_TRACE_VOID.d b/test/unittest/actions/trace/err.D_TRACE_VOID.d
new file mode 100644
index 00000000..59f71d0f
--- /dev/null
+++ b/test/unittest/actions/trace/err.D_TRACE_VOID.d
@@ -0,0 +1,20 @@
+/*
+ * Oracle Linux DTrace.
+ * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
+ * Licensed under the Universal Permissive License v 1.0 as shown at
+ * http://oss.oracle.com/licenses/upl.
+ */
+
+/*
+ * ASSERTION: The trace() action does not accept void as a value.
+ *
+ * SECTION: Actions and Subroutines/trace()
+ */
+
+#pragma D option quiet
+
+BEGIN
+{
+ trace(trace(1));
+ exit(0);
+}
diff --git a/test/unittest/actions/trace/err.D_TRACE_VOID.r b/test/unittest/actions/trace/err.D_TRACE_VOID.r
new file mode 100644
index 00000000..932daeaa
--- /dev/null
+++ b/test/unittest/actions/trace/err.D_TRACE_VOID.r
@@ -0,0 +1,2 @@
+-- @@stderr --
+dtrace: failed to compile script test/unittest/actions/trace/err.D_TRACE_VOID.d: [D_TRACE_VOID] line 18: trace( ) may not be applied to a void expression
diff --git a/test/unittest/actions/trace/tst.expr.d b/test/unittest/actions/trace/tst.expr.d
new file mode 100644
index 00000000..1dcc501b
--- /dev/null
+++ b/test/unittest/actions/trace/tst.expr.d
@@ -0,0 +1,21 @@
+/*
+ * Oracle Linux DTrace.
+ * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
+ * Licensed under the Universal Permissive License v 1.0 as shown at
+ * http://oss.oracle.com/licenses/upl.
+ */
+
+/*
+ * ASSERTION: The trace() action accepts an integer expression.
+ *
+ * SECTION: Actions and Subroutines/trace()
+ */
+
+#pragma D option quiet
+
+BEGIN
+{
+ x = 1;
+ trace(++x);
+ exit(0);
+}
diff --git a/test/unittest/actions/trace/tst.expr.r b/test/unittest/actions/trace/tst.expr.r
new file mode 100644
index 00000000..0cfbf088
--- /dev/null
+++ b/test/unittest/actions/trace/tst.expr.r
@@ -0,0 +1 @@
+2
diff --git a/test/unittest/actions/trace/tst.int16_t-quiet.d b/test/unittest/actions/trace/tst.int16_t-quiet.d
new file mode 100644
index 00000000..554310f3
--- /dev/null
+++ b/test/unittest/actions/trace/tst.int16_t-quiet.d
@@ -0,0 +1,21 @@
+/*
+ * Oracle Linux DTrace.
+ * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
+ * Licensed under the Universal Permissive License v 1.0 as shown at
+ * http://oss.oracle.com/licenses/upl.
+ */
+
+/*
+ * ASSERTION: The trace() action prints a signed 16-bit value correctly in
+ * quiet mode.
+ *
+ * SECTION: Actions and Subroutines/trace()
+ */
+
+#pragma D option quiet
+
+BEGIN
+{
+ trace((int16_t)-1);
+ exit(0);
+}
diff --git a/test/unittest/actions/trace/tst.int16_t-quiet.r b/test/unittest/actions/trace/tst.int16_t-quiet.r
new file mode 100644
index 00000000..3a2e3f49
--- /dev/null
+++ b/test/unittest/actions/trace/tst.int16_t-quiet.r
@@ -0,0 +1 @@
+-1
diff --git a/test/unittest/actions/trace/tst.int16_t.d b/test/unittest/actions/trace/tst.int16_t.d
new file mode 100644
index 00000000..72cfb571
--- /dev/null
+++ b/test/unittest/actions/trace/tst.int16_t.d
@@ -0,0 +1,19 @@
+/*
+ * Oracle Linux DTrace.
+ * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
+ * Licensed under the Universal Permissive License v 1.0 as shown at
+ * http://oss.oracle.com/licenses/upl.
+ */
+
+/*
+ * ASSERTION: The trace() action prints a signed 16-bit value correctly in
+ * non-quiet mode.
+ *
+ * SECTION: Actions and Subroutines/trace()
+ */
+
+BEGIN
+{
+ trace((int16_t)-1);
+ exit(0);
+}
diff --git a/test/unittest/actions/trace/tst.int16_t.r b/test/unittest/actions/trace/tst.int16_t.r
new file mode 100644
index 00000000..2a0e21cb
--- /dev/null
+++ b/test/unittest/actions/trace/tst.int16_t.r
@@ -0,0 +1,5 @@
+ FUNCTION:NAME
+ :BEGIN -1
+
+-- @@stderr --
+dtrace: script 'test/unittest/actions/trace/tst.int16_t.d' matched 1 probe
diff --git a/test/unittest/actions/trace/tst.int32_t-quiet.d b/test/unittest/actions/trace/tst.int32_t-quiet.d
new file mode 100644
index 00000000..1e5ac8a3
--- /dev/null
+++ b/test/unittest/actions/trace/tst.int32_t-quiet.d
@@ -0,0 +1,21 @@
+/*
+ * Oracle Linux DTrace.
+ * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
+ * Licensed under the Universal Permissive License v 1.0 as shown at
+ * http://oss.oracle.com/licenses/upl.
+ */
+
+/*
+ * ASSERTION: The trace() action prints a signed 32-bit value correctly in
+ * quiet mode.
+ *
+ * SECTION: Actions and Subroutines/trace()
+ */
+
+#pragma D option quiet
+
+BEGIN
+{
+ trace((int32_t)-1);
+ exit(0);
+}
diff --git a/test/unittest/actions/trace/tst.int32_t-quiet.r b/test/unittest/actions/trace/tst.int32_t-quiet.r
new file mode 100644
index 00000000..3a2e3f49
--- /dev/null
+++ b/test/unittest/actions/trace/tst.int32_t-quiet.r
@@ -0,0 +1 @@
+-1
diff --git a/test/unittest/actions/trace/tst.int32_t.d b/test/unittest/actions/trace/tst.int32_t.d
new file mode 100644
index 00000000..e29b74ef
--- /dev/null
+++ b/test/unittest/actions/trace/tst.int32_t.d
@@ -0,0 +1,19 @@
+/*
+ * Oracle Linux DTrace.
+ * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
+ * Licensed under the Universal Permissive License v 1.0 as shown at
+ * http://oss.oracle.com/licenses/upl.
+ */
+
+/*
+ * ASSERTION: The trace() action prints a signed 32-bit value correctly in
+ * non-quiet mode.
+ *
+ * SECTION: Actions and Subroutines/trace()
+ */
+
+BEGIN
+{
+ trace((int32_t)-1);
+ exit(0);
+}
diff --git a/test/unittest/actions/trace/tst.int32_t.r b/test/unittest/actions/trace/tst.int32_t.r
new file mode 100644
index 00000000..60fd1dd4
--- /dev/null
+++ b/test/unittest/actions/trace/tst.int32_t.r
@@ -0,0 +1,5 @@
+ FUNCTION:NAME
+ :BEGIN -1
+
+-- @@stderr --
+dtrace: script 'test/unittest/actions/trace/tst.int32_t.d' matched 1 probe
diff --git a/test/unittest/actions/trace/tst.int64_t-quiet.d b/test/unittest/actions/trace/tst.int64_t-quiet.d
new file mode 100644
index 00000000..4c41d05b
--- /dev/null
+++ b/test/unittest/actions/trace/tst.int64_t-quiet.d
@@ -0,0 +1,21 @@
+/*
+ * Oracle Linux DTrace.
+ * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
+ * Licensed under the Universal Permissive License v 1.0 as shown at
+ * http://oss.oracle.com/licenses/upl.
+ */
+
+/*
+ * ASSERTION: The trace() action prints a signed 64-bit value correctly in
+ * quiet mode.
+ *
+ * SECTION: Actions and Subroutines/trace()
+ */
+
+#pragma D option quiet
+
+BEGIN
+{
+ trace((int64_t)-1);
+ exit(0);
+}
diff --git a/test/unittest/actions/trace/tst.int64_t-quiet.r b/test/unittest/actions/trace/tst.int64_t-quiet.r
new file mode 100644
index 00000000..3a2e3f49
--- /dev/null
+++ b/test/unittest/actions/trace/tst.int64_t-quiet.r
@@ -0,0 +1 @@
+-1
diff --git a/test/unittest/actions/trace/tst.int64_t.d b/test/unittest/actions/trace/tst.int64_t.d
new file mode 100644
index 00000000..5ce54fb6
--- /dev/null
+++ b/test/unittest/actions/trace/tst.int64_t.d
@@ -0,0 +1,19 @@
+/*
+ * Oracle Linux DTrace.
+ * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
+ * Licensed under the Universal Permissive License v 1.0 as shown at
+ * http://oss.oracle.com/licenses/upl.
+ */
+
+/*
+ * ASSERTION: The trace() action prints a signed 64-bit value correctly in
+ * non-quiet mode.
+ *
+ * SECTION: Actions and Subroutines/trace()
+ */
+
+BEGIN
+{
+ trace((int64_t)-1);
+ exit(0);
+}
diff --git a/test/unittest/actions/trace/tst.int64_t.r b/test/unittest/actions/trace/tst.int64_t.r
new file mode 100644
index 00000000..ed54f7a7
--- /dev/null
+++ b/test/unittest/actions/trace/tst.int64_t.r
@@ -0,0 +1,5 @@
+ FUNCTION:NAME
+ :BEGIN -1
+
+-- @@stderr --
+dtrace: script 'test/unittest/actions/trace/tst.int64_t.d' matched 1 probe
diff --git a/test/unittest/actions/trace/tst.int8_t-quiet.d b/test/unittest/actions/trace/tst.int8_t-quiet.d
new file mode 100644
index 00000000..c2e87b87
--- /dev/null
+++ b/test/unittest/actions/trace/tst.int8_t-quiet.d
@@ -0,0 +1,21 @@
+/*
+ * Oracle Linux DTrace.
+ * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
+ * Licensed under the Universal Permissive License v 1.0 as shown at
+ * http://oss.oracle.com/licenses/upl.
+ */
+
+/*
+ * ASSERTION: The trace() action prints a signed 8-bit value correctly in
+ * quiet mode.
+ *
+ * SECTION: Actions and Subroutines/trace()
+ */
+
+#pragma D option quiet
+
+BEGIN
+{
+ trace((int8_t)-1);
+ exit(0);
+}
diff --git a/test/unittest/actions/trace/tst.int8_t-quiet.r b/test/unittest/actions/trace/tst.int8_t-quiet.r
new file mode 100644
index 00000000..3a2e3f49
--- /dev/null
+++ b/test/unittest/actions/trace/tst.int8_t-quiet.r
@@ -0,0 +1 @@
+-1
diff --git a/test/unittest/actions/trace/tst.int8_t.d b/test/unittest/actions/trace/tst.int8_t.d
new file mode 100644
index 00000000..9700118f
--- /dev/null
+++ b/test/unittest/actions/trace/tst.int8_t.d
@@ -0,0 +1,19 @@
+/*
+ * Oracle Linux DTrace.
+ * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
+ * Licensed under the Universal Permissive License v 1.0 as shown at
+ * http://oss.oracle.com/licenses/upl.
+ */
+
+/*
+ * ASSERTION: The trace() action prints a signed 8-bit value correctly in
+ * non-quiet mode.
+ *
+ * SECTION: Actions and Subroutines/trace()
+ */
+
+BEGIN
+{
+ trace((int8_t)-1);
+ exit(0);
+}
diff --git a/test/unittest/actions/trace/tst.int8_t.r b/test/unittest/actions/trace/tst.int8_t.r
new file mode 100644
index 00000000..46952f41
--- /dev/null
+++ b/test/unittest/actions/trace/tst.int8_t.r
@@ -0,0 +1,5 @@
+ FUNCTION:NAME
+ :BEGIN -1
+
+-- @@stderr --
+dtrace: script 'test/unittest/actions/trace/tst.int8_t.d' matched 1 probe
diff --git a/test/unittest/actions/trace/tst.str.d b/test/unittest/actions/trace/tst.str.d
new file mode 100644
index 00000000..af38cbc7
--- /dev/null
+++ b/test/unittest/actions/trace/tst.str.d
@@ -0,0 +1,21 @@
+/*
+ * Oracle Linux DTrace.
+ * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
+ * Licensed under the Universal Permissive License v 1.0 as shown at
+ * http://oss.oracle.com/licenses/upl.
+ */
+/* @@xfail: dtv2 */
+
+/*
+ * ASSERTION: The trace() action accepts a string argument.
+ *
+ * SECTION: Actions and Subroutines/trace()
+ */
+
+#pragma D option quiet
+
+BEGIN
+{
+ trace("a");
+ exit(0);
+}
diff --git a/test/unittest/actions/trace/tst.str.r b/test/unittest/actions/trace/tst.str.r
new file mode 100644
index 00000000..78981922
--- /dev/null
+++ b/test/unittest/actions/trace/tst.str.r
@@ -0,0 +1 @@
+a
diff --git a/test/unittest/actions/trace/tst.uint16_t-quiet.d b/test/unittest/actions/trace/tst.uint16_t-quiet.d
new file mode 100644
index 00000000..383fe4f1
--- /dev/null
+++ b/test/unittest/actions/trace/tst.uint16_t-quiet.d
@@ -0,0 +1,21 @@
+/*
+ * Oracle Linux DTrace.
+ * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
+ * Licensed under the Universal Permissive License v 1.0 as shown at
+ * http://oss.oracle.com/licenses/upl.
+ */
+
+/*
+ * ASSERTION: The trace() action prints a unsigned 16-bit value correctly in
+ * quiet mode.
+ *
+ * SECTION: Actions and Subroutines/trace()
+ */
+
+#pragma D option quiet
+
+BEGIN
+{
+ trace((uint16_t)-1);
+ exit(0);
+}
diff --git a/test/unittest/actions/trace/tst.uint16_t-quiet.r b/test/unittest/actions/trace/tst.uint16_t-quiet.r
new file mode 100644
index 00000000..7a53b356
--- /dev/null
+++ b/test/unittest/actions/trace/tst.uint16_t-quiet.r
@@ -0,0 +1 @@
+65535
diff --git a/test/unittest/actions/trace/tst.uint16_t.d b/test/unittest/actions/trace/tst.uint16_t.d
new file mode 100644
index 00000000..b299f48c
--- /dev/null
+++ b/test/unittest/actions/trace/tst.uint16_t.d
@@ -0,0 +1,19 @@
+/*
+ * Oracle Linux DTrace.
+ * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
+ * Licensed under the Universal Permissive License v 1.0 as shown at
+ * http://oss.oracle.com/licenses/upl.
+ */
+
+/*
+ * ASSERTION: The trace() action prints a unsigned 16-bit value correctly in
+ * non-quiet mode.
+ *
+ * SECTION: Actions and Subroutines/trace()
+ */
+
+BEGIN
+{
+ trace((uint16_t)-1);
+ exit(0);
+}
diff --git a/test/unittest/actions/trace/tst.uint16_t.r b/test/unittest/actions/trace/tst.uint16_t.r
new file mode 100644
index 00000000..34aed4ce
--- /dev/null
+++ b/test/unittest/actions/trace/tst.uint16_t.r
@@ -0,0 +1,5 @@
+ FUNCTION:NAME
+ :BEGIN 65535
+
+-- @@stderr --
+dtrace: script 'test/unittest/actions/trace/tst.uint16_t.d' matched 1 probe
diff --git a/test/unittest/actions/trace/tst.uint32_t-quiet.d b/test/unittest/actions/trace/tst.uint32_t-quiet.d
new file mode 100644
index 00000000..33aa8bdc
--- /dev/null
+++ b/test/unittest/actions/trace/tst.uint32_t-quiet.d
@@ -0,0 +1,21 @@
+/*
+ * Oracle Linux DTrace.
+ * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
+ * Licensed under the Universal Permissive License v 1.0 as shown at
+ * http://oss.oracle.com/licenses/upl.
+ */
+
+/*
+ * ASSERTION: The trace() action prints a unsigned 32-bit value correctly in
+ * quiet mode.
+ *
+ * SECTION: Actions and Subroutines/trace()
+ */
+
+#pragma D option quiet
+
+BEGIN
+{
+ trace((uint32_t)-1);
+ exit(0);
+}
diff --git a/test/unittest/actions/trace/tst.uint32_t-quiet.r b/test/unittest/actions/trace/tst.uint32_t-quiet.r
new file mode 100644
index 00000000..4f6ff861
--- /dev/null
+++ b/test/unittest/actions/trace/tst.uint32_t-quiet.r
@@ -0,0 +1 @@
+4294967295
diff --git a/test/unittest/actions/trace/tst.uint32_t.d b/test/unittest/actions/trace/tst.uint32_t.d
new file mode 100644
index 00000000..6e7dffa5
--- /dev/null
+++ b/test/unittest/actions/trace/tst.uint32_t.d
@@ -0,0 +1,19 @@
+/*
+ * Oracle Linux DTrace.
+ * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
+ * Licensed under the Universal Permissive License v 1.0 as shown at
+ * http://oss.oracle.com/licenses/upl.
+ */
+
+/*
+ * ASSERTION: The trace() action prints a unsigned 32-bit value correctly in
+ * non-quiet mode.
+ *
+ * SECTION: Actions and Subroutines/trace()
+ */
+
+BEGIN
+{
+ trace((uint32_t)-1);
+ exit(0);
+}
diff --git a/test/unittest/actions/trace/tst.uint32_t.r b/test/unittest/actions/trace/tst.uint32_t.r
new file mode 100644
index 00000000..92d2e403
--- /dev/null
+++ b/test/unittest/actions/trace/tst.uint32_t.r
@@ -0,0 +1,5 @@
+ FUNCTION:NAME
+ :BEGIN 4294967295
+
+-- @@stderr --
+dtrace: script 'test/unittest/actions/trace/tst.uint32_t.d' matched 1 probe
diff --git a/test/unittest/actions/trace/tst.uint64_t-quiet.d b/test/unittest/actions/trace/tst.uint64_t-quiet.d
new file mode 100644
index 00000000..2ac71931
--- /dev/null
+++ b/test/unittest/actions/trace/tst.uint64_t-quiet.d
@@ -0,0 +1,21 @@
+/*
+ * Oracle Linux DTrace.
+ * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
+ * Licensed under the Universal Permissive License v 1.0 as shown at
+ * http://oss.oracle.com/licenses/upl.
+ */
+
+/*
+ * ASSERTION: The trace() action prints a unsigned 64-bit value correctly in
+ * quiet mode.
+ *
+ * SECTION: Actions and Subroutines/trace()
+ */
+
+#pragma D option quiet
+
+BEGIN
+{
+ trace((uint64_t)-1);
+ exit(0);
+}
diff --git a/test/unittest/actions/trace/tst.uint64_t-quiet.r b/test/unittest/actions/trace/tst.uint64_t-quiet.r
new file mode 100644
index 00000000..93221a29
--- /dev/null
+++ b/test/unittest/actions/trace/tst.uint64_t-quiet.r
@@ -0,0 +1 @@
+18446744073709551615
diff --git a/test/unittest/actions/trace/tst.uint64_t.d b/test/unittest/actions/trace/tst.uint64_t.d
new file mode 100644
index 00000000..3d3a204f
--- /dev/null
+++ b/test/unittest/actions/trace/tst.uint64_t.d
@@ -0,0 +1,19 @@
+/*
+ * Oracle Linux DTrace.
+ * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
+ * Licensed under the Universal Permissive License v 1.0 as shown at
+ * http://oss.oracle.com/licenses/upl.
+ */
+
+/*
+ * ASSERTION: The trace() action prints a unsigned 64-bit value correctly in
+ * non-quiet mode.
+ *
+ * SECTION: Actions and Subroutines/trace()
+ */
+
+BEGIN
+{
+ trace((uint64_t)-1);
+ exit(0);
+}
diff --git a/test/unittest/actions/trace/tst.uint64_t.r b/test/unittest/actions/trace/tst.uint64_t.r
new file mode 100644
index 00000000..d89e29d1
--- /dev/null
+++ b/test/unittest/actions/trace/tst.uint64_t.r
@@ -0,0 +1,5 @@
+ FUNCTION:NAME
+ :BEGIN 18446744073709551615
+
+-- @@stderr --
+dtrace: script 'test/unittest/actions/trace/tst.uint64_t.d' matched 1 probe
diff --git a/test/unittest/actions/trace/tst.uint8_t-quiet.d b/test/unittest/actions/trace/tst.uint8_t-quiet.d
new file mode 100644
index 00000000..0f5108ec
--- /dev/null
+++ b/test/unittest/actions/trace/tst.uint8_t-quiet.d
@@ -0,0 +1,21 @@
+/*
+ * Oracle Linux DTrace.
+ * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
+ * Licensed under the Universal Permissive License v 1.0 as shown at
+ * http://oss.oracle.com/licenses/upl.
+ */
+
+/*
+ * ASSERTION: The trace() action prints a unsigned 8-bit value correctly in
+ * quiet mode.
+ *
+ * SECTION: Actions and Subroutines/trace()
+ */
+
+#pragma D option quiet
+
+BEGIN
+{
+ trace((uint8_t)-1);
+ exit(0);
+}
diff --git a/test/unittest/actions/trace/tst.uint8_t-quiet.r b/test/unittest/actions/trace/tst.uint8_t-quiet.r
new file mode 100644
index 00000000..ace9d036
--- /dev/null
+++ b/test/unittest/actions/trace/tst.uint8_t-quiet.r
@@ -0,0 +1 @@
+255
diff --git a/test/unittest/actions/trace/tst.uint8_t.d b/test/unittest/actions/trace/tst.uint8_t.d
new file mode 100644
index 00000000..4c9bf269
--- /dev/null
+++ b/test/unittest/actions/trace/tst.uint8_t.d
@@ -0,0 +1,19 @@
+/*
+ * Oracle Linux DTrace.
+ * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
+ * Licensed under the Universal Permissive License v 1.0 as shown at
+ * http://oss.oracle.com/licenses/upl.
+ */
+
+/*
+ * ASSERTION: The trace() action prints a unsigned 8-bit value correctly in
+ * non-quiet mode.
+ *
+ * SECTION: Actions and Subroutines/trace()
+ */
+
+BEGIN
+{
+ trace((uint8_t)-1);
+ exit(0);
+}
diff --git a/test/unittest/actions/trace/tst.uint8_t.r b/test/unittest/actions/trace/tst.uint8_t.r
new file mode 100644
index 00000000..fbd8d4a7
--- /dev/null
+++ b/test/unittest/actions/trace/tst.uint8_t.r
@@ -0,0 +1,5 @@
+ FUNCTION:NAME
+ :BEGIN 255
+
+-- @@stderr --
+dtrace: script 'test/unittest/actions/trace/tst.uint8_t.d' matched 1 probe
diff --git a/test/unittest/codegen/tst.post_inc_gvar_val.r b/test/unittest/codegen/tst.post_inc_gvar_val.r
index dbd0b8da..e6af6ae9 100644
--- a/test/unittest/codegen/tst.post_inc_gvar_val.r
+++ b/test/unittest/codegen/tst.post_inc_gvar_val.r
@@ -1,5 +1,5 @@
FUNCTION:NAME
- :BEGIN 0
+ :BEGIN 0
-- @@stderr --
dtrace: script 'test/unittest/codegen/tst.post_inc_gvar_val.d' matched 1 probe
diff --git a/test/unittest/codegen/tst.post_inc_lvar_val.r b/test/unittest/codegen/tst.post_inc_lvar_val.r
index e6e33861..70eb9da6 100644
--- a/test/unittest/codegen/tst.post_inc_lvar_val.r
+++ b/test/unittest/codegen/tst.post_inc_lvar_val.r
@@ -1,5 +1,5 @@
FUNCTION:NAME
- :BEGIN 0
+ :BEGIN 0
-- @@stderr --
dtrace: script 'test/unittest/codegen/tst.post_inc_lvar_val.d' matched 1 probe
diff --git a/test/unittest/codegen/tst.post_inc_tvar_val.r b/test/unittest/codegen/tst.post_inc_tvar_val.r
index 2d19b737..da3bc51b 100644
--- a/test/unittest/codegen/tst.post_inc_tvar_val.r
+++ b/test/unittest/codegen/tst.post_inc_tvar_val.r
@@ -1,5 +1,5 @@
FUNCTION:NAME
- :BEGIN 0
+ :BEGIN 0
-- @@stderr --
dtrace: script 'test/unittest/codegen/tst.post_inc_tvar_val.d' matched 1 probe
diff --git a/test/unittest/codegen/tst.pre_inc_gvar_val.r b/test/unittest/codegen/tst.pre_inc_gvar_val.r
index 9625b369..243c7089 100644
--- a/test/unittest/codegen/tst.pre_inc_gvar_val.r
+++ b/test/unittest/codegen/tst.pre_inc_gvar_val.r
@@ -1,5 +1,5 @@
FUNCTION:NAME
- :BEGIN 1
+ :BEGIN 1
-- @@stderr --
dtrace: script 'test/unittest/codegen/tst.pre_inc_gvar_val.d' matched 1 probe
diff --git a/test/unittest/codegen/tst.pre_inc_lvar_val.r b/test/unittest/codegen/tst.pre_inc_lvar_val.r
index 1bca8c90..e6166076 100644
--- a/test/unittest/codegen/tst.pre_inc_lvar_val.r
+++ b/test/unittest/codegen/tst.pre_inc_lvar_val.r
@@ -1,5 +1,5 @@
FUNCTION:NAME
- :BEGIN 1
+ :BEGIN 1
-- @@stderr --
dtrace: script 'test/unittest/codegen/tst.pre_inc_lvar_val.d' matched 1 probe
diff --git a/test/unittest/codegen/tst.pre_inc_tvar_val.r b/test/unittest/codegen/tst.pre_inc_tvar_val.r
index d03ec6a2..74ceeb52 100644
--- a/test/unittest/codegen/tst.pre_inc_tvar_val.r
+++ b/test/unittest/codegen/tst.pre_inc_tvar_val.r
@@ -1,5 +1,5 @@
FUNCTION:NAME
- :BEGIN 1
+ :BEGIN 1
-- @@stderr --
dtrace: script 'test/unittest/codegen/tst.pre_inc_tvar_val.d' matched 1 probe
diff --git a/test/unittest/codegen/tst.reg_spilling.bug31187562-2.r b/test/unittest/codegen/tst.reg_spilling.bug31187562-2.r
index 02577a15..8d559a6f 100644
--- a/test/unittest/codegen/tst.reg_spilling.bug31187562-2.r
+++ b/test/unittest/codegen/tst.reg_spilling.bug31187562-2.r
@@ -1,5 +1,5 @@
FUNCTION:NAME
- :BEGIN 87654321 87654322 87654323 123456789 123456789 123456789
+ :BEGIN 87654321 87654322 87654323 123456789 123456789 123456789
-- @@stderr --
dtrace: script 'test/unittest/codegen/tst.reg_spilling.bug31187562-2.d' matched 1 probe
diff --git a/test/unittest/codegen/tst.reg_spilling.bug31187562.r b/test/unittest/codegen/tst.reg_spilling.bug31187562.r
index 78254e1e..355ff2be 100644
--- a/test/unittest/codegen/tst.reg_spilling.bug31187562.r
+++ b/test/unittest/codegen/tst.reg_spilling.bug31187562.r
@@ -1,5 +1,5 @@
FUNCTION:NAME
- :BEGIN 1234
+ :BEGIN 1234
-- @@stderr --
dtrace: script 'test/unittest/codegen/tst.reg_spilling.bug31187562.d' matched 1 probe
--
2.26.0
More information about the DTrace-devel
mailing list