diff options
| author | Matthew Dempsky <mdempsky@google.com> | 2017-03-06 07:32:37 -0800 |
|---|---|---|
| committer | Matthew Dempsky <mdempsky@google.com> | 2017-03-07 17:32:54 +0000 |
| commit | 68177d9ec034b5d2f0ef35fa1a225616c2af3827 (patch) | |
| tree | d7b6b1631a33dfc57e97ba7f547c31cf90404e1f /src/cmd/internal/obj/objfile.go | |
| parent | e577a55b78bb2d36841504c00ff1d984c167308e (diff) | |
| download | go-68177d9ec034b5d2f0ef35fa1a225616c2af3827.tar.xz | |
cmd/internal/obj: move dwarf.Var generation into compiler
Passes toolstash -cmp.
Change-Id: I4bd60f7ebba5457e7b3ece688fee2351bfeeb59a
Reviewed-on: https://go-review.googlesource.com/37874
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Alessandro Arzilli <alessandro.arzilli@gmail.com>
Reviewed-by: Than McIntosh <thanm@google.com>
Diffstat (limited to 'src/cmd/internal/obj/objfile.go')
| -rw-r--r-- | src/cmd/internal/obj/objfile.go | 63 |
1 files changed, 14 insertions, 49 deletions
diff --git a/src/cmd/internal/obj/objfile.go b/src/cmd/internal/obj/objfile.go index 1bd4f53ae4..9a208b20b1 100644 --- a/src/cmd/internal/obj/objfile.go +++ b/src/cmd/internal/obj/objfile.go @@ -551,54 +551,19 @@ func (c dwCtxt) AddSectionOffset(s dwarf.Sym, size int, t interface{}, ofs int64 r.Type = R_DWARFREF } -func gendwarf(ctxt *Link, text []*LSym) []*LSym { - dctxt := dwCtxt{ctxt} - var dw []*LSym - - for _, s := range text { - dsym := Linklookup(ctxt, dwarf.InfoPrefix+s.Name, int(s.Version)) - if dsym.Size != 0 { - continue - } - dw = append(dw, dsym) - dsym.Type = SDWARFINFO - dsym.Set(AttrDuplicateOK, s.DuplicateOK()) - var vars []*dwarf.Var - var abbrev int - var offs int32 - for _, a := range s.Autom { - switch a.Name { - case NAME_AUTO: - abbrev = dwarf.DW_ABRV_AUTO - offs = a.Aoffset - if ctxt.FixedFrameSize() == 0 { - offs -= int32(ctxt.Arch.PtrSize) - } - if Framepointer_enabled(GOOS, GOARCH) { - offs -= int32(ctxt.Arch.PtrSize) - } - - case NAME_PARAM: - abbrev = dwarf.DW_ABRV_PARAM - offs = a.Aoffset + int32(ctxt.FixedFrameSize()) - - default: - continue - } - - typename := dwarf.InfoPrefix + a.Gotype.Name[len("type."):] - vars = append(vars, &dwarf.Var{ - Name: a.Asym.Name, - Abbrev: abbrev, - Offset: offs, - Type: Linklookup(ctxt, typename, 0), - }) - } - - // Stable sort so that ties are broken with declaration order. - sort.Stable(dwarf.VarsByOffset(vars)) - - dwarf.PutFunc(dctxt, dsym, s.Name, s.Version == 0, s, s.Size, vars) +// makeFuncDebugEntry makes a DWARF Debugging Information Entry +// for TEXT symbol s. +func makeFuncDebugEntry(ctxt *Link, s *LSym) { + dsym := Linklookup(ctxt, dwarf.InfoPrefix+s.Name, int(s.Version)) + if dsym.Size != 0 { + return + } + dsym.Type = SDWARFINFO + dsym.Set(AttrDuplicateOK, s.DuplicateOK()) + var vars []*dwarf.Var + if ctxt.DebugInfo != nil { + vars = ctxt.DebugInfo(s) } - return dw + dwarf.PutFunc(dwCtxt{ctxt}, dsym, s.Name, s.Version == 0, s, s.Size, vars) + ctxt.Data = append(ctxt.Data, dsym) } |
