[DTrace-devel] [PATCH] Do not convert "__" to "-" for stapsdt provider names

Kris Van Hees kris.van.hees at oracle.com
Thu Nov 20 20:38:26 UTC 2025


On Thu, Nov 20, 2025 at 01:53:11PM -0500, eugene.loh at oracle.com wrote:
> From: Eugene Loh <eugene.loh at oracle.com>
> 
> DTrace converts "__" to "-" for USDT probe names, but not for functions,
> modules, or providers.  We document this behavior.
> 
> We provide the same conversion for stapsdt probe names, but we also
> convert stapsdt provider names and in commit 22932a9875
> ("selftests/usdt: add is-enabled stapsdt tests using semaphores") we
> test that conversion.
> 
> SystemTap performs the conversion for the probe name but not for the
> provider name.
> 
> Remove the conversion for stapsdt provider names.

I would rewrite this commit comment...

	DTrace provides "--" to "_" conversioon for USDT probe names.

	Commit 4f58b864a ("support stapsdt ELF-note-defined static probes") 
	included "__" to "-" conversion for provider names and probe names.
	Commit 22932a9875
	("selftests/usdt: add is-enabled stapsdt tests using semaphores")
	adds tests for both conversions.

	Since SystenTap itself also only provides "__" to "-" conversion for
	probe names, remove the conversion for stapsdt provider names.

