| Line 1... | Line 1... | 
      
        | /* objdump.c -- dump information about an object file.
 | /* objdump.c -- dump information about an object file.
 | 
      
        |    Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
 |    Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
 | 
      
        |    2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
 |    2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
 | 
      
        |    Free Software Foundation, Inc.
 |    2012 Free Software Foundation, Inc.
 | 
      
        |  
 |  
 | 
      
        |    This file is part of GNU Binutils.
 |    This file is part of GNU Binutils.
 | 
      
        |  
 |  
 | 
      
        |    This program is free software; you can redistribute it and/or modify
 |    This program is free software; you can redistribute it and/or modify
 | 
      
        |    it under the terms of the GNU General Public License as published by
 |    it under the terms of the GNU General Public License as published by
 | 
      
        | Line 69... | Line 69... | 
      
        |  
 |  
 | 
      
        | #ifdef HAVE_MMAP
 | #ifdef HAVE_MMAP
 | 
      
        | #include <sys/mman.h>
 | #include <sys/mman.h>
 | 
      
        | #endif
 | #endif
 | 
      
        |  
 |  
 | 
      
        | #include <sys/stat.h>
 |   | 
      
        |  
 |   | 
      
        | /* Internal headers for the ELF .stab-dump code - sorry.  */
 | /* Internal headers for the ELF .stab-dump code - sorry.  */
 | 
      
        | #define BYTES_IN_WORD   32
 | #define BYTES_IN_WORD   32
 | 
      
        | #include "aout/aout64.h"
 | #include "aout/aout64.h"
 | 
      
        |  
 |  
 | 
      
        | /* Exit status.  */
 | /* Exit status.  */
 | 
      
        | Line 1123... | Line 1121... | 
      
        |   int fd = open (fn, O_RDONLY | O_BINARY);
 |   int fd = open (fn, O_RDONLY | O_BINARY);
 | 
      
        |  
 |  
 | 
      
        |   if (fd < 0)
 |   if (fd < 0)
 | 
      
        |     return NULL;
 |     return NULL;
 | 
      
        |   if (fstat (fd, &st) < 0)
 |   if (fstat (fd, &st) < 0)
 | 
      
        |   |     {
 | 
      
        |   |       close (fd);
 | 
      
        |     return NULL;
 |     return NULL;
 | 
      
        |   |     }
 | 
      
        |   *size = st.st_size;
 |   *size = st.st_size;
 | 
      
        | #ifdef HAVE_MMAP
 | #ifdef HAVE_MMAP
 | 
      
        |   msize = (*size + ps - 1) & ~(ps - 1);
 |   msize = (*size + ps - 1) & ~(ps - 1);
 | 
      
        |   map = mmap (NULL, msize, PROT_READ, MAP_SHARED, fd, 0);
 |   map = mmap (NULL, msize, PROT_READ, MAP_SHARED, fd, 0);
 | 
      
        |   if (map != (char *)-1L)
 |   if (map != (char *)-1L)
 | 
      
        | Line 3255... | Line 3256... | 
      
        |   dynsymcount = 0;
 |   dynsymcount = 0;
 | 
      
        |   synthcount = 0;
 |   synthcount = 0;
 | 
      
        | }
 | }
 | 
      
        |  
 |  
 | 
      
        | static void
 | static void
 | 
      
        | display_bfd (bfd *abfd)
 | display_object_bfd (bfd *abfd)
 | 
      
        | {
 | {
 | 
      
        |   char **matching;
 |   char **matching;
 | 
      
        |  
 |  
 | 
      
        |   if (bfd_check_format_matches (abfd, bfd_object, &matching))
 |   if (bfd_check_format_matches (abfd, bfd_object, &matching))
 | 
      
        |     {
 |     {
 | 
      
        | Line 3295... | Line 3296... | 
      
        |       free (matching);
 |       free (matching);
 | 
      
        |     }
 |     }
 | 
      
        | }
 | }
 | 
      
        |  
 |  
 | 
      
        | static void
 | static void
 | 
      
        | display_file (char *filename, char *target)
 | display_any_bfd (bfd *file, int level)
 | 
      
        | {
 |   | 
      
        |   bfd *file;
 |   | 
      
        |   bfd *arfile = NULL;
 |   | 
      
        |  
 |   | 
      
        |   if (get_file_size (filename) < 1)
 |   | 
      
        |     {
 |   | 
      
        |       exit_status = 1;
 |   | 
      
        |       return;
 |   | 
      
        |     }
 |   | 
      
        |  
 |   | 
      
        |   file = bfd_openr (filename, target);
 |   | 
      
        |   if (file == NULL)
 |   | 
      
        |     {
 |     {
 | 
      
        |       nonfatal (filename);
 |   | 
      
        |       return;
 |   | 
      
        |     }
 |   | 
      
        |  
 |   | 
      
        |   /* Decompress sections unless dumping the section contents.  */
 |   /* Decompress sections unless dumping the section contents.  */
 | 
      
        |   if (!dump_section_contents)
 |   if (!dump_section_contents)
 | 
      
        |     file->flags |= BFD_DECOMPRESS;
 |     file->flags |= BFD_DECOMPRESS;
 | 
      
        |  
 |  
 | 
      
        |   /* If the file is an archive, process all of its elements.  */
 |   /* If the file is an archive, process all of its elements.  */
 | 
      
        |   if (bfd_check_format (file, bfd_archive))
 |   if (bfd_check_format (file, bfd_archive))
 | 
      
        |     {
 |     {
 | 
      
        |   |       bfd *arfile = NULL;
 | 
      
        |       bfd *last_arfile = NULL;
 |       bfd *last_arfile = NULL;
 | 
      
        |  
 |  
 | 
      
        |   |       if (level == 0)
 | 
      
        |       printf (_("In archive %s:\n"), bfd_get_filename (file));
 |       printf (_("In archive %s:\n"), bfd_get_filename (file));
 | 
      
        |   |       else
 | 
      
        |   |         printf (_("In nested archive %s:\n"), bfd_get_filename (file));
 | 
      
        |   |  
 | 
      
        |       for (;;)
 |       for (;;)
 | 
      
        |         {
 |         {
 | 
      
        |           bfd_set_error (bfd_error_no_error);
 |           bfd_set_error (bfd_error_no_error);
 | 
      
        |  
 |  
 | 
      
        |           arfile = bfd_openr_next_archived_file (file, arfile);
 |           arfile = bfd_openr_next_archived_file (file, arfile);
 | 
      
        | Line 3335... | Line 3325... | 
      
        |               if (bfd_get_error () != bfd_error_no_more_archived_files)
 |               if (bfd_get_error () != bfd_error_no_more_archived_files)
 | 
      
        |                 nonfatal (bfd_get_filename (file));
 |                 nonfatal (bfd_get_filename (file));
 | 
      
        |               break;
 |               break;
 | 
      
        |             }
 |             }
 | 
      
        |  
 |  
 | 
      
        |           display_bfd (arfile);
 |           display_any_bfd (arfile, level + 1);
 | 
      
        |  
 |  
 | 
      
        |           if (last_arfile != NULL)
 |           if (last_arfile != NULL)
 | 
      
        |             bfd_close (last_arfile);
 |             bfd_close (last_arfile);
 | 
      
        |           last_arfile = arfile;
 |           last_arfile = arfile;
 | 
      
        |         }
 |         }
 | 
      
        |  
 |  
 | 
      
        |       if (last_arfile != NULL)
 |       if (last_arfile != NULL)
 | 
      
        |         bfd_close (last_arfile);
 |         bfd_close (last_arfile);
 | 
      
        |     }
 |     }
 | 
      
        |   else
 |   else
 | 
      
        |     display_bfd (file);
 |     display_object_bfd (file);
 | 
      
        |   | }
 | 
      
        |   |  
 | 
      
        |   | static void
 | 
      
        |   | display_file (char *filename, char *target)
 | 
      
        |   | {
 | 
      
        |   |   bfd *file;
 | 
      
        |   |  
 | 
      
        |   |   if (get_file_size (filename) < 1)
 | 
      
        |   |     {
 | 
      
        |   |       exit_status = 1;
 | 
      
        |   |       return;
 | 
      
        |   |     }
 | 
      
        |   |  
 | 
      
        |   |   file = bfd_openr (filename, target);
 | 
      
        |   |   if (file == NULL)
 | 
      
        |   |     {
 | 
      
        |   |       nonfatal (filename);
 | 
      
        |   |       return;
 | 
      
        |   |     }
 | 
      
        |   |  
 | 
      
        |   |   display_any_bfd (file, 0);
 | 
      
        |  
 |  
 | 
      
        |   bfd_close (file);
 |   bfd_close (file);
 | 
      
        | }
 | }
 | 
      
        | 
 | 
 | 
      
        | int
 | int
 |