Commit 3a62f4ee authored by Cherry Zhang's avatar Cherry Zhang

cmd/link: fix suspicious code in emitPcln

In cmd/link/internal/ld/pcln.go:emitPcln, the code and the
comment don't match. I think the comment is right. Fix the code.

As a consequence, on Linux/AMD64, internal linking with PIE
buildmode with cgo (at least the cgo packages in the standard
library) now works. Add a test.

Change-Id: I091cf81ba89571052bc0ec1fa0a6a688dec07b04
Reviewed-on: https://go-review.googlesource.com/c/go/+/166017
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: default avatarDavid Chase <drchase@google.com>
parent 7afd58d4
......@@ -579,6 +579,17 @@ func (t *tester) registerTests() {
return nil
},
})
// Also test a cgo package.
if t.cgoEnabled {
t.tests = append(t.tests, distTest{
name: "pie_internal_cgo",
heading: "internal linking of -buildmode=pie",
fn: func(dt *distTest) error {
t.addCmd(dt, "src", t.goTest(), "os/user", "-buildmode=pie", "-ldflags=-linkmode=internal", t.timeout(60))
return nil
},
})
}
}
// sync tests
......
......@@ -182,10 +182,7 @@ func emitPcln(ctxt *Link, s *sym.Symbol) bool {
}
// We want to generate func table entries only for the "lowest level" symbols,
// not containers of subsymbols.
if s.Attr.Container() {
return true
}
return true
return !s.Attr.Container()
}
// pclntab initializes the pclntab symbol with
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment