Add support for the GBZ80, Z180, and eZ80 variants of the Z80 architecure. Add an...
[deliverable/binutils-gdb.git] / gas / config / tc-v850.c
index e6f35b8acd3ee40d2c8a4c3d10b7306f05406e4a..536fe290fab32e3f06535fc85b5b96b20f608faa 100644 (file)
@@ -1,5 +1,5 @@
 /* tc-v850.c -- Assembler code for the NEC V850
-   Copyright (C) 1996-2015 Free Software Foundation, Inc.
+   Copyright (C) 1996-2020 Free Software Foundation, Inc.
 
    This file is part of GAS, the GNU Assembler.
 
@@ -38,8 +38,8 @@ static signed int soft_float = -1;
 static int machine = -1;
 
 
-/* Indiciates the target BFD architecture.  */
-int          v850_target_arch = bfd_arch_v850_rh850;
+/* Indicates the target BFD architecture.  */
+enum bfd_architecture v850_target_arch = bfd_arch_v850_rh850;
 const char * v850_target_format = "elf32-v850-rh850";
 static flagword v850_e_flags = 0;
 
@@ -229,7 +229,7 @@ do_v850_seg (int i, subsegT sub)
   else
     {
       seg->s = subseg_new (seg->name, sub);
-      bfd_set_section_flags (stdoutput, seg->s, seg->flags);
+      bfd_set_section_flags (seg->s, seg->flags);
       if ((seg->flags & SEC_LOAD) == 0)
        seg_info (seg->s)->bss = 1;
     }
@@ -270,8 +270,7 @@ v850_comm (int area)
   symbolS *symbolP;
   int have_align;
 
-  name = input_line_pointer;
-  c = get_symbol_end ();
+  c = get_symbol_name (&name);
 
   /* Just after name is now '\0'.  */
   p = input_line_pointer;
@@ -936,7 +935,7 @@ static const struct reg_name vector_registers[] =
   (sizeof (vector_registers) / sizeof (struct reg_name))
 
 /* Do a binary search of the given register table to see if NAME is a
-   valid regiter name.  Return the register number from the array on
+   valid register name.  Return the register number from the array on
    success, or -1 on failure.  */
 
 static int
@@ -1005,15 +1004,14 @@ register_name (expressionS *expressionP)
   char c;
 
   /* Find the spelling of the operand.  */
-  start = name = input_line_pointer;
-
-  c = get_symbol_end ();
+  start = input_line_pointer;
+  c = get_symbol_name (&name);
 
   reg_number = reg_name_search (pre_defined_registers, REG_NAME_CNT,
                                name, FALSE);
 
   /* Put back the delimiting char.  */
-  *input_line_pointer = c;
+  (void) restore_line_pointer (c);
 
   expressionP->X_add_symbol = NULL;
   expressionP->X_op_symbol  = NULL;
