aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/internal/obj/objfile.go
diff options
context:
space:
mode:
authorMatthew Dempsky <mdempsky@google.com>2017-03-06 07:32:37 -0800
committerMatthew Dempsky <mdempsky@google.com>2017-03-07 17:32:54 +0000
commit68177d9ec034b5d2f0ef35fa1a225616c2af3827 (patch)
treed7b6b1631a33dfc57e97ba7f547c31cf90404e1f /src/cmd/internal/obj/objfile.go
parente577a55b78bb2d36841504c00ff1d984c167308e (diff)
downloadgo-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.go63
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)
}