diff options
Diffstat (limited to 'binutils/objdump.c')
-rw-r--r-- | binutils/objdump.c | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/binutils/objdump.c b/binutils/objdump.c index 27bfb42..fdffb8d 100644 --- a/binutils/objdump.c +++ b/binutils/objdump.c @@ -3711,6 +3711,7 @@ load_debug_section (enum dwarf_section_display_enum debug, void *file) struct dwarf_section *section = &debug_displays [debug].section; bfd *abfd = (bfd *) file; asection *sec; + const char *name; /* If it is already loaded, do nothing. */ if (section->start != NULL) @@ -3719,24 +3720,24 @@ load_debug_section (enum dwarf_section_display_enum debug, void *file) return true; } /* Locate the debug section. */ - sec = bfd_get_section_by_name (abfd, section->uncompressed_name); - if (sec != NULL) - section->name = section->uncompressed_name; - else + name = section->uncompressed_name; + sec = bfd_get_section_by_name (abfd, name); + if (sec == NULL) { - sec = bfd_get_section_by_name (abfd, section->compressed_name); - if (sec != NULL) - section->name = section->compressed_name; - else - { - sec = bfd_get_section_by_name (abfd, section->xcoff_name); - if (sec != NULL) - section->name = section->xcoff_name; - } + name = section->compressed_name; + if (*name) + sec = bfd_get_section_by_name (abfd, name); + } + if (sec == NULL) + { + name = section->xcoff_name; + if (*name) + sec = bfd_get_section_by_name (abfd, name); } if (sec == NULL) return false; + section->name = name; return load_specific_debug_section (debug, sec, file); } @@ -3809,6 +3810,9 @@ dump_dwarf_section (bfd *abfd, asection *section, const char *match; int i; + if (*name == 0) + return; + if (startswith (name, ".gnu.linkonce.wi.")) match = ".debug_info"; else |