On Wed, Aug 28, 2024 at 02:31:05PM +0200, Petr Pavlu wrote: > On 8/26/24 20:47, Sami Tolvanen wrote: > > How do you propose using the function? This loop goes through multiple > > input files, should we need them, and we iterate through all the CUs > > in process_modules. > > I was thinking it could be possible to replace the code to traverse > modules and their their CUs, that is functions process_modules() and > process_module(), with dwfl_nextcu(). However, I now notice that more > work is added in subsequent patches to process_modules() so this > wouldn't quite work. > > I would then only suggest to change some function names in the current > code. Function process_modules() is a callback to process a single > module and so it would be better to name it process_module(). The > present function process_module() actually processes a compilation unit > DIE so I would rename it to something like process_cu(). Sure, sounds reasonable. I'll rename these. > On 8/15/24 19:39, Sami Tolvanen wrote: > > +int process_module(Dwfl_Module *mod, Dwarf *dbg, Dwarf_Die *cudie) > > +{ > > + struct state state = { .mod = mod, .dbg = dbg }; > > + > > + return check(process_die_container( > > + &state, cudie, process_exported_symbols, match_all)); > > +} > > Mostly a minor suggestion too.. Looking at the entire series, state.mod > ends up unused and state.dbg is only used in process_cached() where it > could be possibly replaced by doing dwarf_cu_getdwarf(die->cu)? Ah yes, mod was was leftover from previous refactoring. I'll clean this up. > Removing these two members from the state struct would then allow to > instantiate a new state in process_exported_symbols() for each processed > symbol. That looks cleaner than changing state.sym and resetting some > parts of the state as the function walks over the exported symbols. Agreed, that makes sense. Sami