]> Cypherpunks repositories - gostls13.git/commit
cmd/link: more efficient encoding of DWARF line number information
authorJohn Dethridge <jcd@golang.org>
Fri, 7 Oct 2016 04:06:09 +0000 (15:06 +1100)
committerJohn Dethridge <jcd@golang.org>
Tue, 11 Oct 2016 01:42:35 +0000 (01:42 +0000)
commit8f65379f947f77f5caadf283f219b2cc6e9bdb84
tree90636032005133267cb9da4550bfebd247bbc71e
parent3a9072829e7d315ecda030281b622632c1bbe1b6
cmd/link: more efficient encoding of DWARF line number information

The (pc, line) deltas in the line number information are currently encoded
either with a special opcode, or with a triplet of DW_LNS_advance_pc,
DW_LNS_advance_line, and DW_LNS_copy instructions.  Instead of DW_LNS_copy,
this change always uses a special opcode, which can make DW_LNS_advance_pc or
DW_LNS_advance_line unnecessary, or make their operands take fewer bytes.  It
chooses the special opcode so that the encoding of the remaining deltas is as
small as possible.

Use DW_LNS_const_add_pc or DW_LNS_fixed_advance_pc instead of DW_LNS_advance_pc
for deltas where they save a byte.

Update LINE_BASE and LINE_RANGE constants to optimal values for this strategy.

This reduces line number information by about 35% and total size by about 2%
for a typical binary.

Change-Id: Ia61d6bf19c95c1d34ba63c67ed32b376beda225f
Reviewed-on: https://go-review.googlesource.com/30577
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
src/cmd/link/internal/ld/dwarf.go