Commit 6dfc2256 authored by Alessandro Arzilli's avatar Alessandro Arzilli Committed by Kirill Smelkov

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/+/363895Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
Trust: Than McIntosh <thanm@google.com>
parent d5cb7152
...@@ -636,10 +636,14 @@ func (f *File) DWARF() (*dwarf.Data, error) { ...@@ -636,10 +636,14 @@ func (f *File) DWARF() (*dwarf.Data, error) {
return nil, err return nil, err
} }
// Look for DWARF4 .debug_types sections. // Look for DWARF4 .debug_types sections and DWARF5 sections.
for i, s := range f.Sections { for i, s := range f.Sections {
suffix := dwarfSuffix(s) suffix := dwarfSuffix(s)
if suffix != "types" { if suffix == "" {
continue
}
if _, ok := dat[suffix]; ok {
// Already handled.
continue continue
} }
...@@ -648,7 +652,11 @@ func (f *File) DWARF() (*dwarf.Data, error) { ...@@ -648,7 +652,11 @@ func (f *File) DWARF() (*dwarf.Data, error) {
return nil, err return nil, err
} }
err = d.AddTypes(fmt.Sprintf("types-%d", i), b) if suffix == "types" {
err = d.AddTypes(fmt.Sprintf("types-%d", i), b)
} else {
err = d.AddSection(".debug_"+suffix, b)
}
if err != nil { if err != nil {
return nil, err return nil, err
} }
......
...@@ -286,10 +286,14 @@ func (f *File) DWARF() (*dwarf.Data, error) { ...@@ -286,10 +286,14 @@ func (f *File) DWARF() (*dwarf.Data, error) {
return nil, err return nil, err
} }
// Look for DWARF4 .debug_types sections. // Look for DWARF4 .debug_types sections and DWARF5 sections.
for i, s := range f.Sections { for i, s := range f.Sections {
suffix := dwarfSuffix(s) suffix := dwarfSuffix(s)
if suffix != "types" { if suffix == "" {
continue
}
if _, ok := dat[suffix]; ok {
// Already handled.
continue continue
} }
...@@ -298,7 +302,11 @@ func (f *File) DWARF() (*dwarf.Data, error) { ...@@ -298,7 +302,11 @@ func (f *File) DWARF() (*dwarf.Data, error) {
return nil, err return nil, err
} }
err = d.AddTypes(fmt.Sprintf("types-%d", i), b) if suffix == "types" {
err = d.AddTypes(fmt.Sprintf("types-%d", i), b)
} else {
err = d.AddSection(".debug_"+suffix, b)
}
if err != nil { if err != nil {
return nil, err return nil, err
} }
......
  • This commit is used to patch go on slapos repository. Writing this comment will make sure the commit is preserved by gitlab.

  • mentioned in commit 28fbdd01

    Toggle commit list
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment