[PATCH] D131749: [MCDwarf] Respect -fdebug-prefix-map= for generated assembly debug info (DWARF v5)
Fangrui Song via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 12 11:54:07 PDT 2022
MaskRay added inline comments.
================
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.
----------------
dblaikie wrote:
> 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!
Amend to why -fdebug-compilation-dir=. is preferred: when two distributed build harm users check out the build in different local working directories, the build can be shared because the compiler options are exactly the same (local determinism).
With -fdebug-prefix-map, the two builds will need different options.
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