]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/link: eliminate a couple of unused DWARF attrs
authorThan McIntosh <thanm@google.com>
Wed, 11 Jul 2018 16:30:05 +0000 (12:30 -0400)
committerThan McIntosh <thanm@google.com>
Fri, 13 Jul 2018 18:37:29 +0000 (18:37 +0000)
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>

src/cmd/link/internal/ld/dwarf.go

index 830d81d44677a953e77ea0bc2db8197e1d4bb0c6..ae6f90b079c5c00d1774ce14ed49c669c0be08e2 100644 (file)
@@ -451,7 +451,6 @@ func newtype(ctxt *Link, gotype *sym.Symbol) *dwarf.DWDie {
 
        case objabi.KindChan:
                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)
                newrefattr(die, dwarf.DW_AT_go_elem, defgotype(ctxt, s))
                // 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)
                newattr(die, dwarf.DW_AT_byte_size, dwarf.DW_CLS_CONSTANT, bytesize, 0)
                dotypedef(ctxt, &dwtypes, name, die)
-               newrefattr(die, dwarf.DW_AT_type, mustFind(ctxt, "void"))
                nfields := decodetypeFuncInCount(ctxt.Arch, gotype)
                for i := 0; i < nfields; i++ {
                        s := decodetypeFuncInType(ctxt.Arch, gotype, i)
@@ -483,7 +481,6 @@ func newtype(ctxt *Link, gotype *sym.Symbol) *dwarf.DWDie {
        case objabi.KindInterface:
                die = newdie(ctxt, &dwtypes, dwarf.DW_ABRV_IFACETYPE, name, 0)
                dotypedef(ctxt, &dwtypes, name, die)
-               newattr(die, dwarf.DW_AT_byte_size, dwarf.DW_CLS_CONSTANT, bytesize, 0)
                nfields := int(decodetypeIfaceMethodCount(ctxt.Arch, gotype))
                var s *sym.Symbol
                if nfields == 0 {