Skip to content

Commit 6c36c33

Browse files
aarzillithanm
authored andcommitted
debug/pe,debug/macho: add support for DWARF5 sections
Adds the same logic used in debug/elf to load DWARF5 sections. Fixes #49590 Change-Id: Iee05b9927a6f521842b330eab8942ade3fc2bd86 Reviewed-on: https://go-review.googlesource.com/c/go/+/363895 Reviewed-by: Ian Lance Taylor <iant@golang.org> Trust: Than McIntosh <thanm@google.com>
1 parent 40effca commit 6c36c33

File tree

2 files changed

+22
-6
lines changed

2 files changed

+22
-6
lines changed

src/debug/macho/file.go

+11-3
Original file line numberDiff line numberDiff line change
@@ -650,10 +650,14 @@ func (f *File) DWARF() (*dwarf.Data, error) {
650650
return nil, err
651651
}
652652

653-
// Look for DWARF4 .debug_types sections.
653+
// Look for DWARF4 .debug_types sections and DWARF5 sections.
654654
for i, s := range f.Sections {
655655
suffix := dwarfSuffix(s)
656-
if suffix != "types" {
656+
if suffix == "" {
657+
continue
658+
}
659+
if _, ok := dat[suffix]; ok {
660+
// Already handled.
657661
continue
658662
}
659663

@@ -662,7 +666,11 @@ func (f *File) DWARF() (*dwarf.Data, error) {
662666
return nil, err
663667
}
664668

665-
err = d.AddTypes(fmt.Sprintf("types-%d", i), b)
669+
if suffix == "types" {
670+
err = d.AddTypes(fmt.Sprintf("types-%d", i), b)
671+
} else {
672+
err = d.AddSection(".debug_"+suffix, b)
673+
}
666674
if err != nil {
667675
return nil, err
668676
}

src/debug/pe/file.go

+11-3
Original file line numberDiff line numberDiff line change
@@ -272,10 +272,14 @@ func (f *File) DWARF() (*dwarf.Data, error) {
272272
return nil, err
273273
}
274274

275-
// Look for DWARF4 .debug_types sections.
275+
// Look for DWARF4 .debug_types sections and DWARF5 sections.
276276
for i, s := range f.Sections {
277277
suffix := dwarfSuffix(s)
278-
if suffix != "types" {
278+
if suffix == "" {
279+
continue
280+
}
281+
if _, ok := dat[suffix]; ok {
282+
// Already handled.
279283
continue
280284
}
281285

@@ -284,7 +288,11 @@ func (f *File) DWARF() (*dwarf.Data, error) {
284288
return nil, err
285289
}
286290

287-
err = d.AddTypes(fmt.Sprintf("types-%d", i), b)
291+
if suffix == "types" {
292+
err = d.AddTypes(fmt.Sprintf("types-%d", i), b)
293+
} else {
294+
err = d.AddSection(".debug_"+suffix, b)
295+
}
288296
if err != nil {
289297
return nil, err
290298
}

0 commit comments

Comments
 (0)