mirror of
https://github.com/golang/go
synced 2024-11-17 23:44:48 -07:00
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: David Chase <drchase@google.com>
This commit is contained in:
parent
7afd58d458
commit
3a62f4ee40
11
src/cmd/dist/test.go
vendored
11
src/cmd/dist/test.go
vendored
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user