[DTrace-devel] [PATCH 13/13] Restore error message
Kris Van Hees
kris.van.hees at oracle.com
Tue Dec 8 11:13:32 PST 2020
On Wed, Dec 02, 2020 at 01:54:58PM -0500, eugene.loh at oracle.com wrote:
> From: Eugene Loh <eugene.loh at oracle.com>
>
> An error message was "#if 0"ed out during development,
> producing behavior like this:
> # dtrace -n 'BEGIN {avg(1); exit(0)}'
> dt_cg_node() - FUNC aggregating function avg()
> dtrace: description 'BEGIN ' matched 1 probe
> BPF: call to invalid destination
> BPF: verification time 14 usec
> BPF: stack depth 0+0
> BPF: processed 0 insns (limit 1000000) max_states_per_insn 0 ...
> dtrace: could not enable tracing: BPF program load for 'dtrac...
>
> Restore the message. Add a test.
>
> Signed-off-by: Eugene Loh <eugene.loh at oracle.com>
Reviewed-by: Kris Van Hees <kris.van.hees at oracle.com>
> ---
> libdtrace/dt_cg.c | 4 ----
> test/unittest/aggs/err.D_CG_EXPR.from_expr.d | 21 ++++++++++++++++++++
> 2 files changed, 21 insertions(+), 4 deletions(-)
> create mode 100644 test/unittest/aggs/err.D_CG_EXPR.from_expr.d
>
> diff --git a/libdtrace/dt_cg.c b/libdtrace/dt_cg.c
> index 3a965265..fb67be58 100644
> --- a/libdtrace/dt_cg.c
> +++ b/libdtrace/dt_cg.c
> @@ -2842,16 +2842,12 @@ dt_cg_node(dt_node_t *dnp, dt_irlist_t *dlp, dt_regset_t *drp)
>
> switch (dnp->dn_kind) {
> case DT_NODE_FUNC:
> -if ((idp = dnp->dn_ident)->di_kind != DT_IDENT_FUNC)
> - fprintf(stderr, "%s() - FUNC %s %s()\n", __func__, dt_idkind_name(idp->di_kind), idp->di_name);
> -#if 0
> 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 "
> "context required)\n",
> dt_idkind_name(idp->di_kind), idp->di_name);
> }
> -#endif
>
> dt_cg_arglist(dnp->dn_ident, dnp->dn_args, dlp, drp);
>
> diff --git a/test/unittest/aggs/err.D_CG_EXPR.from_expr.d b/test/unittest/aggs/err.D_CG_EXPR.from_expr.d
> new file mode 100644
> index 00000000..1b176412
> --- /dev/null
> +++ b/test/unittest/aggs/err.D_CG_EXPR.from_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:
> + * Aggregations cannot be called from D expressions.
> + *
> + * SECTION: Aggregations/Clearing aggregations
> + *
> + *
> + */
> +
> +BEGIN
> +{
> + avg(1);
> + exit(0);
> +}
> --
> 2.18.4
>
>
> _______________________________________________
> DTrace-devel mailing list
> DTrace-devel at oss.oracle.com
> https://oss.oracle.com/mailman/listinfo/dtrace-devel
More information about the DTrace-devel
mailing list