]> Cypherpunks repositories - gostls13.git/commitdiff
dwarf: add extensions for multi-file compression (.dwz)
authorDhiru Kholia <dhiru.kholia@gmail.com>
Wed, 12 Mar 2014 01:49:50 +0000 (18:49 -0700)
committerIan Lance Taylor <iant@golang.org>
Wed, 12 Mar 2014 01:49:50 +0000 (18:49 -0700)
LGTM=iant
R=golang-codereviews, iant, bradfitz
CC=golang-codereviews, math-nuts
https://golang.org/cl/72820044

src/pkg/debug/dwarf/const.go
src/pkg/debug/dwarf/entry.go

index 987812b152a523e6950d1467caa372d5a1be15df..93c68881afca38735680fdc2289b5e7898dac318 100644 (file)
@@ -212,6 +212,10 @@ const (
        formExprloc     format = 0x18
        formFlagPresent format = 0x19
        formRefSig8     format = 0x20
+       // Extensions for multi-file compression (.dwz)
+       // http://www.dwarfstd.org/ShowIssue.php?issue=120604.1
+       formGnuRefAlt  format = 0x1f20
+       formGnuStrpAlt format = 0x1f21
 )
 
 // A Tag is the classification (the type) of an Entry.
index 934416e6c1edbb2fa710be6f2ca2cd46e59b91bb..665c6840d43024435a0fe3e77c1ccc7fc37ffd88 100644 (file)
@@ -241,10 +241,10 @@ func (b *buf) entry(atab abbrevTable, ubase Offset) *Entry {
                // lineptr, loclistptr, macptr, rangelistptr
                // New in DWARF 4, but clang can generate them with -gdwarf-2.
                // Section reference, replacing use of formData4 and formData8.
-               case formSecOffset:
+               case formSecOffset, formGnuRefAlt, formGnuStrpAlt:
                        is64, known := b.format.dwarf64()
                        if !known {
-                               b.error("unknown size for DW_FORM_sec_offset")
+                               b.error("unknown size for form 0x" + strconv.FormatInt(int64(fmt), 16))
                        } else if is64 {
                                val = int64(b.uint64())
                        } else {