Jakub Jelinek <jj@ultra.linux.cz>
[deliverable/binutils-gdb.git] / gas / dwarf2dbg.c
index 403452c20c0c9d35158ada6db83ea5b87bacf815..5e447abbb713255478aa2431ddd745833900cf60 100644 (file)
@@ -142,6 +142,34 @@ ls =
     {
       INITIAL_STATE
     },
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    0,
+    NULL,
+    { NULL, 0, 0, 0, 0 },
+    0,
+    {
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+    }
   };
 
 
@@ -340,7 +368,7 @@ get_filenum (filenum, file)
   int i, last = filenum - 1;
   char char0 = file[0];
 
-  if ((unsigned) last >= ls.num_filenames)
+  if (last >= ls.num_filenames)
     last = ls.last_filename;
 
   /* do a quick check against the previously used filename: */
@@ -381,12 +409,12 @@ dwarf2_gen_line_info (addr, l)
   segT saved_seg;
 
   if (flag_debug)
-    fprintf (stderr, "line: addr %llx file `%s' line %u col %u flags %x\n",
-            (long long) addr, l->filename, l->line, l->column, l->flags);
+    fprintf (stderr, "line: addr %lx file `%s' line %u col %u flags %x\n",
+            (unsigned long) addr, l->filename, l->line, l->column, l->flags);
 
   if (filenum > 0 && !l->filename)
     {
-      if (filenum >= ls.num_filenames)
+      if (filenum >= (unsigned int) ls.num_filenames)
        {
          as_warn ("Encountered bad file number in line number debug info!");
          return;
@@ -468,11 +496,14 @@ dwarf2_gen_line_info (addr, l)
       any_output = 1;
       if (addr < ls.sm.addr)
        {
-         if (!ls.sm.empty_sequence)
-           {
-             out_end_sequence ();
-             ls.sm.empty_sequence = 1;
-           }
+         /* This happens when a new frag got allocated (for whatever
+            reason).  Deal with it by generating a reference symbol.
+            Note: no end_sequence needs to be generated because the
+            address did not really decrease (only the reference point
+            changed).
+
+            ??? Perhaps we should directly check for a change of
+            frag_now instead?  */
          out_set_addr (addr);
          ls.sm.addr = addr;
        }
@@ -510,7 +541,7 @@ gen_dir_list ()
            {
              if (strcmp (str, dp) == 0)
                {
-                 ls.file[i].dir = j;
+                 ls.file[i].dir = j + 1;
                  break;
                }
              dp += strlen (dp);
@@ -560,7 +591,8 @@ print_stats (total_size)
       "set_column", "negate_stmt", "set_basic_block", "const_add_pc",
       "fixed_advance_pc"
     };
-  int i, j;
+  size_t i;
+  int j;
 
   fprintf (stderr, "Average size: %g bytes/line\n",
           total_size / (double) ls.num_line_entries);
@@ -655,7 +687,7 @@ dwarf2_finish ()
 
 void
 dwarf2_directive_file (dummy)
-     int dummy;
+     int dummy ATTRIBUTE_UNUSED;
 {
   int len;
 
@@ -682,7 +714,7 @@ dwarf2_directive_file (dummy)
 
 void
 dwarf2_directive_loc (dummy)
-     int dummy;
+     int dummy ATTRIBUTE_UNUSED;
 {
   ls.any_dwarf2_directives = 1;
 
This page took 0.038115 seconds and 4 git commands to generate.