Hi - > now that archlinux is supporting debuginfod, I have finally tried it > out. It's such a game changer, many thanks for everyone involved in > working on this!
Our pleasure! > Now to my question: In applications using elfutils, we will now > automatically download debug information when DEBUGINFOD_URLS is > defined. But doing that can take a very long time. (See also the DEBUGINFOD_MAXTIME and DEBUGINFOD_MAXSIZE env vars that can limit this.) > I would like to give the user feedback about this situation and > ideally provide a means to cancel the download. OK. > Looking at `debuginfod.h` I `debuginfod_set_progressfn` which looks > ideal. But how do I access the default `debuginfod_client *` which > seems to exist without me ever calling `debuginfod_begin` anywhere? > Or do I need to create a new client here via `debuginfod_begin`? You do need to create a new client object. You can reuse it. > Then, how would I cancel an ongoing download job? GDB seems to do > that when I press `CTRL+C`, but I do not see any API I could use for > that purpose? See [man debuginfod_set_progressfn]. The return code from that progressfn callback is the ticket. > Finally, what is the recommended way to check whether debuginfod is > available? Should one rely on the build system to discover the > `debuginfod.h` header file, or is some other compile time check > suggested to detect it? [...] To decide whether or not to compile in support, you'd need a compile-time check such as for the debuginfod.h header. (Alternately, you could opt not to compile in support at all, and instead call out to the debuginfod-find(1) program.) To decide at run time whether or not to use it, you could just use the *_find APIs and get back an error code if things are not set up. Or you can check the DEBUGINFOD_URLS for being set/unset before you call in. - FChE