diff options
author | Cary Coutant <ccoutant@google.com> | 2009-02-23 19:44:58 +0000 |
---|---|---|
committer | Cary Coutant <ccoutant@google.com> | 2009-02-23 19:44:58 +0000 |
commit | 7bcbeb0f1cba175ad4b8b3990fd1a0e81a4dcefd (patch) | |
tree | f9a4e05ee93c5cebb5aa5373a72251d6c6b4a2b2 /binutils/objdump.c | |
parent | 613ff48bcb1fbccc0455d7f499e457acf3fc0c1e (diff) | |
download | gdb-7bcbeb0f1cba175ad4b8b3990fd1a0e81a4dcefd.zip gdb-7bcbeb0f1cba175ad4b8b3990fd1a0e81a4dcefd.tar.gz gdb-7bcbeb0f1cba175ad4b8b3990fd1a0e81a4dcefd.tar.bz2 |
* objdump.c (load_specific_debug_section): New function, from
load_debug_section.
(load_debug_section): Use load_specific_debug_section.
(dump_dwarf_section): Likewise.
Diffstat (limited to 'binutils/objdump.c')
-rw-r--r-- | binutils/objdump.c | 53 |
1 files changed, 36 insertions, 17 deletions
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); |