mirror of
https://github.com/golang/go
synced 2024-11-07 17:46:23 -07:00
cmd/link: eliminate a couple of unused DWARF attrs
The linker's DWARF generation occasionally computes and attaches an attribute X to a type even though the type's abbrev doesn't have the specified attr. For example, the DW_TAG_subroutine_type abbrev entry has no type attribute, but a type attr is given to it (wasting memory). Similarly there are some places where a byte size attr is added to a DIE whose abbrev lacks that attr. This patch trims away a few of these not-needed attrs, saving some very tiny amount of memory. Updates #26186 Change-Id: I69e853df468ac54b07772a614b4106d7c4dae01d Reviewed-on: https://go-review.googlesource.com/123296 Reviewed-by: Heschi Kreinick <heschi@google.com> Run-TryBot: Heschi Kreinick <heschi@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
ebdba42d9e
commit
204c618f0a
@ -451,7 +451,6 @@ func newtype(ctxt *Link, gotype *sym.Symbol) *dwarf.DWDie {
|
|||||||
|
|
||||||
case objabi.KindChan:
|
case objabi.KindChan:
|
||||||
die = newdie(ctxt, &dwtypes, dwarf.DW_ABRV_CHANTYPE, name, 0)
|
die = newdie(ctxt, &dwtypes, dwarf.DW_ABRV_CHANTYPE, name, 0)
|
||||||
newattr(die, dwarf.DW_AT_byte_size, dwarf.DW_CLS_CONSTANT, bytesize, 0)
|
|
||||||
s := decodetypeChanElem(ctxt.Arch, gotype)
|
s := decodetypeChanElem(ctxt.Arch, gotype)
|
||||||
newrefattr(die, dwarf.DW_AT_go_elem, defgotype(ctxt, s))
|
newrefattr(die, dwarf.DW_AT_go_elem, defgotype(ctxt, s))
|
||||||
// Save elem type for synthesizechantypes. We could synthesize here
|
// Save elem type for synthesizechantypes. We could synthesize here
|
||||||
@ -462,7 +461,6 @@ func newtype(ctxt *Link, gotype *sym.Symbol) *dwarf.DWDie {
|
|||||||
die = newdie(ctxt, &dwtypes, dwarf.DW_ABRV_FUNCTYPE, name, 0)
|
die = newdie(ctxt, &dwtypes, dwarf.DW_ABRV_FUNCTYPE, name, 0)
|
||||||
newattr(die, dwarf.DW_AT_byte_size, dwarf.DW_CLS_CONSTANT, bytesize, 0)
|
newattr(die, dwarf.DW_AT_byte_size, dwarf.DW_CLS_CONSTANT, bytesize, 0)
|
||||||
dotypedef(ctxt, &dwtypes, name, die)
|
dotypedef(ctxt, &dwtypes, name, die)
|
||||||
newrefattr(die, dwarf.DW_AT_type, mustFind(ctxt, "void"))
|
|
||||||
nfields := decodetypeFuncInCount(ctxt.Arch, gotype)
|
nfields := decodetypeFuncInCount(ctxt.Arch, gotype)
|
||||||
for i := 0; i < nfields; i++ {
|
for i := 0; i < nfields; i++ {
|
||||||
s := decodetypeFuncInType(ctxt.Arch, gotype, i)
|
s := decodetypeFuncInType(ctxt.Arch, gotype, i)
|
||||||
@ -483,7 +481,6 @@ func newtype(ctxt *Link, gotype *sym.Symbol) *dwarf.DWDie {
|
|||||||
case objabi.KindInterface:
|
case objabi.KindInterface:
|
||||||
die = newdie(ctxt, &dwtypes, dwarf.DW_ABRV_IFACETYPE, name, 0)
|
die = newdie(ctxt, &dwtypes, dwarf.DW_ABRV_IFACETYPE, name, 0)
|
||||||
dotypedef(ctxt, &dwtypes, name, die)
|
dotypedef(ctxt, &dwtypes, name, die)
|
||||||
newattr(die, dwarf.DW_AT_byte_size, dwarf.DW_CLS_CONSTANT, bytesize, 0)
|
|
||||||
nfields := int(decodetypeIfaceMethodCount(ctxt.Arch, gotype))
|
nfields := int(decodetypeIfaceMethodCount(ctxt.Arch, gotype))
|
||||||
var s *sym.Symbol
|
var s *sym.Symbol
|
||||||
if nfields == 0 {
|
if nfields == 0 {
|
||||||
|
Loading…
Reference in New Issue
Block a user