[DTrace-devel] [PATCH 13/17] dtprobed, usdt parser: add support for ELF notes-based USDT

Nick Alcock nick.alcock at oracle.com
Sat Jun 7 18:49:29 UTC 2025


On 7 Jun 2025, Kris Van Hees verbalised:

> Signed-off-by: Kris Van Hees <kris.van.hees at oracle.com>

Reviewed-by: Nick Alcock <nick.alcock at oracle.com>

modulo this piece of utter pedantry:

> +	 *   rc = 1: All blocks written successfully.
> +	 *   rc = 0: Some blocks not written.
> +	 *   rc = -1: An erorr happened (some blocks not written).

Erorr is an erorr!

> +		if (prp->fun != NULL) {
> +			ptp->next = prp->next;
> +			ptp->nargc = prp->nargc;
> +			ptp->nargs = prp->nargs;
> +			ptp->nargsz = prp->nargsz;
> +			ptp->xargc = prp->xargc;
> +			ptp->xargs = prp->xargs;
> +			ptp->xargsz = prp->xargsz;
> +			ptp->xmap = prp->xmap;
> +			prp->next = ptp;
> +			prp->ntp++;
> +		} else {
> +			dt_htab_delete(prbmap, ptp);
> +			dt_htab_insert(pvp->pmap, ptp);
> +			ptp->ntp = 1;
> +			ptp->nargc = prp->nargc;
> +			ptp->nargs = prp->nargs;
> +			ptp->nargsz = prp->nargsz;
> +			ptp->xargc = prp->xargc;
> +			ptp->xargs = prp->xargs;
> +			ptp->xargsz = prp->xargsz;
> +			ptp->xmap = prp->xmap;
> +			pvp->probec++;
> +		}
> +	}
> +
> +prvit = NULL;
> +while ((pvp = dt_htab_next(prvmap, &prvit)) != NULL) {
> +  dt_htab_next_t	*prbit = NULL;
> +  dt_probe_t		*prp;
> +
> +  dt_dbg_usdt("    Provider '%s' with %d probe%s:\n", pvp->name, pvp->probec, pvp->probec == 1 ? "" : "s");
> +  while ((prp = dt_htab_next(pvp->pmap, &prbit)) != NULL) {
> +    dt_dbg_usdt("      Probe %s:%s:%s:%s (off %x)\n", prp->prv, prp->mod, prp->fun ? prp->fun : "", prp->prb, prp->fun ? prp->off : -1);
> +    while ((prp = prp->next) != NULL)
> +      dt_dbg_usdt("        Probe %s:%s:%s:%s (off %x)\n", prp->prv, prp->mod, prp->fun ? prp->fun : "", prp->prb, prp->fun ? prp->off : -1);
> +  }
> +}
> +
> +	/* Emit any provider that has tracepoints. */
> +	prvit = NULL;
> +	while ((pvp = dt_htab_next(prvmap, &prvit)) != NULL) {
> +		if (pvp->probec > 0 && emit_provider(out, dhp, pvp) == -1)
> +			goto err;
> +	}
> +
> +	goto out;

Going by the indentation, the outdented bit looks like debugging code
you either forgot to remove, or forgot to reindent :)

-- 
NULL && (void)



More information about the DTrace-devel mailing list