[DTrace-devel] [PATCH 2/3] usdt parser: handle encoded hyphens
Kris Van Hees
kris.van.hees at oracle.com
Mon Jun 30 23:07:56 UTC 2025
On Mon, Jun 30, 2025 at 05:53:04PM -0400, Eugene Loh via DTrace-devel wrote:
> I would expect a patch like this to have a test to checks the behavior.
It does not need one because we already have one:
test/unittest/usdt/tst.entryreturn.sh
thoug that test does not quite pass yet due to other issues (still xfail).
But that test no longer causes the parser to complain that it cannot find
the probe (and abort). If you prefer I can certainly add a test for this
bug explicitly, though it essentially be quite similar to this case, but
it would be able to capture whether we encounter the parsing error or not
I think, so possible if preferred. But the test mentioned above certainly
cannot ever pass without this patch.
> On 6/24/25 17:40, Kris Van Hees via DTrace-devel wrote:
> > Signed-off-by: Kris Van Hees <kris.van.hees at oracle.com>
> > ---
> > libcommon/usdt_parser_notes.c | 17 +++++++++++++++++
> > 1 file changed, 17 insertions(+)
> >
> > diff --git a/libcommon/usdt_parser_notes.c b/libcommon/usdt_parser_notes.c
> > index fb57f119..d3d744fb 100644
> > --- a/libcommon/usdt_parser_notes.c
> > +++ b/libcommon/usdt_parser_notes.c
> > @@ -471,6 +471,23 @@ parse_usdt_note(int out, dof_helper_t *dhp, usdt_data_t *data,
> > }
> > prbt.off = off;
> > + /*
> > + * If the probe name has encoded hyphens, perform in-place changing
> > + * from "__" into "-".
> > + */
> > + if (strstr(prbt.prb, "__") != NULL) {
> > + char *q;
> > + const char *s = prbt.prb, *e = p;
> > +
> > + for (q = (char *)s; s < e; s++, q++) {
> > + if (s[0] == '_' && s[1] == '_') {
> > + *q = '-';
> > + s++;
> > + } else if (s > q)
> > + *q = *s;
> > + }
> > + }
> > +
> > if ((prp = dt_htab_lookup(prbmap, &prbt)) == NULL) {
> > if ((prp = malloc(sizeof(dt_probe_t))) == NULL) {
> > usdt_error(out, ENOMEM, "Failed to allocate probe");
>
> _______________________________________________
> 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