Re: [RFC PATCH 32/77] dtc-parser: Introduce last_header_flags
Herve Codina <[email protected]> Mon, 19 Jan 2026 15:11:45 +0100
| Newsgroups | org.kernel.vger.devicetree-spec,org.kernel.vger.devicetree-compiler,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel |
|---|---|
| Organization | Bootlin |
| Message-ID | <[email protected]> |
On Thu, 15 Jan 2026 17:31:24 +1100 David Gibson <[email protected]> wrote: > On Mon, Jan 12, 2026 at 03:19:22PM +0100, Herve Codina wrote: > > The parser needs to get header flags value in different places. > > > > It relies on the fact that the rule used to parse the dts file is always > > headers memreserves devicetree > > > > With that only rule to parse the file, it uses '$<flags>-1' construct to > > get the flags value. > > > > With the future introduction of import symbols parsing, this rule will > > change and the parser couldn't rely anymore on '$<flags>-1' to get flags > > value. Indeed, import symbols parsing will add a new optional symbol in > > this rule leading to two possible rules (with and without the new > > symbol) to parse the source file. > > > > Introduce the last_header_flags variable to explicitly keep track of > > flags while also being agnostic of the rule structure and use this new > > variable instead of '$<flags>-1'. > > I'm not sure this approach is safe: I'm not sure bison guarantees that > semantic rules will always be executed in the same order, so using > global variables is risky. if rules were not executed in the same order '$<flags>-1' construct would not work. The problem is not the order. I don't think the order will change. The problem is related to the number of items on stack. With import symbols, that the stack will be: header memreserved devicetree or header memreserved importsyms devicetree Using '$-1' will no more be possible. Indeed, '$-1' from the devicetree rule will reference 'header' in one case and 'memreserved' in the other case. Without a global variable, I don't know how to reference 'header' (or flags value) in all cases. Any better ideas are welcome. Best regards, Hervé