[PATCH] D131749: [MCDwarf] Respect -fdebug-prefix-map= for generated assembly debug info (DWARF v5)

David Blaikie via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 12 11:46:46 PDT 2022


dblaikie accepted this revision.
dblaikie added a comment.
This revision is now accepted and ready to land.

Generally seems good to me, thanks!



================
Comment at: llvm/test/MC/ELF/debug-prefix-map.s:36-38
+## include_directories[0] is relative to DW_AT_comp_dir, so there are two src_root
+## path components. This is not great but acceptable, because the -fdebug-prefix-map=
+## destination path is supposed to be absolute in practice.
----------------
MaskRay wrote:
> dblaikie wrote:
> > I'm not sure this comment is correct (perhaps there's a bug in `llvm-dwarfdump` if both `include_directories[0]` and `DW_AT_comp_dir` are both being joined together). From the DWARFv5 spec:
> > 
> > > The first entry is the current directory of the compilation. Each additional path entry is either a full path name or is relative to the current directory of the compilation.
> > > The line number program assigns a number (index) to each of the directory entries in order, beginning with 0.
> > > Prior to DWARF Version 5, the current directory was not represented in the directories field and a directory index of 0 implicitly referred to that directory as found in the DW_AT_comp_dir attribute of the compilation unit debugging information entry. In DWARF Version 5, the current directory is explicitly present in the directories field. 
> > 
> > 
> > So maybe `llvm-dwarfdump` is incorrectly joining `DW_AT_comp_dir` to `include_directories[0]`?
> > 
> > I'm not sure the suggestion that `-fdebug-prefix-map=` is meant to be absolute is the case in practice - I think Chromium folks implemented it so they could have relative debug info that could be built on a build farm and shared between multiple developers with different source tree locations. So I /think/ it's probably usually relative (the same as Google's use of `-fdebug-compilation-dir=/proc/self/cwd` (which, is, admittedly, technically, an absolute path - but I don't think that's the case for Chromium)... huh, maybe chromium doesn't use prefix map anymore? https://chromium.googlesource.com/chromium/src/+/71df8872b86b4d8260230742cfd3b2e4756f62b5%5E%21/#F0 )
> Groups appear to migrate to `-fdebug-compilation-dir=.` which is more convenient. -fdebug-prefix-map= is used less.
> 
> I'll see about fixing llvm-dwarfdump. Thanks for noticing the bug (which appears in dwarfdump, too).
> Groups appear to migrate to -fdebug-compilation-dir=. which is more convenient. -fdebug-prefix-map= is used less.

Hmm, yeah, seems generally better - though I guess GCC also has `-fdebug-prefix-map=` so maybe it's got enough use we won't be removing it any time soon. Ah well.

> I'll see about fixing llvm-dwarfdump. Thanks for noticing the bug (which appears in dwarfdump, too).

Thanks!


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D131749



More information about the llvm-commits mailing list