aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--binutils/ChangeLog8
-rw-r--r--binutils/objdump.c58
2 files changed, 52 insertions, 14 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 9cf8511..7cf4f71 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,11 @@
+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.
+
1999-10-26 Nick Clifton <nickc@cygnus.com>
* dlltool.c (assemble_file): Remove spurious test of exp_name.
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;