mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
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/9690 Reviewed-by: Russ Cox <rsc@golang.org>
This commit is contained in:
parent
660a6825ea
commit
91938fd1ca
2 changed files with 5 additions and 4 deletions
|
|
@ -75,6 +75,10 @@ func decodetype_gcprog(s *LSym) *LSym {
|
||||||
return decode_reloc_sym(s, 1*int32(Thearch.Ptrsize)+8+2*int32(Thearch.Ptrsize))
|
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 {
|
func decodetype_gcmask(s *LSym) []byte {
|
||||||
if s.Type == obj.SDYNIMPORT {
|
if s.Type == obj.SDYNIMPORT {
|
||||||
// ldshlibsyms makes special efforts to read the value
|
// 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 {
|
if decodetype_noptr(t) != 0 || decodetype_usegcprog(t) != 0 {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
// The expression on the next line is a copy of the expression from
|
addr := decodetype_gcprog_shlib(t)
|
||||||
// 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)
|
|
||||||
tgcmask, ok := gcmasks[addr]
|
tgcmask, ok := gcmasks[addr]
|
||||||
if !ok {
|
if !ok {
|
||||||
Diag("bits not found for %s at %d", t.Name, addr)
|
Diag("bits not found for %s at %d", t.Name, addr)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue