]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: fix TestCgoConsistentResults when using clang instead of gcc
authorBrad Fitzpatrick <bradfitz@golang.org>
Tue, 25 Apr 2017 03:16:59 +0000 (03:16 +0000)
committerBrad Fitzpatrick <bradfitz@golang.org>
Tue, 25 Apr 2017 04:29:00 +0000 (04:29 +0000)
As Ian said at:
https://github.com/golang/go/issues/19964#issuecomment-296347750

> the -fdebug-prefix-map option is being applied to the debug info but
> not to the initial .file pseudo-op.
>
> My only current thought for how to fix this is that instead of
> compiling $WORK/a/b/foo.c, we should change the command to (cd
> $WORK/a/b && clang -g -c foo.c). We'll still want
> -fdebug-prefix-map, I think, but that should fix the .file
> pseudo-op.

This CL does that.

Fixes #19964

Change-Id: I442b1201cab9e0448fc520ab243ad364d59cd7c3
Reviewed-on: https://go-review.googlesource.com/41629
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/cmd/go/internal/work/build.go

index aad231a2e39025e0b2576a94fae6667f9ff04e04..d247c697fae74ce27964c4d8b751b86726e76cb4 100644 (file)
@@ -2977,7 +2977,10 @@ func (b *Builder) gfortran(p *load.Package, out string, flags []string, ffile st
 func (b *Builder) ccompile(p *load.Package, outfile string, flags []string, file string, compiler []string) error {
        file = mkAbs(p.Dir, file)
        desc := p.ImportPath
-       output, err := b.runOut(p.Dir, desc, nil, compiler, flags, "-o", outfile, "-c", file)
+       if !filepath.IsAbs(outfile) {
+               outfile = filepath.Join(p.Dir, outfile)
+       }
+       output, err := b.runOut(filepath.Dir(file), desc, nil, compiler, flags, "-o", outfile, "-c", filepath.Base(file))
        if len(output) > 0 {
                // On FreeBSD 11, when we pass -g to clang 3.8 it
                // invokes its internal assembler with -dwarf-version=2.