From: Cary Coutant Date: Mon, 23 Feb 2009 19:44:58 +0000 (+0000) Subject: * objdump.c (load_specific_debug_section): New function, from X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7bcbeb0f1cba175ad4b8b3990fd1a0e81a4dcefd;p=binutils-gdb.git * objdump.c (load_specific_debug_section): New function, from load_debug_section. (load_debug_section): Use load_specific_debug_section. (dump_dwarf_section): Likewise. --- diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 0a2b91be169..ec0ddcb0170 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,10 @@ +2009-02-23 Cary Coutant + + * objdump.c (load_specific_debug_section): New function, from + load_debug_section. + (load_debug_section): Use load_specific_debug_section. + (dump_dwarf_section): Likewise. + 2009-02-23 Cary Coutant * readelf.c (parse_args): Select all sections explicitly for -w. diff --git a/binutils/objdump.c b/binutils/objdump.c index b05c384717a..968a667f4a5 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);