[DTrace-devel] [PATCH 05/12] cc: use dt_node_root() in trampline compilation for clarity

Eugene Loh eugene.loh at oracle.com
Sat Jan 6 06:01:27 UTC 2024


I can't claim to understand this, but looks safe enough.
Reviewed-by: Eugene Loh <eugene.loh at oracle.com>

But couldn't the entire patch be done more simply with this one change:
         dt_setcontext(dtp, yypcb->pcb_pdesc);
-       tnp = dt_node_trampoline(prp);
+       dt_node_root(dt_node_trampoline(prp));
+       tnp = yypcb->pcb_root;
         dt_node_type_assign(tnp, dtp->dt_ints[0].did_ctfp,

That makes the change easier to see and arguably simplifies the 
resulting code.

On 1/5/24 00:27, Kris Van Hees via DTrace-devel wrote:

> Node trees roots are typically (in the parser) registered with the PCB
> for compilation.  While the trampoline generation does not strictly
> need it, it is the proper way to do this.
>
> Signed-off-by: Kris Van Hees <kris.van.hees at oracle.com>
> ---
>   libdtrace/dt_cc.c | 11 +++++------
>   1 file changed, 5 insertions(+), 6 deletions(-)
>
> diff --git a/libdtrace/dt_cc.c b/libdtrace/dt_cc.c
> index 2f9f1574..1e830472 100644
> --- a/libdtrace/dt_cc.c
> +++ b/libdtrace/dt_cc.c
> @@ -1,6 +1,6 @@
>   /*
>    * Oracle Linux DTrace.
> - * Copyright (c) 2008, 2023, Oracle and/or its affiliates. All rights reserved.
> + * Copyright (c) 2008, 2024, 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.
>    */
> @@ -782,7 +782,6 @@ dtrace_difo_t *
>   dt_construct(dtrace_hdl_t *dtp, dt_probe_t *prp, uint_t cflags, dt_ident_t *idp)
>   {
>   	dt_pcb_t	pcb;
> -	dt_node_t	*tnp;
>   	dtrace_difo_t	*dp = NULL;
>   	int		err;
>   
> @@ -836,10 +835,10 @@ dt_construct(dtrace_hdl_t *dtp, dt_probe_t *prp, uint_t cflags, dt_ident_t *idp)
>   		dt_idhash_iter(yypcb->pcb_pragmas, dt_idpragma, NULL);
>   
>   	dt_setcontext(dtp, yypcb->pcb_pdesc);
> -	tnp = dt_node_trampoline(prp);
> -	dt_node_type_assign(tnp, dtp->dt_ints[0].did_ctfp,
> -				 dtp->dt_ints[0].did_type);
> -	dt_cg(yypcb, tnp);
> +	dt_node_root(dt_node_trampoline(prp));
> +	dt_node_type_assign(yypcb->pcb_root, dtp->dt_ints[0].did_ctfp,
> +					     dtp->dt_ints[0].did_type);
> +	dt_cg(yypcb, yypcb->pcb_root);
>   	dp = dt_as(yypcb);
>   
>   	/*



More information about the DTrace-devel mailing list