* MAINTAINERS: Added self and Andrew for the ppc sim.
[deliverable/binutils-gdb.git] / binutils / objdump.c
index b86be6652b70df563fd9b36e3e269ec236656851..cc31746c5f89fabd46b7288b11bb3f086e9af6dc 100644 (file)
@@ -220,55 +220,58 @@ usage (stream, status)
      FILE *stream;
      int status;
 {
-  fprintf (stream, _("Usage: %s <switches> file(s)\n"), program_name);
-  fprintf (stream, _(" At least one of the following switches must be given:\n"));
+  fprintf (stream, _("Usage: %s OPTION... FILE...\n"), program_name);
+  fprintf (stream, _("Display information from object FILE.\n"));
+  fprintf (stream, _("\n At least one of the following switches must be given:\n"));
   fprintf (stream, _("\
-  -a  --archive-headers    Display archive header information\n\
-  -f  --file-headers       Display the contents of the overall file header\n\
-  -p  --private-headers    Display object format specific file header contents\n\
-  -h  --[section-]headers  Display the contents of the section headers\n\
-  -x  --all-headers        Display the contents of all headers\n\
-  -d  --disassemble        Display assembler contents of executable sections\n\
-  -D  --disassemble-all    Display assembler contents of all sections\n\
-  -S  --source             Intermix source code with disassembly\n\
-  -s  --full-contents      Display the full contents of all sections requested\n\
-  -g  --debugging          Display debug information in object file\n\
-  -G  --stabs              Display the STABS contents of an ELF format file\n\
-  -t  --syms               Display the contents of the symbol table(s)\n\
-  -T  --dynamic-syms       Display the contents of the dynamic symbol table\n\
-  -r  --reloc              Display the relocation entries in the file\n\
-  -R  --dynamic-reloc      Display the dynamic relocation entries in the file\n\
-  -V  --version            Display this program's version number\n\
-  -i  --info               List object formats and architectures supported\n\
-  -H  --help               Display this information\n\
+  -a, --archive-headers    Display archive header information\n\
+  -f, --file-headers       Display the contents of the overall file header\n\
+  -p, --private-headers    Display object format specific file header contents\n\
+  -h, --[section-]headers  Display the contents of the section headers\n\
+  -x, --all-headers        Display the contents of all headers\n\
+  -d, --disassemble        Display assembler contents of executable sections\n\
+  -D, --disassemble-all    Display assembler contents of all sections\n\
+  -S, --source             Intermix source code with disassembly\n\
+  -s, --full-contents      Display the full contents of all sections requested\n\
+  -g, --debugging          Display debug information in object file\n\
+  -G, --stabs              Display (in raw form) any STABS info in the file\n\
+  -t, --syms               Display the contents of the symbol table(s)\n\
+  -T, --dynamic-syms       Display the contents of the dynamic symbol table\n\
+  -r, --reloc              Display the relocation entries in the file\n\
+  -R, --dynamic-reloc      Display the dynamic relocation entries in the file\n\
+  -V, --version            Display this program's version number\n\
+  -i, --info               List object formats and architectures supported\n\
+  -H, --help               Display this information\n\
 "));
   if (status != 2)
     {
       fprintf (stream, _("\n The following switches are optional:\n"));
       fprintf (stream, _("\
-  -b  --target <bfdname>         Specify the target object format as <bfdname>\n\
-  -m  --architecture <machine>   Specify the target architecture as <machine>\n\
-  -j  --section <name>           Only display information for section <name>\n\
-  -M  --disassembler-options <o> Pass text <o> on to the disassembler\n\
+  -b, --target=BFDNAME           Specify the target object format as BFDNAME\n\
+  -m, --architecture=MACHINE     Specify the target architecture as MACHINE\n\
+  -j, --section=NAME             Only display information for section NAME\n\
+  -M, --disassembler-options=OPT Pass text OPT on to the disassembler\n\
   -EB --endian=big               Assume big endian format when disassembling\n\
   -EL --endian=little            Assume little endian format when disassembling\n\
       --file-start-context       Include context from start of file (with -S)\n\
-  -l  --line-numbers             Include line numbers and filenames in output\n\
-  -C  --demangle                 Decode mangled/processed symbol names\n\
-  -w  --wide                     Format output for more than 80 columns\n\
-  -z  --disassemble-zeroes       Do not skip blocks of zeroes when disassembling\n\
-      --start-address <addr>     Only process data whoes address is >= <addr>\n\
-      --stop-address <addr>      Only process data whoes address is <= <addr>\n\
+  -l, --line-numbers             Include line numbers and filenames in output\n\
+  -C, --demangle[=STYLE]         Decode mangled/processed symbol names\n\
+                                  The STYLE, if specified, can be `auto', 'gnu',\n\
+                                  'lucid', 'arm', 'hp', 'edg', or 'gnu-new-abi'\n\
+  -w, --wide                     Format output for more than 80 columns\n\
+  -z, --disassemble-zeroes       Do not skip blocks of zeroes when disassembling\n\
+      --start-address=ADDR       Only process data whoes address is >= ADDR\n\
+      --stop-address=ADDR        Only process data whoes address is <= ADDR\n\
       --prefix-addresses         Print complete address alongside disassembly\n\
       --[no-]show-raw-insn       Display hex alongside symbolic disassembly\n\
-      --adjust-vma <offset>      Add <offset> to all displayed section addresses\n\
+      --adjust-vma=OFFSET        Add OFFSET to all displayed section addresses\n\
 \n"));
       list_supported_targets (program_name, stream);
-      
+
       disassembler_usage (stream);
     }
   if (status == 0)
-    fprintf (stream, _("Report bugs to %s\n"), REPORT_BUGS_TO);
+    fprintf (stream, _("Report bugs to %s.\n"), REPORT_BUGS_TO);
   exit (status);
 }
 
