On Tue, Sep 19, 2017 at 05:24:14PM +0200, Jakub Jelinek wrote:
> These changes broke DWARF-5 support.  E.g. in gcc-7 and before this change
> there was:

Here is a fix, make check-g++ RUNTESTFLAGS=dwarf2.exp now passes again
even with !DWARF2_ASM_LINE_DEBUG_INFO compiler.  Haven't tried LTO (except
for what is in make check).  Bootstrapped/regtested on x86_64-linux and
i686-linux, ok for trunk?

2017-09-19  Jakub Jelinek  <ja...@redhat.com>

        * dwarf2out.c (DEBUG_LTO_DWO_INFO_SECTION): Reorder defines.
        (DEBUG_LTO_ABBREV_SECTION): Likewise.
        (DEBUG_LTO_MACINFO_SECTION): Likewise.
        (DEBUG_MACRO_SECTION): Likewise.
        (DEBUG_LTO_MACRO_SECTION): Likewise.
        (DEBUG_STR_DWO_SECTION): Likewise.
        (DEBUG_LTO_STR_DWO_SECTION): Likewise.
        (DEBUG_LTO_LINE_SECTION): Drop .dwo suffix from the name.
        (DEBUG_LTO_DWO_LINE_SECTION): Define.
        (DEBUG_LTO_LINE_STR_SECTION): Define.
        (init_sections_and_labels): Initialize debug_line_str_section
        variable.  Initialize debug_loc_section for -gdwarf-5 to
        DEBUG_LOCLISTS_SECTION.  Formatting fixes.

