jankratochvil added a comment.

In D65561#1614293 <https://reviews.llvm.org/D65561#1614293>, @labath wrote:

> That would seem to at odds with your " .gnu_debuglink is considered as a 
> flag" assertion, but I am not sure how you came to believe that.


I see I remembered it wrongly, already the initial build-id implementation for 
GDB ignored `.gnu_debuglink` 
<https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commitdiff;h=77069918ac29da24f1ae0e388cef2ea5045397fd>.

> That said, I agree the extra filesystem accesses are bad, and they are a 
> completely unintended side-effect of this patch. If that is the only issue, 
> then I think this can be easily fixed by first checking whether the main 
> object file contains any debug info, and skipping the rest of the lookup in 
> that case.

Yes, this is what GDB does:

    /* If the file has its own symbol tables it has no separate debug
       info.  `.dynsym'/`.symtab' go to MSYMBOLS, `.debug_info' goes to
       SYMTABS/PSYMTABS.  `.gnu_debuglink' may no longer be present with
       `.note.gnu.build-id'.
  ...
    else if (!objfile_has_partial_symbols (objfile)   
        std::string debugfile = find_separate_debug_file_by_buildid (objfile);


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D65561/new/

https://reviews.llvm.org/D65561



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to