@@ -1057,14 +1055,13 @@ system_register_name (expressionS *expressionP,
   char c;
 
   /* Find the spelling of the operand.  */
-  start = name = input_line_pointer;
-
-  c = get_symbol_end ();
+  start = input_line_pointer;
+  c = get_symbol_name (&name);
   reg_number = reg_name_search (system_registers, SYSREG_NAME_CNT, name,
                                accept_numbers);
 
   /* Put back the delimiting char.  */
-  *input_line_pointer = c;
+  (void) restore_line_pointer (c);
 
   if (reg_number < 0
       && accept_numbers)
@@ -1118,13 +1115,12 @@ cc_name (expressionS *expressionP,
   char c;
 
   /* Find the spelling of the operand.  */
-  start = name = input_line_pointer;
-
-  c = get_symbol_end ();
+  start = input_line_pointer;
+  c = get_symbol_name (&name);
   reg_number = reg_name_search (cc_names, CC_NAME_CNT, name, accept_numbers);
 
   /* Put back the delimiting char.  */
-  *input_line_pointer = c;
+  (void) restore_line_pointer (c);
 
   if (reg_number < 0
       && accept_numbers)
@@ -1169,13 +1165,12 @@ float_cc_name (expressionS *expressionP,
   char c;
 
   /* Find the spelling of the operand.  */
-  start = name = input_line_pointer;
-
-  c = get_symbol_end ();
+  start = input_line_pointer;
+  c = get_symbol_name (&name);
   reg_number = reg_name_search (float_cc_names, FLOAT_CC_NAME_CNT, name, accept_numbers);
 
   /* Put back the delimiting char.  */
-  *input_line_pointer = c;
+  (void) restore_line_pointer (c);
 
   if (reg_number < 0
       && accept_numbers)
@@ -1220,13 +1215,12 @@ cacheop_name (expressionS * expressionP,
   char c;
 
   /* Find the spelling of the operand.  */
-  start = name = input_line_pointer;
-
-  c = get_symbol_end ();
+  start = input_line_pointer;
+  c = get_symbol_name (&name);
   reg_number = reg_name_search (cacheop_names, CACHEOP_NAME_CNT, name, accept_numbers);
 
   /* Put back the delimiting char.  */
-  *input_line_pointer = c;
+  (void) restore_line_pointer (c);
 
   if (reg_number < 0
       && accept_numbers)
@@ -1269,13 +1263,12 @@ prefop_name (expressionS * expressionP,
   char c;
 
   /* Find the spelling of the operand.  */
-  start = name = input_line_pointer;
-
-  c = get_symbol_end ();
+  start = input_line_pointer;
+  c = get_symbol_name (&name);
   reg_number = reg_name_search (prefop_names, PREFOP_NAME_CNT, name, accept_numbers);
 
   /* Put back the delimiting char.  */
-  *input_line_pointer = c;
+  (void) restore_line_pointer (c);
 
   if (reg_number < 0
       && accept_numbers)
@@ -1317,15 +1310,14 @@ vector_register_name (expressionS *expressionP)
   char c;
 
   /* Find the spelling of the operand.  */
-  start = name = input_line_pointer;
-
-  c = get_symbol_end ();
+  start = input_line_pointer;
+  c = get_symbol_name (&name);
 
   reg_number = reg_name_search (vector_registers, VREG_NAME_CNT,
                                name, FALSE);
 
   /* Put back the delimiting char.  */
-  *input_line_pointer = c;
+  (void) restore_line_pointer (c);
 
   expressionP->X_add_symbol = NULL;
   expressionP->X_op_symbol  = NULL;
@@ -1374,13 +1366,13 @@ skip_white_space (void)
      { rX - rY, rZ }
      etc
 
-   and also parses constant expressions whoes bits indicate the
+   and also parses constant expressions whose bits indicate the
    registers in the lists.  The LSB in the expression refers to
    the lowest numbered permissible register in the register list,
    and so on upwards.  System registers are considered to be very
    high numbers.  */
 
-static char *
+static const char *
 parse_register_list (unsigned long *insn,
                     const struct v850_operand *operand)
 {
@@ -1405,7 +1397,7 @@ parse_register_list (unsigned long *insn,
   skip_white_space ();
 
   /* If the expression starts with a curly brace it is a register list.
-     Otherwise it is a constant expression, whoes bits indicate which
+     Otherwise it is a constant expression, whose bits indicate which
      registers are to be included in the list.  */
   if (*input_line_pointer != '{')
     {
@@ -1570,7 +1562,7 @@ md_show_usage (FILE *stream)
 }
 
 int
-md_parse_option (int c, char *arg)
+md_parse_option (int c, const char *arg)
 {
   if (c != 'm')
     {
@@ -1678,7 +1670,7 @@ md_undefined_symbol (char *name ATTRIBUTE_UNUSED)
   return 0;
 }
 
-char *
+const char *
 md_atof (int type, char *litp, int *sizep)
 {
   return ieee_md_atof (type, litp, sizep, FALSE);
@@ -1886,14 +1878,14 @@ md_convert_frag (bfd *abfd ATTRIBUTE_UNUSED,
 valueT
 md_section_align (asection *seg, valueT addr)
 {
-  int align = bfd_get_section_alignment (stdoutput, seg);
-  return ((addr + (1 << align) - 1) & (-1 << align));
+  int align = bfd_section_alignment (seg);
+  return ((addr + (1 << align) - 1) & -(1 << align));
 }
 
 void
 md_begin (void)
 {
-  char *prev_name = "";
+  const char *prev_name = "";
   const struct v850_opcode *op;
 
   if (strncmp (TARGET_CPU, "v850e3v5", 8) == 0)
@@ -2306,7 +2298,7 @@ md_assemble (char *str)
   const unsigned char *opindex_ptr;
   int next_opindex;
   int relaxable = 0;
-  unsigned long insn;
+  unsigned long insn = 0;
   unsigned long insn_size;
   char *f = NULL;
   int i;
@@ -2792,18 +2784,19 @@ md_assemble (char *str)
              else if ((operand->flags & V850_OPERAND_EP) != 0)
                {
                  char *start = input_line_pointer;
-                 char c = get_symbol_end ();
+                 char *name;
+                 char c = get_symbol_name (&name);
 
-                 if (strcmp (start, "ep") != 0 && strcmp (start, "r30") != 0)
+                 if (strcmp (name, "ep") != 0 && strcmp (name, "r30") != 0)
                    {
                      /* Put things back the way we found them.  */
-                     *input_line_pointer = c;
+                     (void) restore_line_pointer (c);
                      input_line_pointer = start;
                      errmsg = _("expected EP register");
                      goto error;
                    }
 
-                 *input_line_pointer = c;
+                 (void) restore_line_pointer (c);
                  str = input_line_pointer;
                  input_line_pointer = hold;
 
@@ -2835,12 +2828,12 @@ md_assemble (char *str)
              else if ((operand->flags & V850_OPERAND_CACHEOP) != 0)
                {
                  if (!cacheop_name (&ex, TRUE))
-                   errmsg = _("invalid cache oparation name");
+                   errmsg = _("invalid cache operation name");
                }
              else if ((operand->flags & V850_OPERAND_PREFOP) != 0)
                {
                  if (!prefop_name (&ex, TRUE))
-                   errmsg = _("invalid pref oparation name");
+                   errmsg = _("invalid pref operation name");
                }
              else if ((operand->flags & V850_OPERAND_VREG) != 0)
                {
@@ -2850,6 +2843,7 @@ md_assemble (char *str)
              else if ((register_name (&ex)
                        && (operand->flags & V850_OPERAND_REG) == 0))
                {
+                 char *name;
                  char c;
                  int exists = 0;
 
@@ -2862,12 +2856,12 @@ md_assemble (char *str)
 
                  input_line_pointer = str;
 
-                 c = get_symbol_end ();
+                 c = get_symbol_name (&name);
 
-                 if (symbol_find (str) != NULL)
+                 if (symbol_find (name) != NULL)
                    exists = 1;
 
-                 *input_line_pointer = c;
+                 (void) restore_line_pointer (c);
                  input_line_pointer = str;
 
                  expression (&ex);
@@ -3071,7 +3065,6 @@ md_assemble (char *str)
   dwarf2_emit_insn (0);
 
   /* Write out the instruction.  */
-
   if (relaxable && fc > 0)
     {
       insn_size = 2;
@@ -3343,8 +3336,8 @@ tc_gen_reloc (asection *seg ATTRIBUTE_UNUSED, fixS *fixp)
 {
   arelent *reloc;
 
-  reloc                      = xmalloc (sizeof (arelent));
-  reloc->sym_ptr_ptr  = xmalloc (sizeof (asymbol *));
+  reloc                      = XNEW (arelent);
+  reloc->sym_ptr_ptr  = XNEW (asymbol *);
   *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
   reloc->address      = fixp->fx_frag->fr_address + fixp->fx_where;
 
@@ -3482,7 +3475,7 @@ md_apply_fix (fixS *fixP, valueT *valueP, segT seg ATTRIBUTE_UNUSED)
       else
        insn = bfd_getl16 ((unsigned char *) where);
 
-      /* When inserting loop offets a backwards displacement
+      /* When inserting loop offsets a backwards displacement
         is encoded as a positive value.  */
       if (operand->flags & V850_INVERSE_PCREL)
        value = - value;
@@ -3747,8 +3740,8 @@ v850_md_end (void)
   enum v850_notes id;
 
   note_sec = subseg_new (V850_NOTE_SECNAME, 0);
-  bfd_set_section_flags (stdoutput, note_sec, SEC_HAS_CONTENTS | SEC_READONLY | SEC_MERGE);
-  bfd_set_section_alignment (stdoutput, note_sec, 2);
+  bfd_set_section_flags (note_sec, SEC_HAS_CONTENTS | SEC_READONLY | SEC_MERGE);
+  bfd_set_section_alignment (note_sec, 2);
 
   /* Provide default values for all of the notes.  */
   for (id = V850_NOTE_ALIGNMENT; id <= NUM_V850_NOTES; id++)
This page took 0.029713 seconds and 4 git commands to generate.