--- gcc/dwarf2out.c.jj  2017-09-19 16:51:16.000000000 +0200
+++ gcc/dwarf2out.c     2017-09-19 18:07:51.348919965 +0200
@@ -3702,24 +3702,24 @@ new_addr_loc_descr (rtx addr, enum dtpre
 #ifndef DEBUG_DWO_INFO_SECTION
 #define DEBUG_DWO_INFO_SECTION ".debug_info.dwo"
 #endif
-#ifndef DEBUG_LTO_DWO_INFO_SECTION
-#define DEBUG_LTO_DWO_INFO_SECTION ".gnu.debuglto_.debug_info.dwo"
-#endif
 #ifndef DEBUG_LTO_INFO_SECTION
 #define DEBUG_LTO_INFO_SECTION ".gnu.debuglto_.debug_info"
 #endif
+#ifndef DEBUG_LTO_DWO_INFO_SECTION
+#define DEBUG_LTO_DWO_INFO_SECTION ".gnu.debuglto_.debug_info.dwo"
+#endif
 #ifndef DEBUG_ABBREV_SECTION
 #define DEBUG_ABBREV_SECTION   ".debug_abbrev"
 #endif
+#ifndef DEBUG_LTO_ABBREV_SECTION
+#define DEBUG_LTO_ABBREV_SECTION ".gnu.debuglto_.debug_abbrev"
+#endif
 #ifndef DEBUG_DWO_ABBREV_SECTION
 #define DEBUG_DWO_ABBREV_SECTION ".debug_abbrev.dwo"
 #endif
 #ifndef DEBUG_LTO_DWO_ABBREV_SECTION
 #define DEBUG_LTO_DWO_ABBREV_SECTION ".gnu.debuglto_.debug_abbrev.dwo"
 #endif
-#ifndef DEBUG_LTO_ABBREV_SECTION
-#define DEBUG_LTO_ABBREV_SECTION ".gnu.debuglto_.debug_abbrev"
-#endif
 #ifndef DEBUG_ARANGES_SECTION
 #define DEBUG_ARANGES_SECTION  ".debug_aranges"
 #endif
@@ -3729,35 +3729,38 @@ new_addr_loc_descr (rtx addr, enum dtpre
 #ifndef DEBUG_MACINFO_SECTION
 #define DEBUG_MACINFO_SECTION     ".debug_macinfo"
 #endif
+#ifndef DEBUG_LTO_MACINFO_SECTION
+#define DEBUG_LTO_MACINFO_SECTION      ".gnu.debuglto_.debug_macinfo"
+#endif
 #ifndef DEBUG_DWO_MACINFO_SECTION
 #define DEBUG_DWO_MACINFO_SECTION      ".debug_macinfo.dwo"
 #endif
 #ifndef DEBUG_LTO_DWO_MACINFO_SECTION
 #define DEBUG_LTO_DWO_MACINFO_SECTION  ".gnu.debuglto_.debug_macinfo.dwo"
 #endif
-#ifndef DEBUG_LTO_MACINFO_SECTION
-#define DEBUG_LTO_MACINFO_SECTION      ".gnu.debuglto_.debug_macinfo"
+#ifndef DEBUG_MACRO_SECTION
+#define DEBUG_MACRO_SECTION    ".debug_macro"
+#endif
+#ifndef DEBUG_LTO_MACRO_SECTION
+#define DEBUG_LTO_MACRO_SECTION ".gnu.debuglto_.debug_macro"
 #endif
 #ifndef DEBUG_DWO_MACRO_SECTION
 #define DEBUG_DWO_MACRO_SECTION        ".debug_macro.dwo"
 #endif
-#ifndef DEBUG_MACRO_SECTION
-#define DEBUG_MACRO_SECTION    ".debug_macro"
-#endif
 #ifndef DEBUG_LTO_DWO_MACRO_SECTION
 #define DEBUG_LTO_DWO_MACRO_SECTION    ".gnu.debuglto_.debug_macro.dwo"
 #endif
-#ifndef DEBUG_LTO_MACRO_SECTION
-#define DEBUG_LTO_MACRO_SECTION ".gnu.debuglto_.debug_macro"
-#endif
 #ifndef DEBUG_LINE_SECTION
 #define DEBUG_LINE_SECTION     ".debug_line"
 #endif
+#ifndef DEBUG_LTO_LINE_SECTION
+#define DEBUG_LTO_LINE_SECTION ".gnu.debuglto_.debug_line"
+#endif
 #ifndef DEBUG_DWO_LINE_SECTION
 #define DEBUG_DWO_LINE_SECTION ".debug_line.dwo"
 #endif
-#ifndef DEBUG_LTO_LINE_SECTION
-#define DEBUG_LTO_LINE_SECTION ".gnu.debuglto_.debug_line.dwo"
+#ifndef DEBUG_LTO_DWO_LINE_SECTION
+#define DEBUG_LTO_DWO_LINE_SECTION ".gnu.debuglto_.debug_line.dwo"
 #endif
 #ifndef DEBUG_LOC_SECTION
 #define DEBUG_LOC_SECTION      ".debug_loc"
@@ -3790,18 +3793,18 @@ new_addr_loc_descr (rtx addr, enum dtpre
 #ifndef DEBUG_LTO_DWO_STR_OFFSETS_SECTION
 #define DEBUG_LTO_DWO_STR_OFFSETS_SECTION 
".gnu.debuglto_.debug_str_offsets.dwo"
 #endif
-#ifndef DEBUG_STR_DWO_SECTION
-#define DEBUG_STR_DWO_SECTION   ".debug_str.dwo"
-#endif
-#ifndef DEBUG_LTO_STR_DWO_SECTION
-#define DEBUG_LTO_STR_DWO_SECTION ".gnu.debuglto_.debug_str.dwo"
-#endif
 #ifndef DEBUG_STR_SECTION
 #define DEBUG_STR_SECTION  ".debug_str"
 #endif
 #ifndef DEBUG_LTO_STR_SECTION
 #define DEBUG_LTO_STR_SECTION ".gnu.debuglto_.debug_str"
 #endif
+#ifndef DEBUG_STR_DWO_SECTION
+#define DEBUG_STR_DWO_SECTION   ".debug_str.dwo"
+#endif
+#ifndef DEBUG_LTO_STR_DWO_SECTION
+#define DEBUG_LTO_STR_DWO_SECTION ".gnu.debuglto_.debug_str.dwo"
+#endif
 #ifndef DEBUG_RANGES_SECTION
 #define DEBUG_RANGES_SECTION   ".debug_ranges"
 #endif
@@ -3811,6 +3814,9 @@ new_addr_loc_descr (rtx addr, enum dtpre
 #ifndef DEBUG_LINE_STR_SECTION
 #define DEBUG_LINE_STR_SECTION  ".debug_line_str"
 #endif
+#ifndef DEBUG_LTO_LINE_STR_SECTION
+#define DEBUG_LTO_LINE_STR_SECTION  ".gnu.debuglto_.debug_line_str"
+#endif
 
 /* Standard ELF section names for compiled code and data.  */
 #ifndef TEXT_SECTION_NAME
@@ -27188,7 +27194,8 @@ output_macinfo (const char *debug_line_l
 static void
 init_sections_and_labels (bool early_lto_debug)
 {
-  /* As we may get called multiple times have a generation count for labels.  
*/
+  /* As we may get called multiple times have a generation count for
+     labels.  */
   static unsigned generation = 0;
 
   if (early_lto_debug)
@@ -27201,14 +27208,14 @@ init_sections_and_labels (bool early_lto
          debug_abbrev_section = get_section (DEBUG_LTO_ABBREV_SECTION,
                                              SECTION_DEBUG | SECTION_EXCLUDE,
                                              NULL);
-         debug_macinfo_section_name = ((dwarf_strict && dwarf_version < 5)
-                                       ? DEBUG_LTO_MACINFO_SECTION
-                                       : DEBUG_LTO_MACRO_SECTION);
+         debug_macinfo_section_name
+           = ((dwarf_strict && dwarf_version < 5)
+              ? DEBUG_LTO_MACINFO_SECTION : DEBUG_LTO_MACRO_SECTION);
          debug_macinfo_section = get_section (debug_macinfo_section_name,
                                               SECTION_DEBUG
                                               | SECTION_EXCLUDE, NULL);
-         /* For macro info we have to refer to a debug_line section, so similar
-            to split-dwarf emit a skeleton one for early debug.  */
+         /* For macro info we have to refer to a debug_line section, so
+            similar to split-dwarf emit a skeleton one for early debug.  */
          debug_skeleton_line_section
            = get_section (DEBUG_LTO_LINE_SECTION,
                           SECTION_DEBUG | SECTION_EXCLUDE, NULL);
@@ -27228,15 +27235,16 @@ init_sections_and_labels (bool early_lto
          debug_skeleton_info_section = get_section (DEBUG_LTO_INFO_SECTION,
                                                     SECTION_DEBUG
                                                     | SECTION_EXCLUDE, NULL);
-         debug_skeleton_abbrev_section = get_section (DEBUG_LTO_ABBREV_SECTION,
-                                                      SECTION_DEBUG
-                                                      | SECTION_EXCLUDE, NULL);
+         debug_skeleton_abbrev_section
+           = get_section (DEBUG_LTO_ABBREV_SECTION,
+                          SECTION_DEBUG | SECTION_EXCLUDE, NULL);
          ASM_GENERATE_INTERNAL_LABEL (debug_skeleton_abbrev_section_label,
                                       DEBUG_SKELETON_ABBREV_SECTION_LABEL,
                                       generation);
 
-         /* Somewhat confusing detail: The skeleton_[abbrev|info] sections 
stay in
-            the main .o, but the skeleton_line goes into the split off dwo.  */
+         /* Somewhat confusing detail: The skeleton_[abbrev|info] sections
+            stay in the main .o, but the skeleton_line goes into the split
+            off dwo.  */
          debug_skeleton_line_section
            = get_section (DEBUG_LTO_LINE_SECTION,
                           SECTION_DEBUG | SECTION_EXCLUDE, NULL);
@@ -27251,9 +27259,10 @@ init_sections_and_labels (bool early_lto
                                       DEBUG_SKELETON_INFO_SECTION_LABEL,
                                       generation);
          debug_str_dwo_section = get_section (DEBUG_LTO_STR_DWO_SECTION,
-                                              DEBUG_STR_DWO_SECTION_FLAGS, 
NULL);
+                                              DEBUG_STR_DWO_SECTION_FLAGS,
+                                              NULL);
          debug_macinfo_section_name
-           = (dwarf_strict
+           = ((dwarf_strict && dwarf_version < 5)
               ? DEBUG_LTO_DWO_MACINFO_SECTION : DEBUG_LTO_DWO_MACRO_SECTION);
          debug_macinfo_section = get_section (debug_macinfo_section_name,
                                               SECTION_DEBUG | SECTION_EXCLUDE,
@@ -27262,6 +27271,10 @@ init_sections_and_labels (bool early_lto
       debug_str_section = get_section (DEBUG_LTO_STR_SECTION,
                                       DEBUG_STR_SECTION_FLAGS
                                       | SECTION_EXCLUDE, NULL);
+      if (!dwarf_split_debug_info && !DWARF2_ASM_LINE_DEBUG_INFO)
+       debug_line_str_section
+         = get_section (DEBUG_LTO_LINE_STR_SECTION,
+                        DEBUG_STR_SECTION_FLAGS | SECTION_EXCLUDE, NULL);
     }
   else
     {
@@ -27271,10 +27284,13 @@ init_sections_and_labels (bool early_lto
                                            SECTION_DEBUG, NULL);
          debug_abbrev_section = get_section (DEBUG_ABBREV_SECTION,
                                              SECTION_DEBUG, NULL);
-         debug_loc_section = get_section (DEBUG_LOC_SECTION,
+         debug_loc_section = get_section (dwarf_version >= 5
+                                          ? DEBUG_LOCLISTS_SECTION
+                                          : DEBUG_LOC_SECTION,
                                           SECTION_DEBUG, NULL);
          debug_macinfo_section_name
-             = dwarf_strict ? DEBUG_MACINFO_SECTION : DEBUG_MACRO_SECTION;
+           = ((dwarf_strict && dwarf_version < 5)
+              ? DEBUG_MACINFO_SECTION : DEBUG_MACRO_SECTION);
          debug_macinfo_section = get_section (debug_macinfo_section_name,
                                               SECTION_DEBUG, NULL);
        }
@@ -27311,15 +27327,17 @@ init_sections_and_labels (bool early_lto
          ASM_GENERATE_INTERNAL_LABEL (debug_skeleton_info_section_label,
                                       DEBUG_SKELETON_INFO_SECTION_LABEL,
                                       generation);
-         debug_loc_section = get_section (DEBUG_DWO_LOC_SECTION,
+         debug_loc_section = get_section (dwarf_version >= 5
+                                          ? DEBUG_DWO_LOCLISTS_SECTION
+                                          : DEBUG_DWO_LOC_SECTION,
                                           SECTION_DEBUG | SECTION_EXCLUDE,
                                           NULL);
          debug_str_dwo_section = get_section (DEBUG_STR_DWO_SECTION,
                                               DEBUG_STR_DWO_SECTION_FLAGS,
                                               NULL);
          debug_macinfo_section_name
-           = (dwarf_strict && dwarf_version < 5)
-             ? DEBUG_DWO_MACINFO_SECTION : DEBUG_DWO_MACRO_SECTION;
+           = ((dwarf_strict && dwarf_version < 5)
+              ? DEBUG_DWO_MACINFO_SECTION : DEBUG_DWO_MACRO_SECTION);
          debug_macinfo_section = get_section (debug_macinfo_section_name,
                                               SECTION_DEBUG | SECTION_EXCLUDE,
                                               NULL);
@@ -27334,6 +27352,9 @@ init_sections_and_labels (bool early_lto
                                            SECTION_DEBUG, NULL);
       debug_str_section = get_section (DEBUG_STR_SECTION,
                                       DEBUG_STR_SECTION_FLAGS, NULL);
+      if (!dwarf_split_debug_info && !DWARF2_ASM_LINE_DEBUG_INFO)
+       debug_line_str_section = get_section (DEBUG_LINE_STR_SECTION,
+                                             DEBUG_STR_SECTION_FLAGS, NULL);
       debug_ranges_section = get_section (dwarf_version >= 5
                                          ? DEBUG_RNGLISTS_SECTION
                                          : DEBUG_RANGES_SECTION,
@@ -27355,7 +27376,7 @@ init_sections_and_labels (bool early_lto
     ASM_GENERATE_INTERNAL_LABEL (ranges_base_label,
                                 DEBUG_RANGES_SECTION_LABEL, 2 + generation);
   ASM_GENERATE_INTERNAL_LABEL (debug_addr_section_label,
-                               DEBUG_ADDR_SECTION_LABEL, generation);
+                              DEBUG_ADDR_SECTION_LABEL, generation);
   ASM_GENERATE_INTERNAL_LABEL (macinfo_section_label,
                               (dwarf_strict && dwarf_version < 5)
                               ? DEBUG_MACINFO_SECTION_LABEL


        Jakub

Reply via email to