Re: [RFC PATCH 32/77] dtc-parser: Introduce last_header_flags
David Gibson <[email protected]> Wed, 21 Jan 2026 13:37:52 +1100
| Newsgroups | org.kernel.vger.devicetree-spec,org.kernel.vger.devicetree-compiler,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <aXA8AOuucE5JdJCW@zatzit> |
--nURbXyNkcTJCgOkG Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Mon, Jan 19, 2026 at 03:11:45PM +0100, Herve Codina wrote: > On Thu, 15 Jan 2026 17:31:24 +1100 > David Gibson <[email protected]> wrote: >=20 > > On Mon, Jan 12, 2026 at 03:19:22PM +0100, Herve Codina wrote: > > > The parser needs to get header flags value in different places. > > >=20 > > > It relies on the fact that the rule used to parse the dts file is alw= ays > > > headers memreserves devicetree > > >=20 > > > With that only rule to parse the file, it uses '$<flags>-1' construct= to > > > get the flags value. > > >=20 > > > With the future introduction of import symbols parsing, this rule will > > > change and the parser couldn't rely anymore on '$<flags>-1' to get fl= ags > > > 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. > > >=20 > > > 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'. =20 > >=20 > > 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. >=20 > if rules were not executed in the same order '$<flags>-1' construct would > not work. Uhh.. I'm pretty sure $<flags>-1 only depends on the parse tree structure, not the order in which the actual semantic rule code fragments run. > 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. >=20 > With import symbols, that the stack will be: > header memreserved devicetree > or > header memreserved importsyms devicetree >=20 > 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. >=20 > Without a global variable, I don't know how to reference 'header' (or fla= gs > value) in all cases. >=20 > Any better ideas are welcome. Ok, I'll try to look into it and see what I can come up with. --=20 David Gibson (he or they) | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you, not the other way | around. http://www.ozlabs.org/~dgibson --nURbXyNkcTJCgOkG Content-Type: application/pgp-signature; name=signature.asc -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEO+dNsU4E3yXUXRK2zQJF27ox2GcFAmlwO/AACgkQzQJF27ox 2Gf4zA//ecAeKaXiIbLxczvbxzNwZeSNtvGNo8SZeo5/LDe+8qNrYwaRVmJKqQHD LFbL+RLBjdkIgEajYvPSgEGqQ7pkYmy034t53HogY2H5n2oqw0Y7neiyQ0brdIry nHde0wqi1NBH1iZmImGeEG0Sul17WEBmgFLZWjsyf7uE8AiiegNh6DDH3HY5YBno cTwoMgAcjwcb1WUcez2fcRl34RKz2yahC2tPvwE4fXwbuFATbqJRTQ5eEbYKO55h vzb575T9YvH3u2NThVxVcmzvuhwOd6CHTi0oyM+gHCDzVK8ZWx89vvgNipaaCSeG /a+s7RGOzvMfJvx0fhH6xZ2vwRsOtHej++w5/EBxunSlMXHUt+1MYRnHaYRD12OS m5n2Xx1uLN6IVoTmlATxABiqCacfKGPtOVYoGd1KoiXMu1ZN+L7ELWNkbRGem4c/ NjNDLLBOguRKX0RDVeviVjYbR24dMn8/Ug6ZOzlvf4SpYCxOJTFlEao28sQUrUbi 3iol12958J5GO8Lu0egRJdq/ztzRCS2DeOyhvHDO+6mspm/OQTw1ex9YXDD8nrL9 uYKBHxq+X2an4SJEVfSQmH55Px5/S/peQxCzS31xdMi1N07Yfn6Be4z1mYJRCbdE kMDsLDDh1AHO00AKaM6SYxCvhnaD8sHvx0NRgGqQ9WM30KyoGhU= =VXLW -----END PGP SIGNATURE----- --nURbXyNkcTJCgOkG--