re PR target/86651 (lto-wrapper.exe: fatal error: simple_object_copy_lto_debug_sectio...
authorJan Willem Jagersma <jwjagersma@gmail.com>
Wed, 1 Aug 2018 06:52:44 +0000 (06:52 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Wed, 1 Aug 2018 06:52:44 +0000 (06:52 +0000)
2018-08-01 Jan Willem Jagersma  <jwjagersma@gmail.com>

PR target/86651
* dwarf2out.c (dwarf2out_early_finish): Do not generate assembly in LTO
mode for COFF targets.
* defaults.h (TARGET_COFF): Define.
* config/i386/djgpp.h (TARGET_ASM_LTO_START, TARGET_ASM_LTO_END,
TARGET_COFF): Define.
(i386_djgpp_asm_lto_start, i386_djgpp_asm_lto_end): Declare.
* config/i386/djgpp.c (saved_debug_info_level): New static variable.
(i386_djgpp_asm_lto_start, i386_djgpp_asm_lto_end): New functions.

From-SVN: r263191

gcc/ChangeLog
gcc/config/i386/djgpp.c
gcc/config/i386/djgpp.h
gcc/defaults.h
gcc/dwarf2out.c

index 9b0ccfdaf317f3164354486cf94e4e585d869ba1..ef167fe415d937adf0091330a3d785ca322bd0ee 100644 (file)
@@ -1,3 +1,15 @@
+2018-08-01 Jan Willem Jagersma  <jwjagersma@gmail.com>
+
+       PR target/86651
+       * dwarf2out.c (dwarf2out_early_finish): Do not generate assembly in LTO
+       mode for COFF targets.
+       * defaults.h (TARGET_COFF): Define.
+       * config/i386/djgpp.h (TARGET_ASM_LTO_START, TARGET_ASM_LTO_END,
+       TARGET_COFF): Define.
+       (i386_djgpp_asm_lto_start, i386_djgpp_asm_lto_end): Declare.
+       * config/i386/djgpp.c (saved_debug_info_level): New static variable.
+       (i386_djgpp_asm_lto_start, i386_djgpp_asm_lto_end): New functions.
+
 2018-07-31  Alexandre Oliva <oliva@adacore.com>
 
        * gimple-streamer-in.c (input_bb): Restore BB discriminator.
index f168eed6f06d709e0fb3696281c5d6a227424bcb..d187c3a745229c248e2d1c40970fa93aebb22749 100644 (file)
@@ -47,3 +47,20 @@ i386_djgpp_asm_named_section(const char *name, unsigned int flags,
 
   fprintf (asm_out_file, "\t.section\t%s,\"%s\"\n", name, flagchars);
 }
+
+/* Kludge because of missing COFF support for early LTO debug.  */
+
+static enum debug_info_levels saved_debug_info_level;
+
+void
+i386_djgpp_asm_lto_start (void)
+{
+  saved_debug_info_level = debug_info_level;
+  debug_info_level = DINFO_LEVEL_NONE;
+}
+
+void
+i386_djgpp_asm_lto_end (void)
+{
+  debug_info_level = saved_debug_info_level;
+}
index 01774cea4d62375c76f5864821cc0289753e1917..dd8c71b833a716a6e8ec1e2992903bfd7ddc2334 100644 (file)
@@ -157,8 +157,19 @@ along with GCC; see the file COPYING3.  If not see
 #undef MAKE_DECL_ONE_ONLY
 #define MAKE_DECL_ONE_ONLY(DECL) (DECL_WEAK (DECL) = 1)
 
+#undef TARGET_COFF
+#define TARGET_COFF 1
+
+/* Kludge because of missing COFF support for early LTO debug.  */
+#undef  TARGET_ASM_LTO_START
+#define TARGET_ASM_LTO_START i386_djgpp_asm_lto_start
+#undef  TARGET_ASM_LTO_END
+#define TARGET_ASM_LTO_END i386_djgpp_asm_lto_end
+
 /* Function protypes for gcc/i386/djgpp.c */
 
 void
 i386_djgpp_asm_named_section(const char *name, unsigned int flags,
                             tree decl);
+void i386_djgpp_asm_lto_start (void);
+void i386_djgpp_asm_lto_end (void);
index 78a08a33f127befb21f9c32b8bfe2cbdc237be8c..9035b333be8f933f53c2428d3a4adeae102d533a 100644 (file)
@@ -1282,6 +1282,10 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 #define TARGET_PECOFF 0
 #endif
 
+#ifndef TARGET_COFF
+#define TARGET_COFF 0
+#endif
+
 #ifndef EH_RETURN_HANDLER_RTX
 #define EH_RETURN_HANDLER_RTX NULL
 #endif
index 208f2e97e7cd577d6634e2f0c3f56197a7052150..ffbde6f9961c23de3cdb4ad5afa0511e1c9ce2a0 100644 (file)
@@ -31942,10 +31942,10 @@ dwarf2out_early_finish (const char *filename)
 
   /* Do not generate DWARF assembler now when not producing LTO bytecode.  */
   if ((!flag_generate_lto && !flag_generate_offload)
-      /* FIXME: Disable debug info generation for PE-COFF targets since the
+      /* FIXME: Disable debug info generation for (PE-)COFF targets since the
         copy_lto_debug_sections operation of the simple object support in
         libiberty is not implemented for them yet.  */
-      || TARGET_PECOFF)
+      || TARGET_PECOFF || TARGET_COFF)
     return;
 
   /* Now as we are going to output for LTO initialize sections and labels