From 7bcbeb0f1cba175ad4b8b3990fd1a0e81a4dcefd Mon Sep 17 00:00:00 2001 From: Cary Coutant Date: Mon, 23 Feb 2009 19:44:58 +0000 Subject: * objdump.c (load_specific_debug_section): New function, from load_debug_section. (load_debug_section): Use load_specific_debug_section. (dump_dwarf_section): Likewise. --- binutils/objdump.c | 53 ++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 36 insertions(+), 17 deletions(-) (limited to 'binutils/objdump.c') diff --git a/binutils/objdump.c b/binutils/objdump.c index b05c384..968a667 100644 --- a/binutils/objdump.c +++ b/binutils/objdump.c @@ -2122,12 +2122,12 @@ disassemble_data (bfd *abfd) free (sorted_syms); } -int -load_debug_section (enum dwarf_section_display_enum debug, void *file) +static int +load_specific_debug_section (enum dwarf_section_display_enum debug, + asection *sec, void *file) { struct dwarf_section *section = &debug_displays [debug].section; bfd *abfd = file; - asection *sec; bfd_boolean ret; int section_is_compressed; @@ -2135,18 +2135,6 @@ load_debug_section (enum dwarf_section_display_enum debug, void *file) if (section->start != NULL) return 1; - /* Locate the debug section. */ - sec = bfd_get_section_by_name (abfd, section->uncompressed_name); - if (sec != NULL) - section->name = section->uncompressed_name; - else - { - sec = bfd_get_section_by_name (abfd, section->compressed_name); - if (sec != NULL) - section->name = section->compressed_name; - } - if (sec == NULL) - return 0; section_is_compressed = section->name == section->compressed_name; section->address = 0; @@ -2182,7 +2170,34 @@ load_debug_section (enum dwarf_section_display_enum debug, void *file) section->size = size; } - return ret; + return 1; +} + +int +load_debug_section (enum dwarf_section_display_enum debug, void *file) +{ + struct dwarf_section *section = &debug_displays [debug].section; + bfd *abfd = file; + asection *sec; + + /* If it is already loaded, do nothing. */ + if (section->start != NULL) + return 1; + + /* Locate the debug section. */ + sec = bfd_get_section_by_name (abfd, section->uncompressed_name); + if (sec != NULL) + section->name = section->uncompressed_name; + else + { + sec = bfd_get_section_by_name (abfd, section->compressed_name); + if (sec != NULL) + section->name = section->compressed_name; + } + if (sec == NULL) + return 0; + + return load_specific_debug_section (debug, sec, file); } void @@ -2222,7 +2237,11 @@ dump_dwarf_section (bfd *abfd, asection *section, { struct dwarf_section *sec = &debug_displays [i].section; - if (load_debug_section (i, abfd)) + if (strcmp (sec->uncompressed_name, match) == 0) + sec->name = sec->uncompressed_name; + else + sec->name = sec->compressed_name; + if (load_specific_debug_section (i, section, abfd)) { debug_displays [i].display (sec, abfd); -- cgit v1.1