mirror of
https://github.com/golang/go
synced 2024-11-19 15:54:46 -07:00
cmd/link: don't create go.info symbols for non-Go functions
In writelines the linker uses various auxiliary information about a function to create its line table entries. (It also does some unrelated stuff, but never mind.) There's no reason to do this for non-Go functions, so it bails out if the symbol has no FuncInfo. However, it does so *after* it looks up (and implicitly creates!) the go.info symbol for the function, which doesn't make sense and risks creating duplicate symbols for static C functions. Move the check up so that it doesn't do that. Since non-Go functions can't reference Go types, there shouldn't be any relocations to type info DIEs that need to be built, so there should be no harm not doing that. I wanted to change the Lookup to an ROLookup but that broke the shared-mode tests with an inscrutable error. No test. It seems too specific to worry about, but if someone disagrees I can figure something out. Fixes #21566 Change-Id: I61f03b7c504a3bf1c4245a8811795b6303469e91 Reviewed-on: https://go-review.googlesource.com/58630 Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
parent
ace6074593
commit
6d7db25e5c
@ -1059,6 +1059,9 @@ func writelines(ctxt *Link, syms []*Symbol) ([]*Symbol, []*Symbol) {
|
|||||||
var pcfile Pciter
|
var pcfile Pciter
|
||||||
var pcline Pciter
|
var pcline Pciter
|
||||||
for _, s := range ctxt.Textp {
|
for _, s := range ctxt.Textp {
|
||||||
|
if s.FuncInfo == nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
epc = s.Value + s.Size
|
epc = s.Value + s.Size
|
||||||
epcs = s
|
epcs = s
|
||||||
@ -1078,10 +1081,6 @@ func writelines(ctxt *Link, syms []*Symbol) ([]*Symbol, []*Symbol) {
|
|||||||
}
|
}
|
||||||
funcs = append(funcs, dsym)
|
funcs = append(funcs, dsym)
|
||||||
|
|
||||||
if s.FuncInfo == nil {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
finddebugruntimepath(s)
|
finddebugruntimepath(s)
|
||||||
|
|
||||||
pciterinit(ctxt, &pcfile, &s.FuncInfo.Pcfile)
|
pciterinit(ctxt, &pcfile, &s.FuncInfo.Pcfile)
|
||||||
|
Loading…
Reference in New Issue
Block a user