> extern Elf *dwfl_module_getelf (Dwfl_Module *, GElf_Addr *bias) > __nonnull_attribute__ (1, 2); > > I believe in this case the first argument should not be nonnull. > Since we would expect people to be able to chain for example the > dwfl_addrmodule () call followed by a dwfl_module_getelf () call. > > So the correct fix in that case seems to be the removal of the nonnull > attribute for the first argument and leave the NULL check against mod in > the implementation.
Agreed. > There is one other case where I am not totally sure the nonnull > attribute was intended is for the internal function > __libdw_visit_scopes. It was rewritten from having just one (pre)visit > function to having both a previsit and postvisit callback function. In > all cases we are using it with a previsit one. But maybe the intention > was that you could only supply a postvisit one and keep the previsit one > NULL? That sounds like a generally reasonable thing, and obviously I always did the reasonable thing because I'm so reasonable. But as it is an internal function with few callers, tailoring it slightly to its extant callers is certainly sensible.
