* nm.c: HOST_64_BIT was renamed to BFD_HOST_64_BIT.
authorIan Lance Taylor <ian@airs.com>
Fri, 10 Jun 1994 21:14:49 +0000 (21:14 +0000)
committerIan Lance Taylor <ian@airs.com>
Fri, 10 Jun 1994 21:14:49 +0000 (21:14 +0000)
binutils/ChangeLog
binutils/nm.c

index 562916bd4dd54e18e904938063681704b554cc80..d941d823f4173e06c474de381304c67ed633e871 100644 (file)
@@ -1,5 +1,7 @@
 Fri Jun 10 15:41:25 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)
 
+       * nm.c: HOST_64_BIT was renamed to BFD_HOST_64_BIT.
+
        * objcopy.c (copy_archive): Make the temporary directory in the
        same directory as the output BFD, since we may not have write
        permission on the current directory.  Set the permissions of the
index 2baa9a61caede7769ade51746b09a5eb877cdb91..5b2eadaeaea8f2462850d9cbf3f3798972d60d65 100644 (file)
@@ -152,6 +152,7 @@ static int print_armap = 0; /* describe __.SYMDEF data in archive files.  */
 static int reverse_sort = 0;   /* sort in downward(alpha or numeric) order */
 static int sort_numerically = 0;       /* sort in numeric rather than alpha order */
 static int undefined_only = 0; /* print undefined symbols only */
+static int dynamic = 0;                /* print dynamic symbols.  */
 static int show_version = 0;   /* show the version number */
 
 /* When to print the names of files.  Not mutually exclusive in SYSV format.  */
@@ -159,7 +160,7 @@ static int filename_per_file = 0;   /* Once per file, on its own line.  */
 static int filename_per_symbol = 0;    /* Once per symbol, at start of line.  */
 
 /* Print formats for printing a symbol value.  */
-#ifdef HOST_64_BIT
+#ifdef BFD_HOST_64_BIT
 static char value_format[] = "%08x%08x";
 #else
 static char value_format[] = "%08lx";
@@ -178,6 +179,7 @@ static struct option long_options[] =
 {
   {"debug-syms", no_argument, &print_debug_syms, 1},
   {"demangle", no_argument, &do_demangle, 1},
+  {"dynamic", no_argument, &dynamic, 1},
   {"extern-only", no_argument, &external_only, 1},
   {"format", required_argument, 0, 'f'},
   {"help", no_argument, 0, 'h'},
@@ -202,11 +204,11 @@ usage (stream, status)
      int status;
 {
   fprintf (stream, "\
-Usage: %s [-aABCgnopPrsuvV] [-t radix] [--radix=radix] [--target=bfdname]\n\
+Usage: %s [-aABCDgnopPrsuvV] [-t radix] [--radix=radix] [--target=bfdname]\n\
        [--debug-syms] [--extern-only] [--print-armap] [--print-file-name]\n\
        [--numeric-sort] [--no-sort] [--reverse-sort] [--undefined-only]\n\
        [--portability] [-f {bsd,sysv,posix}] [--format={bsd,sysv,posix}]\n\
-       [--demangle] [--version] [--help] [file...]\n",
+       [--demangle] [--dynamic] [--version] [--help] [file...]\n",
           program_name);
   exit (status);
 }
@@ -222,7 +224,7 @@ set_print_radix (radix)
     case 'd':
     case 'o':
     case 'x':
-#ifdef HOST_64_BIT
+#ifdef BFD_HOST_64_BIT
       value_format[3] = value_format[7] = *radix;
 #else
       value_format[4] = *radix;
@@ -275,7 +277,7 @@ main (argc, argv)
 
   bfd_init ();
 
-  while ((c = getopt_long (argc, argv, "aABCf:gnopPrst:uvV", long_options, (int *) 0)) != EOF)
+  while ((c = getopt_long (argc, argv, "aABCDf:gnopPrst:uvV", long_options, (int *) 0)) != EOF)
     {
       switch (c)
        {
@@ -292,6 +294,9 @@ main (argc, argv)
        case 'C':
          do_demangle = 1;
          break;
+       case 'D':
+         dynamic = 1;
+         break;
        case 'f':
          set_output_format (optarg);
          break;
@@ -509,26 +514,47 @@ display_rel_file (abfd, archive_bfd)
   asymbol **syms;
   long symcount = 0;
 
-  if (!(bfd_get_file_flags (abfd) & HAS_SYMS))
+  if (dynamic)
     {
-      printf ("No symbols in \"%s\".\n", bfd_get_filename (abfd));
-      return;
+      if (!(bfd_get_file_flags (abfd) & DYNAMIC))
+       {
+         printf ("\"%s\" is not a dynamic object.\n",
+                 bfd_get_filename (abfd));
+         return;
+       }
+    }
+  else
+    {
+      if (!(bfd_get_file_flags (abfd) & HAS_SYMS))
+       {
+         printf ("No symbols in \"%s\".\n", bfd_get_filename (abfd));
+         return;
+       }
     }
 
-  storage = bfd_get_symtab_upper_bound (abfd);
+  if (dynamic)
+    storage = bfd_get_dynamic_symtab_upper_bound (abfd);
+  else
+    storage = bfd_get_symtab_upper_bound (abfd);
   if (storage < 0)
     bfd_fatal (bfd_get_filename (abfd));
   if (storage == 0)
     {
     nosymz:
-      fprintf (stderr, "%s: Symflags set but there are none?\n",
-              bfd_get_filename (abfd));
+      if (dynamic)
+       fprintf (stderr, "%s: no symbols\n", bfd_get_filename (abfd));
+      else
+       fprintf (stderr, "%s: Symflags set but there are none?\n",
+                bfd_get_filename (abfd));
       return;
     }
 
   syms = (asymbol **) xmalloc (storage);
 
-  symcount = bfd_canonicalize_symtab (abfd, syms);
+  if (dynamic)
+    symcount = bfd_canonicalize_dynamic_symtab (abfd, syms);
+  else
+    symcount = bfd_canonicalize_symtab (abfd, syms);
   if (symcount < 0)
     bfd_fatal (bfd_get_filename (abfd));
   if (symcount == 0)
@@ -800,7 +826,7 @@ print_symbol_info_bsd (info, abfd)
     printf ("        ");
   else
     {
-#ifdef HOST_64_BIT
+#ifdef BFD_HOST_64_BIT
       printf (value_format, uint64_typeHIGH (info->value),
              uint64_typeLOW (info->value));
 #else
@@ -830,7 +856,7 @@ print_symbol_info_sysv (info, abfd)
     printf ("        ");       /* Value */
   else
     {
-#ifdef HOST_64_BIT
+#ifdef BFD_HOST_64_BIT
       printf (value_format, uint64_typeHIGH (info->value),
              uint64_typeLOW (info->value));
 #else
@@ -860,7 +886,7 @@ print_symbol_info_posix (info, abfd)
     printf ("        ");
   else
     {
-#ifdef HOST_64_BIT
+#ifdef BFD_HOST_64_BIT
       printf (value_format, uint64_typeHIGH (info->value),
              uint64_typeLOW (info->value));
 #else