dwarf2out.c (DWARF_INITIAL_LENGTH_SIZE_STR): New.
authorDavid Edelsohn <dje.gcc@gmail.com>
Fri, 2 Jun 2017 14:27:15 +0000 (14:27 +0000)
committerDavid Edelsohn <dje@gcc.gnu.org>
Fri, 2 Jun 2017 14:27:15 +0000 (10:27 -0400)
        * dwarf2out.c (DWARF_INITIAL_LENGTH_SIZE_STR): New.
        (dl_section_ref): New.
        (dwarf2out_finish): Copy debug_line_section_label to dl_section_ref.
        On AIX, append an expression to subtract the size of the
        section length to dl_section_ref.

From-SVN: r248831

gcc/ChangeLog
gcc/dwarf2out.c

index 7c75984ddced77dcff6923c6efed1c08bc75e8d9..3d945d61bc1093bccf7d9b9203eaaceb9f97f75f 100644 (file)
@@ -1,3 +1,11 @@
+2017-06-02  David Edelsohn  <dje.gcc@gmail.com>
+
+       * dwarf2out.c (DWARF_INITIAL_LENGTH_SIZE_STR): New.
+       (dl_section_ref): New.
+       (dwarf2out_finish): Copy debug_line_section_label to dl_section_ref.
+       On AIX, append an expression to subtract the size of the
+       section length to dl_section_ref.
+
 2017-06-02  Will Schmidt  <will_schmidt@vnet.ibm.com>
 
        * config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling
index 036d0a8f84686ce7ae3de6ed73cf9a7b2ed8d8c1..ff1293f08e331f6b9f659243bfd75522862dbc50 100644 (file)
@@ -189,6 +189,10 @@ static GTY(()) section *debug_frame_section;
 #define DWARF_INITIAL_LENGTH_SIZE (DWARF_OFFSET_SIZE == 4 ? 4 : 12)
 #endif
 
+#ifndef DWARF_INITIAL_LENGTH_SIZE_STR
+#define DWARF_INITIAL_LENGTH_SIZE_STR (DWARF_OFFSET_SIZE == 4 ? "-4" : "-12")
+#endif
+
 /* Round SIZE up to the nearest BOUNDARY.  */
 #define DWARF_ROUND(SIZE,BOUNDARY) \
   ((((SIZE) + (BOUNDARY) - 1) / (BOUNDARY)) * (BOUNDARY))
@@ -29670,6 +29674,7 @@ dwarf2out_finish (const char *)
   comdat_type_node *ctnode;
   dw_die_ref main_comp_unit_die;
   unsigned char checksum[16];
+  char dl_section_ref[MAX_ARTIFICIAL_LABEL_BYTES];
 
   /* Flush out any latecomers to the limbo party.  */
   flush_limbo_die_list ();
@@ -29787,9 +29792,15 @@ dwarf2out_finish (const char *)
        }
     }
 
+  /* AIX Assembler inserts the length, so adjust the reference to match the
+     offset expected by debuggers.  */
+  strcpy (dl_section_ref, debug_line_section_label);
+  if (XCOFF_DEBUGGING_INFO)
+    strcat (dl_section_ref, DWARF_INITIAL_LENGTH_SIZE_STR);
+
   if (debug_info_level >= DINFO_LEVEL_TERSE)
     add_AT_lineptr (main_comp_unit_die, DW_AT_stmt_list,
-                   debug_line_section_label);
+                   dl_section_ref);
 
   if (have_macinfo)
     add_AT_macptr (comp_unit_die (),
@@ -29865,7 +29876,7 @@ dwarf2out_finish (const char *)
       if (debug_info_level >= DINFO_LEVEL_TERSE)
         add_AT_lineptr (ctnode->root_die, DW_AT_stmt_list,
                         (!dwarf_split_debug_info
-                         ? debug_line_section_label
+                         ? dl_section_ref
                          : debug_skeleton_line_section_label));
 
       output_comdat_type_unit (ctnode);