Change avxvnni disassembler output from {vex3} to {vex}
[binutils-gdb.git] / gas / as.c
index 51bb7210ec825a7bc63f1858d973f1ca8be6b167..eda759452387399a89d9373520d618fa99c50573 100644 (file)
--- a/gas/as.c
+++ b/gas/as.c
@@ -102,6 +102,10 @@ int verbose = 0;
    MD_AFTER_PARSE_ARGS.  */
 int flag_dwarf_cie_version = -1;
 
+/* The maximum level of DWARF DEBUG information we should manufacture.
+   This defaults to 3 unless overridden by a command line option.  */
+unsigned int dwarf_level = 3;
+
 #if defined OBJ_ELF || defined OBJ_MAYBE_ELF
 int flag_use_elf_stt_common = DEFAULT_GENERATE_ELF_STT_COMMON;
 bfd_boolean flag_generate_build_notes = DEFAULT_GENERATE_BUILD_NOTES;
@@ -338,14 +342,10 @@ Options:\n\
   fprintf (stream, _("\
   --gstabs+               generate STABS debug info with GNU extensions\n"));
   fprintf (stream, _("\
-  --gdwarf-2              generate DWARF2 debugging information\n"));
+  --gdwarf-<N>            generate DWARF<N> debugging information. 2 <= <N> <= 5\n"));
   fprintf (stream, _("\
   --gdwarf-sections       generate per-function section names for DWARF line information\n"));
   fprintf (stream, _("\
-  --hash-size=<value>     set the hash table size close to <value>\n"));
-  fprintf (stream, _("\
-  --help                  show this message and exit\n"));
-  fprintf (stream, _("\
   --target-help           show target specific options\n"));
   fprintf (stream, _("\
   -I DIR                  add DIR to search list for .include directives\n"));
@@ -368,10 +368,6 @@ Options:\n\
   fprintf (stream, _("\
   -R                      fold data section into text section\n"));
   fprintf (stream, _("\
-  --reduce-memory-overheads \n\
-                          prefer smaller memory use at the cost of longer\n\
-                          assembly times\n"));
-  fprintf (stream, _("\
   --statistics            print various measured statistics from execution\n"));
   fprintf (stream, _("\
   --strip-local-absolute  strip local absolute symbols\n"));
@@ -484,7 +480,10 @@ parse_args (int * pargc, char *** pargv)
       OPTION_DEPFILE,
       OPTION_GSTABS,
       OPTION_GSTABS_PLUS,
-      OPTION_GDWARF2,
+      OPTION_GDWARF_2,
+      OPTION_GDWARF_3,
+      OPTION_GDWARF_4,
+      OPTION_GDWARF_5,
       OPTION_GDWARF_SECTIONS,
       OPTION_GDWARF_CIE_VERSION,
       OPTION_STRIP_LOCAL_ABSOLUTE,
@@ -537,10 +536,13 @@ parse_args (int * pargc, char *** pargv)
     ,{"generate-missing-build-notes", required_argument, NULL, OPTION_ELF_BUILD_NOTES}
 #endif
     ,{"fatal-warnings", no_argument, NULL, OPTION_WARN_FATAL}
-    ,{"gdwarf-2", no_argument, NULL, OPTION_GDWARF2}
-    /* GCC uses --gdwarf-2 but GAS uses to use --gdwarf2,
+    ,{"gdwarf-2", no_argument, NULL, OPTION_GDWARF_2}
+    ,{"gdwarf-3", no_argument, NULL, OPTION_GDWARF_3}
+    ,{"gdwarf-4", no_argument, NULL, OPTION_GDWARF_4}
+    ,{"gdwarf-5", no_argument, NULL, OPTION_GDWARF_5}
+    /* GCC uses --gdwarf-2 but GAS used to to use --gdwarf2,
        so we keep it here for backwards compatibility.  */
-    ,{"gdwarf2", no_argument, NULL, OPTION_GDWARF2}
+    ,{"gdwarf2", no_argument, NULL, OPTION_GDWARF_2}
     ,{"gdwarf-sections", no_argument, NULL, OPTION_GDWARF_SECTIONS}
     ,{"gdwarf-cie-version", required_argument, NULL, OPTION_GDWARF_CIE_VERSION}
     ,{"gen-debug", no_argument, NULL, 'g'}
