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

Reply via email to