summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Willem Jagersma <jwjagersma@gmail.com>2018-08-01 06:52:44 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2018-08-01 06:52:44 +0000
commit3311d93cbf9d8670f61390a2d3b9a4c8495ace47 (patch)
treeebeb0f49f33e1d621b867c61b55f71235027ea30
parent027c71411cee14ec4a45bd69f85184189457e8f9 (diff)
re PR target/86651 (lto-wrapper.exe: fatal error: simple_object_copy_lto_debug_sections not implemented: Invalid argument)
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
-rw-r--r--gcc/ChangeLog12
-rw-r--r--gcc/config/i386/djgpp.c17
-rw-r--r--gcc/config/i386/djgpp.h11
-rw-r--r--gcc/defaults.h4
-rw-r--r--gcc/dwarf2out.c4
5 files changed, 46 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9b0ccfdaf31..ef167fe415d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/config/i386/djgpp.c b/gcc/config/i386/djgpp.c
index f168eed6f06..d187c3a7452 100644
--- a/gcc/config/i386/djgpp.c
+++ b/gcc/config/i386/djgpp.c
@@ -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;
+}
diff --git a/gcc/config/i386/djgpp.h b/gcc/config/i386/djgpp.h
index 01774cea4d6..dd8c71b833a 100644
--- a/gcc/config/i386/djgpp.h
+++ b/gcc/config/i386/djgpp.h
@@ -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);
diff --git a/gcc/defaults.h b/gcc/defaults.h
index 78a08a33f12..9035b333be8 100644
--- a/gcc/defaults.h
+++ b/gcc/defaults.h
@@ -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
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 208f2e97e7c..ffbde6f9961 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -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