[Development report #2] Improve the kinst DTrace provider

From: Christos Margiolis <christos_at_freebsd.org>
Date: Thu, 23 Feb 2023 17:19:08 UTC
The past few days I've been trying figure out how dt_sugar.c in
libdtrace applies transformations to D scripts. I intend on extending
dt_sugar to use parts of the code I've written about in my last
development report [1] to detect inline calls.

For any kinst probe of the forms:

	kinst::func:entry
	kinst::func:return

If <func> isn't an inline call, the probe will be transformed to an FBT
one. For example, `kinst::func:entry` will become `fbt::func:entry`.
This will be done to avoid porting FBT code to kinst.

If <func> is an inline call, the D syntax will be transformed to create
separate kinst probes for each inline call. For example:

	kinst::foo:entry

If foo() is called from functions bar() and baz() at offsets 10 and 20
respectively, dt_sugar will transform `kinst::foo:entry` to:

	kinst::bar:10
	kinst::baz:20

Christos

[1] https://git.sr.ht/~crm/inlinecall