> 
> Signed-off-by: Eugene Loh <eugene.loh at oracle.com>
> ---
>  libdtrace/dt_pid.c                            |  1 -
>  .../usdt/tst.stapsdt-notes-isenabled.r        | 24 ++++----
>  .../usdt/tst.stapsdt-notes-isenabled.r.p      |  4 ++
>  .../usdt/tst.stapsdt-notes-isenabled.sh       | 61 +++++++++++--------
>  4 files changed, 52 insertions(+), 38 deletions(-)
>  create mode 100755 test/unittest/usdt/tst.stapsdt-notes-isenabled.r.p
> 
> diff --git a/libdtrace/dt_pid.c b/libdtrace/dt_pid.c
> index 703be112e..39714bdb2 100644
> --- a/libdtrace/dt_pid.c
> +++ b/libdtrace/dt_pid.c
> @@ -1360,7 +1360,6 @@ dt_stapsdt_parse(dtrace_hdl_t *dtp, dt_proc_t *dpr, dtrace_probedesc_t *pdp,
>  		if (strlen(prv) >= nhdr.n_descsz)
>  			continue;
>  		strncpy(prvname, prv, sizeof(prvname));
> -		(void) strhyphenate(prvname);
>  		prb = prv + strlen(prv) + 1;
>  		if (strlen(prb) >= nhdr.n_descsz)
>  			continue;
> diff --git a/test/unittest/usdt/tst.stapsdt-notes-isenabled.r b/test/unittest/usdt/tst.stapsdt-notes-isenabled.r
> index b088b285f..19924aa6b 100644
> --- a/test/unittest/usdt/tst.stapsdt-notes-isenabled.r
> +++ b/test/unittest/usdt/tst.stapsdt-notes-isenabled.r
> @@ -1,13 +1,13 @@
> -test:main:zero-probe
> -test:main:one-probe:1
> -test:main:two-probe:2:3
> -test:main:three-probe:4:5:7
> -test:main:four-probe:7:8:9:10
> -test:main:five-probe:11:12:13:14:15
> -test:main:six-probe:16:17:18:19:20:21
> -test:main:seven-probe:22:23:24:25:26:27:28
> -test:main:eight-probe:29:30:31:32:33:34:35:36
> -test:main:nine-probe:37:38:39:40:41:42:43:44:45
> -test:main:eleven-probe:56:57:58:59:60:61:62:63:64:65
> -test:main:twelve-probe:67:68:69:70:71:72:73:74:75:76
> +test__prov$pid:test:main:zero-probe
> +test__prov$pid:test:main:one-probe:1
> +test__prov$pid:test:main:two-probe:2:3
> +test__prov$pid:test:main:three-probe:4:5:7
> +test__prov$pid:test:main:four-probe:7:8:9:10
> +test__prov$pid:test:main:five-probe:11:12:13:14:15
> +test__prov$pid:test:main:six-probe:16:17:18:19:20:21
> +test__prov$pid:test:main:seven-probe:22:23:24:25:26:27:28
> +test__prov$pid:test:main:eight-probe:29:30:31:32:33:34:35:36
> +test__prov$pid:test:main:nine-probe:37:38:39:40:41:42:43:44:45
> +test__prov$pid:test:main:eleven-probe:56:57:58:59:60:61:62:63:64:65
> +test__prov$pid:test:main:twelve-probe:67:68:69:70:71:72:73:74:75:76
>  
> diff --git a/test/unittest/usdt/tst.stapsdt-notes-isenabled.r.p b/test/unittest/usdt/tst.stapsdt-notes-isenabled.r.p
> new file mode 100755
> index 000000000..234d1fa55
> --- /dev/null
> +++ b/test/unittest/usdt/tst.stapsdt-notes-isenabled.r.p
> @@ -0,0 +1,4 @@
> +#!/usr/bin/gawk -f
> +
> +# Replace pid in provider name with "$pid" for standardized output.
> +{ sub(/^test__prov[0-9][0-9]*:/, "test__prov$pid:"); print; }
> diff --git a/test/unittest/usdt/tst.stapsdt-notes-isenabled.sh b/test/unittest/usdt/tst.stapsdt-notes-isenabled.sh
> index 322bf53aa..a839d5722 100755
> --- a/test/unittest/usdt/tst.stapsdt-notes-isenabled.sh
> +++ b/test/unittest/usdt/tst.stapsdt-notes-isenabled.sh
> @@ -83,67 +83,78 @@ if [ $? -ne 0 ]; then
>  fi
>  
>  $dtrace -c ./test -qs /dev/stdin <<EOF
> -test-prov\$target:::zero-probe
> +test__prov\$target:::zero-probe
>  {
> -	printf("%s:%s:%s\n", probemod, probefunc, probename);
> +	printf("%s:%s:%s:%s\n", probeprov, probemod, probefunc, probename);
>  }
>  
> -test-prov\$target:::one-probe
> +test__prov\$target:::one-probe
>  {
> -	printf("%s:%s:%s:%li\n", probemod, probefunc, probename, arg0);
> +	printf("%s:%s:%s:%s:%li\n", probeprov, probemod, probefunc, probename,
> +	       arg0);
>  }
>  
> -test-prov\$target:::two-probe
> +test__prov\$target:::two-probe
>  {
> -	printf("%s:%s:%s:%li:%li\n", probemod, probefunc, probename, arg0, arg1);
> +	printf("%s:%s:%s:%s:%li:%li\n",
> +	       probeprov, probemod, probefunc, probename,
> +	       arg0, arg1);
>  }
>  
> -test-prov\$target:::three-probe
> +test__prov\$target:::three-probe
>  {
> -	printf("%s:%s:%s:%li:%li:%li\n", probemod, probefunc, probename, arg0, arg1,
> -	       arg2);
> +	printf("%s:%s:%s:%s:%li:%li:%li\n",
> +	       probeprov, probemod, probefunc, probename,
> +	       arg0, arg1, arg2);
>  }
>  
> -test-prov\$target:::four-probe
> +test__prov\$target:::four-probe
>  {
> -	printf("%s:%s:%s:%li:%li:%li:%li\n", probemod, probefunc, probename, arg0, arg1,
> -	       arg2, arg3);
> +	printf("%s:%s:%s:%s:%li:%li:%li:%li\n",
> +	       probeprov, probemod, probefunc, probename,
> +	       arg0, arg1, arg2, arg3);
>  }
>  
> -test-prov\$target:::five-probe
> +test__prov\$target:::five-probe
>  {
> -	printf("%s:%s:%s:%li:%li:%li:%li:%li\n", probemod, probefunc, probename,
> +	printf("%s:%s:%s:%s:%li:%li:%li:%li:%li\n",
> +	       probeprov, probemod, probefunc, probename,
>  	       arg0, arg1, arg2, arg3, arg4);
>  }
>  
> -test-prov\$target:::six-probe
> +test__prov\$target:::six-probe
>  {
> -	printf("%s:%s:%s:%li:%li:%li:%li:%li:%li\n", probemod, probefunc, probename,
> +	printf("%s:%s:%s:%s:%li:%li:%li:%li:%li:%li\n",
> +	       probeprov, probemod, probefunc, probename,
>  	       arg0, arg1, arg2, arg3, arg4, arg5);
>  }
>  
> -test-prov\$target:::seven-probe
> +test__prov\$target:::seven-probe
>  {
> -	printf("%s:%s:%s:%li:%li:%li:%li:%li:%li:%li\n", probemod, probefunc, probename,
> +	printf("%s:%s:%s:%s:%li:%li:%li:%li:%li:%li:%li\n",
> +	       probeprov, probemod, probefunc, probename,
>  	       arg0, arg1, arg2, arg3, arg4, arg5, arg6);
>  }
>  
> -test-prov\$target:::eight-probe
> +test__prov\$target:::eight-probe
>  {
> -	printf("%s:%s:%s:%li:%li:%li:%li:%li:%li:%li:%li\n", probemod, probefunc, probename,
> +	printf("%s:%s:%s:%s:%li:%li:%li:%li:%li:%li:%li:%li\n",
> +	       probeprov, probemod, probefunc, probename,
>  	       arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7);
>  }
>  
> -test-prov\$target:::nine-probe
> +test__prov\$target:::nine-probe
>  {
> -	printf("%s:%s:%s:%li:%li:%li:%li:%li:%li:%li:%li:%li\n", probemod, probefunc, probename,
> +	printf("%s:%s:%s:%s:%li:%li:%li:%li:%li:%li:%li:%li:%li\n",
> +	       probeprov, probemod, probefunc, probename,
>  	       arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);
>  }
>  
> -test-prov\$target:::eleven-probe,
> -test-prov\$target:::twelve-probe
> +test__prov\$target:::eleven-probe,
> +test__prov\$target:::twelve-probe
>  {
> -	printf("%s:%s:%s:%li:%li:%li:%li:%li:%li:%li:%li:%li:%li\n", probemod, probefunc, probename,
> +	printf("%s:%s:%s:%s:%li:%li:%li:%li:%li:%li:%li:%li:%li:%li\n",
> +	       probeprov, probemod, probefunc, probename,
>  	       arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
>  }
>  EOF
> -- 
> 2.47.3
> 



More information about the DTrace-devel mailing list