@@ -287,7 +290,7 @@ static struct option long_options[]=
   {"architecture", required_argument, NULL, 'm'},
   {"archive-headers", no_argument, NULL, 'a'},
   {"debugging", no_argument, NULL, 'g'},
-  {"demangle", no_argument, NULL, 'C'},
+  {"demangle", optional_argument, NULL, 'C'},
   {"disassemble", no_argument, NULL, 'd'},
   {"disassemble-all", no_argument, NULL, 'D'},
   {"disassembler-options", required_argument, NULL, 'M'},
@@ -1572,7 +1575,7 @@ disassemble_data (abfd)
   struct disassemble_info disasm_info;
   struct objdump_disasm_info aux;
   asection *section;
-  unsigned int opb = bfd_octets_per_byte (abfd);
+  unsigned int opb;
 
   print_files = NULL;
   prev_functionname = NULL;
@@ -1594,7 +1597,6 @@ disassemble_data (abfd)
   aux.require_sec = false;
   disasm_info.print_address_func = objdump_print_address;
   disasm_info.symbol_at_address_func = objdump_symbol_at_address;
-  disasm_info.octets_per_byte = opb;
 
   if (machine != (char *) NULL)
     {
@@ -1625,10 +1627,13 @@ disassemble_data (abfd)
       return;
     }
 
+  opb = bfd_octets_per_byte (abfd);
+
   disasm_info.flavour = bfd_get_flavour (abfd);
   disasm_info.arch = bfd_get_arch (abfd);
   disasm_info.mach = bfd_get_mach (abfd);
   disasm_info.disassembler_options = disassembler_options;
+  disasm_info.octets_per_byte = opb;
   
   if (bfd_big_endian (abfd))
     disasm_info.display_endian = disasm_info.endian = BFD_ENDIAN_BIG;
@@ -2606,7 +2611,7 @@ dump_reloc_set (abfd, sec, relpp, relcount)
 }
 \f
 /* The length of the longest architecture name + 1.  */
-#define LONGEST_ARCH sizeof("rs6000:6000")
+#define LONGEST_ARCH sizeof("powerpc:common")
 
 static const char *
 endian_string (endian)
@@ -2630,7 +2635,7 @@ display_target_list ()
   char *dummy_name;
   int t;
 
-  dummy_name = choose_temp_base ();
+  dummy_name = make_temp_file (NULL);
   for (t = 0; bfd_target_vector[t]; t++)
     {
       bfd_target *p = bfd_target_vector[t];
@@ -2651,6 +2656,7 @@ display_target_list ()
        {
          if (bfd_get_error () != bfd_error_invalid_operation)
            nonfatal (p->name);
+         bfd_close_all_done (abfd);
          continue;
        }
 
@@ -2658,6 +2664,7 @@ display_target_list ()
        if (bfd_set_arch_mach (abfd, (enum bfd_architecture) a, 0))
          printf ("  %s\n",
                  bfd_printable_arch_mach ((enum bfd_architecture) a, 0));
+      bfd_close_all_done (abfd);
     }
   unlink (dummy_name);
   free (dummy_name);
@@ -2682,7 +2689,7 @@ display_info_table (first, last)
     printf ("%s ", bfd_target_vector[t]->name);
   putchar ('\n');
 
-  dummy_name = choose_temp_base ();
+  dummy_name = make_temp_file (NULL);
   for (a = (int) bfd_arch_obscure + 1; a < (int) bfd_arch_last; a++)
     if (strcmp (bfd_printable_arch_mach (a, 0), "UNKNOWN!") != 0)
       {
@@ -2725,6 +2732,8 @@ display_info_table (first, last)
                  putchar ('-');
                putchar (' ');
              }
+           if (abfd != NULL)
+             bfd_close_all_done (abfd);
          }
        putchar ('\n');
       }
@@ -2826,6 +2835,17 @@ main (argc, argv)
          break;
        case 'C':
          do_demangle = true;
+         if (optarg != NULL)
+           {
+             enum demangling_styles style;
+             
+             style = cplus_demangle_name_to_style (optarg);
+             if (style == unknown_demangling) 
+               fatal (_("unknown demangling style `%s'"),
+                      optarg);
+             
+             cplus_demangle_set_style (style);
+           }
          break;
        case 'w':
          wide_output = true;
This page took 0.041563 seconds and 4 git commands to generate.