Hi, On Mon, 2022-10-24 at 14:38 -0400, Frank Ch. Eigler via Elfutils-devel wrote: > - not sure I understand why the code worries about dots in or not in > section names. Why not just pass them verbatim throughout the code > base, and not worry about whether or not there's a dot? Does the > ELF standard even require a dot?
I agree that just passing them through as is might be better. The ELF standard doesn't say much about section names, just: Section names with a dot (.) prefix are reserved for the system, although applications may use these sections if their existing meanings are satisfactory. Applications may use names without the prefix to avoid conflicts with system sections. Is/should the section name be URL-encoded? I would drop the maybe_debuginfo_section heuristics. There are some sections like .strtab/.symtab that are probably in the debug file, but might be in the executable. I would assume that a named section can normally be found in the debugfile and only use the executable as fallback. So see if you can find the .debug file, if you can, then look for the section by name. If it isn't SHT_NOBITS you found it. If it is SHT_NOBITS the section should be in the exe. If the section cannot be found by name (in the .debug file) you can stop searching, it also won't be in the exe. If you cannot find the .debug file, or the section was in the .debug file, but had type SHT_NOBITS then search for the exe file and the named section in there. Finally, if the section comes from a file in the cache or if we have to download it in full anyway, then extracting the section into its own file seems slightly wasteful. It would be great if we could just report back "here is the full exe/debug file which does contain the requested section name". But that might make the interface a little ugly. int debuginfod_find_section (debuginfod_client *client, const unsigned char *build_id, int build_id_len, const char *section, char **path, bool *file_is_elf) Maybe that is over-designed to avoid a little bit of disk waste? Cheers, Mark