diff options
author | Ian Lance Taylor <ian@airs.com> | 1999-10-28 03:30:13 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1999-10-28 03:30:13 +0000 |
commit | d24de309dfc187688fee3e6f23a960ea46986f58 (patch) | |
tree | e3760177539c525f2f0beab98e709e2dce53fa1f /binutils/objdump.c | |
parent | acb5662391fc6d5b6b8ede0217df17c0af177f25 (diff) | |
download | gdb-d24de309dfc187688fee3e6f23a960ea46986f58.zip gdb-d24de309dfc187688fee3e6f23a960ea46986f58.tar.gz gdb-d24de309dfc187688fee3e6f23a960ea46986f58.tar.bz2 |
1999-10-27 Fred Fish <fnf@cygnus.com>
* objdump.c (display_bfd): Break into two functions. The
actual dumping code moves to dump_bfd. If bfd is not
unambiguously recognized as a bfd_object, attempt to dump
it as a bfd_core.
(dump_bfd): New function.
Diffstat (limited to 'binutils/objdump.c')
-rw-r--r-- | binutils/objdump.c | 58 |
1 files changed, 44 insertions, 14 deletions
diff --git a/binutils/objdump.c b/binutils/objdump.c index 92805d3..71bb65f 100644 --- a/binutils/objdump.c +++ b/binutils/objdump.c @@ -2042,23 +2042,12 @@ bfd *abfd; bfd_print_private_bfd_data (abfd, stdout); } +/* Dump selected contents of ABFD */ + static void -display_bfd (abfd) +dump_bfd (abfd) bfd *abfd; { - char **matching; - - if (!bfd_check_format_matches (abfd, bfd_object, &matching)) - { - nonfatal (bfd_get_filename (abfd)); - if (bfd_get_error () == bfd_error_file_ambiguously_recognized) - { - list_matching_formats (matching); - free (matching); - } - return; - } - /* If we are adjusting section VMA's, change them all now. Changing the BFD information is a hack. However, we must do it, or bfd_find_nearest_line will not do the right thing. */ @@ -2135,6 +2124,47 @@ display_bfd (abfd) } static void +display_bfd (abfd) + bfd *abfd; +{ + char **matching; + + if (bfd_check_format_matches (abfd, bfd_object, &matching)) + { + dump_bfd (abfd); + return; + } + + if (bfd_get_error () == bfd_error_file_ambiguously_recognized) + { + nonfatal (bfd_get_filename (abfd)); + list_matching_formats (matching); + free (matching); + return; + } + + if (bfd_get_error () != bfd_error_file_not_recognized) + { + nonfatal (bfd_get_filename (abfd)); + return; + } + + if (bfd_check_format_matches (abfd, bfd_core, &matching)) + { + dump_bfd (abfd); + return; + } + + nonfatal (bfd_get_filename (abfd)); + + if (bfd_get_error () == bfd_error_file_ambiguously_recognized) + { + list_matching_formats (matching); + free (matching); + } +} + +static void display_file (filename, target) char *filename; char *target; |