@@ -814,10 +816,20 @@ This program has absolutely no warranty.\n"));
              && md_parse_option (optc, optarg))
            continue;
 
+         /* We end up here for any -gsomething-not-already-a-long-option.
+            give some useful feedback on not (yet) supported -gdwarfxxx
+            versions/sections/options.  */
+         if (strncmp (old_argv[optind - 1], "-gdwarf",
+                      strlen ("-gdwarf")) == 0)
+           as_fatal (_("unknown DWARF option %s\n"), old_argv[optind - 1]);
+
          if (md_debug_format_selector)
            debug_type = md_debug_format_selector (& use_gnu_debug_info_extensions);
          else if (IS_ELF)
-           debug_type = DEBUG_DWARF2;
+           {
+             debug_type = DEBUG_DWARF2;
+             dwarf_level = 2;
+           }
          else
            debug_type = DEBUG_STABS;
          break;
@@ -829,8 +841,24 @@ This program has absolutely no warranty.\n"));
          debug_type = DEBUG_STABS;
          break;
 
-       case OPTION_GDWARF2:
+       case OPTION_GDWARF_2:
+         debug_type = DEBUG_DWARF2;
+         dwarf_level = 2;
+         break;
+
+       case OPTION_GDWARF_3:
+         debug_type = DEBUG_DWARF2;
+         dwarf_level = 3;
+         break;
+
+       case OPTION_GDWARF_4:
          debug_type = DEBUG_DWARF2;
+         dwarf_level = 4;
+         break;
+
+       case OPTION_GDWARF_5:
+         debug_type = DEBUG_DWARF2;
+         dwarf_level = 5;
          break;
 
        case OPTION_GDWARF_SECTIONS:
@@ -845,6 +873,21 @@ This program has absolutely no warranty.\n"));
               || flag_dwarf_cie_version == 2
               || flag_dwarf_cie_version > 4)
             as_fatal (_("Invalid --gdwarf-cie-version `%s'"), optarg);
+         switch (flag_dwarf_cie_version)
+           {
+           case 1:
+             if (dwarf_level < 2)
+               dwarf_level = 2;
+             break;
+           case 3:
+             if (dwarf_level < 3)
+               dwarf_level = 3;
+             break;
+           default:
+             if (dwarf_level < 4)
+               dwarf_level = 4;
+             break;
+           }
          break;
 
        case 'J':
@@ -1056,22 +1099,10 @@ This program has absolutely no warranty.\n"));
          break;
 
        case OPTION_REDUCE_MEMORY_OVERHEADS:
-         /* The only change we make at the moment is to reduce
-            the size of the hash tables that we use.  */
-         set_gas_hash_table_size (4051);
          break;
 
        case OPTION_HASH_TABLE_SIZE:
-         {
-           unsigned long new_size;
-
-            new_size = strtoul (optarg, NULL, 0);
-            if (new_size)
-              set_gas_hash_table_size (new_size);
-            else
-              as_fatal (_("--hash-size needs a numeric argument"));
-           break;
-         }
+         break;
        }
     }
 
@@ -1344,7 +1375,7 @@ main (int argc, char ** argv)
   dwarf2_init ();
 
   local_symbol_make (".gasversion.", absolute_section,
-                    BFD_VERSION / 10000UL, &predefined_address_frag);
+                    &predefined_address_frag, BFD_VERSION / 10000UL);
 
   /* Now that we have fully initialized, and have created the output
      file, define any symbols requested by --defsym command line
@@ -1354,8 +1385,8 @@ main (int argc, char ** argv)
       symbolS *sym;
       struct defsym_list *next;
 
-      sym = symbol_new (defsyms->name, absolute_section, defsyms->value,
-                       &zero_address_frag);
+      sym = symbol_new (defsyms->name, absolute_section,
+                       &zero_address_frag, defsyms->value);
       /* Make symbols defined on the command line volatile, so that they
         can be redefined inside a source file.  This makes this assembler's
         behaviour compatible with earlier versions, but it may not be