dwarf2out.c (output_loc_list): Don't use deltas if we have a separate line info table...
authorDaniel Berlin <dberlin@dberlin.org>
Fri, 6 Feb 2004 18:25:16 +0000 (18:25 +0000)
committerJosef Zlomek <zlomek@gcc.gnu.org>
Fri, 6 Feb 2004 18:25:16 +0000 (18:25 +0000)
* dwarf2out.c (output_loc_list): Don't use deltas if we have
a separate line info table in use.
Use the correct size for terminators.
(output_die): Use offset, not delta.

From-SVN: r77409

gcc/ChangeLog
gcc/dwarf2out.c

index 72a80b9b463ca90295446bed7856769625795d38..f2ea89725e052f40b7696288ee2b4e925e887764 100644 (file)
@@ -1,3 +1,10 @@
+2004-02-06  Daniel Berlin  <dberlin@dberlin.org>
+
+       * dwarf2out.c (output_loc_list): Don't use deltas if we have
+       a separate line info table in use.
+       Use the correct size for terminators.
+       (output_die): Use offset, not delta.
+
 2004-02-06  H.J. Lu  <hongjiu.lu@intel.com>
 
        * doc/invoke.texi: Remove the pni option from -mfpmath=.
index 824add7ee73a6fd6a5379460dd6c523a6753a3bc..468b6dd628e4cfe08e1844ee11f814c546ecf6f3 100644 (file)
@@ -6551,16 +6551,28 @@ output_loc_list (dw_loc_list_ref list_head)
                             "Location list base address specifier base");
     }
 
+  /* Walk the location list, and output each range + expression.  */
   for (curr = list_head; curr != NULL; curr = curr->dw_loc_next)
     {
       unsigned long size;
-
-      dw2_asm_output_delta (DWARF2_ADDR_SIZE, curr->begin, curr->section,
-                           "Location list begin address (%s)",
-                           list_head->ll_symbol);
-      dw2_asm_output_delta (DWARF2_ADDR_SIZE, curr->end, curr->section,
-                           "Location list end address (%s)",
-                           list_head->ll_symbol);
+      if (separate_line_info_table_in_use == 0)
+       {
+         dw2_asm_output_delta (DWARF2_ADDR_SIZE, curr->begin, curr->section,
+                               "Location list begin address (%s)",
+                               list_head->ll_symbol);
+         dw2_asm_output_delta (DWARF2_ADDR_SIZE, curr->end, curr->section,
+                               "Location list end address (%s)",
+                               list_head->ll_symbol);
+       }
+      else
+       {
+         dw2_asm_output_addr (DWARF2_ADDR_SIZE, curr->begin,
+                              "Location list begin address (%s)",
+                              list_head->ll_symbol);
+         dw2_asm_output_addr (DWARF2_ADDR_SIZE, curr->end,
+                              "Location list end address (%s)",
+                              list_head->ll_symbol);
+       }
       size = size_of_locs (curr->expr);
 
       /* Output the block length for this list of location operations.  */
@@ -6571,10 +6583,10 @@ output_loc_list (dw_loc_list_ref list_head)
       output_loc_sequence (curr->expr);
     }
 
-  dw2_asm_output_data (DWARF_OFFSET_SIZE, 0,
+  dw2_asm_output_data (DWARF2_ADDR_SIZE, 0,
                       "Location list terminator begin (%s)",
                       list_head->ll_symbol);
-  dw2_asm_output_data (DWARF_OFFSET_SIZE, 0,
+  dw2_asm_output_data (DWARF2_ADDR_SIZE, 0,
                       "Location list terminator end (%s)",
                       list_head->ll_symbol);
 }
@@ -6694,8 +6706,7 @@ output_die (dw_die_ref die)
 
            if (sym == 0)
              abort ();
-           dw2_asm_output_delta (DWARF_OFFSET_SIZE, sym,
-                                 loc_section_label, "%s", name);
+           dw2_asm_output_offset (DWARF_OFFSET_SIZE, sym, "%s", name);
          }
          break;