Commit 91938fd1 authored by Austin Clements's avatar Austin Clements

cmd/internal/ld: put all type decoding in decodesym.go

Move the one instance of type structure decoding in the linker that
doesn't live decodesym.go in to decodesym.go.

Change-Id: Ic6a23500deb72f0e9c8227ab611511e9781fac70
Reviewed-on: https://go-review.googlesource.com/9690Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
parent 660a6825
......@@ -75,6 +75,10 @@ func decodetype_gcprog(s *LSym) *LSym {
return decode_reloc_sym(s, 1*int32(Thearch.Ptrsize)+8+2*int32(Thearch.Ptrsize))
}
func decodetype_gcprog_shlib(s *LSym) uint64 {
return decode_inuxi(s.P[1*int32(Thearch.Ptrsize)+8+1*int32(Thearch.Ptrsize):], Thearch.Ptrsize)
}
func decodetype_gcmask(s *LSym) []byte {
if s.Type == obj.SDYNIMPORT {
// ldshlibsyms makes special efforts to read the value
......
......@@ -1224,10 +1224,7 @@ func ldshlibsyms(shlib string) {
if decodetype_noptr(t) != 0 || decodetype_usegcprog(t) != 0 {
continue
}
// The expression on the next line is a copy of the expression from
// decodetype_gcmask in decodesym.go, which in turn depends on details of
// how the type data is laid out, as seen in gc/reflect.go:dcommontype.
addr := decode_inuxi(t.P[1*int32(Thearch.Ptrsize)+8+1*int32(Thearch.Ptrsize):], Thearch.Ptrsize)
addr := decodetype_gcprog_shlib(t)
tgcmask, ok := gcmasks[addr]
if !ok {
Diag("bits not found for %s at %d", t.Name, addr)
......
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