HomeFreeBSD

libdtrace: Work around a warning from flex

Description

libdtrace: Work around a warning from flex

When compiling dt_lex.l, flex produces warnings of the form:

dt_lex.l:413: warning, trailing context made variable due to preceding '|' action
dt_lex.l:412: warning, dangerous trailing context
dt_lex.l:412: warning, dangerous trailing context

Here, trailing context refers to the use of "$", which expands to "/\n".

The meaning behind these warnings is described in the first two
paragraphs of the flex manual's DEFICIENCIES/BUGS section:

Some trailing context patterns cannot be properly matched and generate
warning messages ("dangerous trailing context").  These are patterns
where the ending of the first part of the rule matches the beginning of
the second part, such as "zx*/xy*", where the 'x*' matches the 'x' at
the beginning of the trailing context.  (Note that the POSIX draft
states that the text matched by such patterns is undefined.)

For some trailing context rules, parts which are actually fixed-length
are not recognized as such, leading to the above mentioned performance
loss.  In particular, parts using '|' or {n} (such as "foo{3}") are
always considered variable-length.

Here, the warnings appear to be bogus in this case. The lexer has no
problem matching either of the referenced patterns, e.g.,

printf("foobar

or

  1. 1 "asdfasdf

Introduce a small amount of code duplication to silence the warning.

MFC after: 2 weeks

(cherry picked from commit 4bddff0833d3efee77a099b3ef447fbae1e63d21)

Details

Provenance
markjAuthored on Jun 1 2024, 3:16 PM
Parents
rGefb1717d21c2: rc.subr(8): MFC: introduce ${name}_offcmd
Branches
Unknown
Tags
Unknown