Thu Aug 31 16:30:22 1995 steve chamberlain <sac@slash.cygnus.com>
authorSteve Chamberlain <sac@cygnus>
Thu, 31 Aug 1995 23:34:09 +0000 (23:34 +0000)
committerSteve Chamberlain <sac@cygnus>
Thu, 31 Aug 1995 23:34:09 +0000 (23:34 +0000)
* dlltool.c (add_indirect): New.
(asm_prefix): New
(gen_exp_file): Timestamp should be 0. Insert prefix when
needed. New code for indirection.
(gen_lib_file): Timestamp should be 0. Insert prefix
when needed.
(usage): Document --add-indirect.
(main): Cope with new option.

* objdump.c (dump_private_headers): New.
(usage): Document new option.
(long_option): Add private-headers.
(dump_bfd_private_header): New.
(main): Cope with new option.

binutils/ChangeLog
binutils/objdump.c

index a88bacdc4f2ace4ebe834f4164b09d3287286921..809068728f7ce87da3e734ec8728b63bfa03d6c2 100644 (file)
@@ -1,3 +1,20 @@
+Thu Aug 31 16:30:22 1995  steve chamberlain  <sac@slash.cygnus.com>
+
+       * dlltool.c (add_indirect): New.
+       (asm_prefix): New
+       (gen_exp_file): Timestamp should be 0. Insert prefix when
+       needed. New code for indirection.
+       (gen_lib_file): Timestamp should be 0. Insert prefix
+       when needed.
+       (usage): Document --add-indirect.
+       (main): Cope with new option.
+
+       * objdump.c (dump_private_headers): New.
+       (usage): Document new option.
+       (long_option): Add private-headers.
+       (dump_bfd_private_header): New.
+       (main): Cope with new option.
+
 Thu Aug 31 04:09:16 1995  Doug Evans  <dje@canuck.cygnus.com>
 
        * dlltool.c (run): Add missing 3rd arg to waitpid.
index 8e0945037dadd6aef8649da51dcce315c1f8ac6d..31148520139d76c97253e4e284e5e63d5a8c7a9b 100644 (file)
@@ -15,7 +15,7 @@ GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
-Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #include "bfd.h"
 #include "sysdep.h"
@@ -48,6 +48,7 @@ int dump_dynamic_symtab;      /* -T */
 int dump_reloc_info;           /* -r */
 int dump_dynamic_reloc_info;   /* -R */
 int dump_ar_hdrs;              /* -a */
+int dump_private_headers;      /* -p */
 int with_line_numbers;         /* -l */
 boolean with_source_code;      /* -S */
 int dump_stab_section_info;    /* --stabs */
@@ -120,7 +121,7 @@ usage (stream, status)
      int status;
 {
   fprintf (stream, "\
-Usage: %s [-ahifdDrRtTxsSlw] [-b bfdname] [-m machine] [-j section-name]\n\
+Usage: %s [-ahifdDprRtTxsSlw] [-b bfdname] [-m machine] [-j section-name]\n\
        [--archive-headers] [--target=bfdname] [--disassemble]\n\
        [--disassemble-all] [--file-headers] [--section-headers] [--headers]\n\
        [--info] [--section=section-name] [--line-numbers] [--source]\n",
@@ -128,7 +129,7 @@ Usage: %s [-ahifdDrRtTxsSlw] [-b bfdname] [-m machine] [-j section-name]\n\
   fprintf (stream, "\
        [--architecture=machine] [--reloc] [--full-contents] [--stabs]\n\
        [--syms] [--all-headers] [--dynamic-syms] [--dynamic-reloc]\n\
-       [--wide] [--version] [--help] objfile...\n\
+       [--wide] [--version] [--help] [--private-headers] objfile...\n\
 at least one option besides -l (--line-numbers) must be given\n");
   list_supported_targets (program_name, stream);
   exit (status);
@@ -137,6 +138,7 @@ at least one option besides -l (--line-numbers) must be given\n");
 static struct option long_options[]=
 {
   {"all-headers", no_argument, NULL, 'x'},
+  {"private-headers", no_argument, NULL, 'p'},
   {"architecture", required_argument, NULL, 'm'},
   {"archive-headers", no_argument, NULL, 'a'},
   {"disassemble", no_argument, NULL, 'd'},
@@ -340,8 +342,14 @@ compare_relocs (ap, bp)
   else if (a->address < b->address)
     return -1;
 
-  return compare_symbols ((const PTR) a->sym_ptr_ptr,
-                         (const PTR) b->sym_ptr_ptr);
+  /* So that associated relocations tied to the same address show up
+     in the correct order, we don't do any further sorting.  */
+  if (a > b)
+    return 1;
+  else if (a < b)
+    return -1;
+  else
+    return 0;
 }
 
 /* Print VMA symbolically to INFO if possible.  */
@@ -1109,24 +1117,22 @@ dump_section_stabs (abfd, stabsect_name, strsect_name)
      char *strsect_name;
 {
   asection *s;
-  if (read_section_stabs (abfd, stabsect_name, strsect_name))
-    {
-      print_section_stabs (abfd, stabsect_name, strsect_name);
-      free (stabs);
-      free (strtab);
-    }
 
-  /* Check for names which are supersets of the selected name */
+  /* Check for section names for which stabsect_name is a prefix, to
+     handle .stab0, etc.  */
   for (s = abfd->sections;
-       s;
+       s != NULL;
        s = s->next)
     {
-      if (strncmp (stabsect_name, s->name, strlen (stabsect_name)) == 0) 
+      if (strncmp (stabsect_name, s->name, strlen (stabsect_name)) == 0
+         && strncmp (strsect_name, s->name, strlen (strsect_name)) != 0)
        {
-         read_section_stabs (abfd, s->name, strsect_name);
-         print_section_stabs (abfd, s->name, strsect_name);
-         free (stabs);
-         free (strtab);
+         if (read_section_stabs (abfd, s->name, strsect_name))
+           {
+             print_section_stabs (abfd, s->name, strsect_name);
+             free (stabs);
+             free (strtab);
+           }
        }
     }
 }
@@ -1156,7 +1162,13 @@ dump_bfd_header (abfd)
   printf ("\nstart address 0x");
   printf_vma (abfd->start_address);
 }
-
+\f
+static void
+dump_bfd_private_header (abfd)
+bfd *abfd;
+{
+  bfd_print_private_bfd_data (abfd, stdout);
+}
 static void
 display_bfd (abfd)
      bfd *abfd;
@@ -1180,6 +1192,8 @@ display_bfd (abfd)
     print_arelt_descr (stdout, abfd, true);
   if (dump_file_header)
     dump_bfd_header (abfd);
+  if (dump_private_headers)
+    dump_bfd_private_header (abfd);
   putchar ('\n');
   if (dump_section_headers)
     dump_headers (abfd);
@@ -1705,7 +1719,7 @@ main (argc, argv)
 
   bfd_init ();
 
-  while ((c = getopt_long (argc, argv, "ib:m:VdDlfahrRtTxsSj:w", long_options,
+  while ((c = getopt_long (argc, argv, "pib:m:VdDlfahrRtTxsSj:w", long_options,
                           (int *) 0))
         != EOF)
     {
@@ -1732,7 +1746,11 @@ main (argc, argv)
        case 'i':
          formats_info = true;
          break;
+       case 'p':
+         dump_private_headers = 1;
+         break;
        case 'x':
+         dump_private_headers = 1;
          dump_symtab = 1;
          dump_reloc_info = 1;
          dump_file_header = true;