On Wed, Nov 27, 2013 at 04:31:48PM +0400, Alexey Samsonov wrote: > LLVM emits just a DW_AT_low_pc ("base address" of a compilation unit). The > standard tells that compilation unit entries "may have" attributes > specifying the > address range, but doesn't tell they are obligatory. > DWARF consumers probably shouldn't rely on their presence.
DWARF is generally full of may have and almost no must have. If the DWARF consumer crashes on absence of some attribute/die etc., that would be of course a consumer's fault. But not being able to symbolize something because the provided DWARF info omits important stuff is not wrong. BTW, libbacktrace also uses symbol table (and for backtrace_syminfo uses that exclusively), so even if it can't symbolize using DWARF info, it should at least symbolize using symbol table (of course inlining info isn't available in that case, nor tail call frames (but libbacktrace doesn't support those yet, only GDB does so far)). Jakub