1
0
mirror of https://github.com/golang/go synced 2024-10-02 16:28:34 -06:00

cmd/link: use . as DW_AT_comp_dir

Go's DWARF usually has absolute paths, in which case DW_AT_comp_dir
doesn't matter. But the -trimpath flag produces relative paths, and
then the spec says that they are relative to _comp_dir.

There's no way to know what the "right" value of _comp_dir is without
more user input, but we can at least leave the paths alone rather than
making them absolute.

After this change, Delve can find sources to a program built with
-gcflags=-trimpath=$(pwd) as long as it's run in the right directory.

Change-Id: I8bc7bed098e352d2c06800bfbbe14e8392e1bbed
Reviewed-on: https://go-review.googlesource.com/78415
Run-TryBot: Heschi Kreinick <heschi@google.com>
Reviewed-by: Russ Cox <rsc@golang.org>
This commit is contained in:
Heschi Kreinick 2017-11-16 16:19:19 -05:00 committed by Russ Cox
parent 556fb16bbd
commit 4a3d408d18

View File

@ -1028,9 +1028,13 @@ func putpclcdelta(linkctxt *Link, ctxt dwarf.Context, s *sym.Symbol, deltaPC uin
*/
func getCompilationDir() string {
// OS X requires this, but it's really none of its business.
// Hard-code "/" for reproducible builds.
return "/"
// OSX requires this be set to something, but it's not easy to choose
// a value. Linking takes place in a temporary directory, so there's
// no point including it here. Paths in the file table are usually
// absolute, in which case debuggers will ignore this value. -trimpath
// produces relative paths, but we don't know where they start, so
// all we can do here is try not to make things worse.
return "."
}
func importInfoSymbol(ctxt *Link, dsym *sym.Symbol) {