[BINUTILS, AARCH64, 7/8] Add system registers for Memory Tagging Extension
[deliverable/binutils-gdb.git] / gas / dwarf2dbg.c
index 71932653d6dfaf805e3635ca3da707caf35499a5..57c837b67a4dddee92ce26014ee6012edda8de18 100644 (file)
@@ -251,6 +251,7 @@ generic_dwarf2_emit_offset (symbolS *symbol, unsigned int size)
 {
   expressionS exp;
 
+  memset (&exp, 0, sizeof exp);
   exp.X_op = O_symbol;
   exp.X_add_symbol = symbol;
   exp.X_add_number = 0;
@@ -379,6 +380,7 @@ set_or_check_view (struct line_entry *e, struct line_entry *p,
          if (view_assert_failed)
            {
              expressionS chk;
+
              memset (&chk, 0, sizeof (chk));
              chk.X_unsigned = 1;
              chk.X_op = O_add;
@@ -424,7 +426,7 @@ set_or_check_view (struct line_entry *e, struct line_entry *p,
   if (!S_IS_DEFINED (e->loc.view))
     {
       symbol_set_value_expression (e->loc.view, &viewx);
-      S_SET_SEGMENT (e->loc.view, absolute_section);
+      S_SET_SEGMENT (e->loc.view, expr_section);
       symbol_set_frag (e->loc.view, &zero_address_frag);
     }
 
@@ -958,16 +960,19 @@ dwarf2_directive_loc (int dummy ATTRIBUTE_UNUSED)
              if (!name)
                return;
              sym = symbol_find_or_make (name);
-             if (S_IS_DEFINED (sym))
+             if (S_IS_DEFINED (sym) || symbol_equated_p (sym))
                {
-                 if (!S_CAN_BE_REDEFINED (sym))
-                   as_bad (_("symbol `%s' is already defined"), name);
-                 else
+                 if (S_IS_VOLATILE (sym))
                    sym = symbol_clone (sym, 1);
-                 S_SET_SEGMENT (sym, undefined_section);
-                 S_SET_VALUE (sym, 0);
-                 symbol_set_frag (sym, &zero_address_frag);
+                 else if (!S_CAN_BE_REDEFINED (sym))
+                   {
+                     as_bad (_("symbol `%s' is already defined"), name);
+                     return;
+                   }
                }
+             S_SET_SEGMENT (sym, undefined_section);
+             S_SET_VALUE (sym, 0);
+             symbol_set_frag (sym, &zero_address_frag);
            }
          current.view = sym;
        }
@@ -1108,6 +1113,7 @@ out_set_addr (symbolS *sym)
 {
   expressionS exp;
 
+  memset (&exp, 0, sizeof exp);
   out_opcode (DW_LNS_extended_op);
   out_uleb128 (sizeof_address + 1);
 
@@ -1373,6 +1379,7 @@ emit_fixed_inc_line_addr (int line_delta, addressT addr_delta, fragS *frag,
       symbolS *to_sym;
       expressionS exp;
 
+      memset (&exp, 0, sizeof exp);
       gas_assert (pexp->X_op == O_subtract);
       to_sym = pexp->X_add_symbol;
 
@@ -1413,6 +1420,7 @@ relax_inc_line_addr (int line_delta, symbolS *to_sym, symbolS *from_sym)
   expressionS exp;
   int max_chars;
 
+  memset (&exp, 0, sizeof exp);
   exp.X_op = O_subtract;
   exp.X_add_symbol = to_sym;
   exp.X_op_symbol = from_sym;
@@ -1780,6 +1788,7 @@ out_debug_line (segT line_seg)
   struct line_seg *s;
   int sizeof_offset;
 
+  memset (&exp, 0, sizeof exp);
   sizeof_offset = out_header (line_seg, &exp);
   line_end = exp.X_add_symbol;
 
@@ -1850,6 +1859,7 @@ out_debug_ranges (segT ranges_seg)
   expressionS exp;
   unsigned int i;
 
+  memset (&exp, 0, sizeof exp);
   subseg_set (ranges_seg, 0);
 
   /* Base Address Entry.  */
@@ -1903,6 +1913,7 @@ out_debug_aranges (segT aranges_seg, segT info_seg)
   char *p;
   int sizeof_offset;
 
+  memset (&exp, 0, sizeof exp);
   sizeof_offset = out_header (aranges_seg, &exp);
   aranges_end = exp.X_add_symbol;
   size = -exp.X_add_number;
@@ -2012,6 +2023,7 @@ out_debug_info (segT info_seg, segT abbrev_seg, segT line_seg, segT ranges_seg,
   symbolS *info_end;
   int sizeof_offset;
 
+  memset (&exp, 0, sizeof exp);
   sizeof_offset = out_header (info_seg, &exp);
   info_end = exp.X_add_symbol;
 
This page took 0.024041 seconds and 4 git commands to generate.