+2018-04-12 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR target/85238
+ * lto-wrapper.c (debug_objcopy): Open the files in binary mode.
+ * dwarf2out.c (dwarf2out_early_finish): Do not generate assembly in LTO
+ mode for PE-COFF targets.
+ * config/i386/i386-protos.h (i386_pe_asm_lto_start): Declare.
+ (i386_pe_asm_lto_end): Likewise.
+ * config/i386/cygming.h (TARGET_ASM_LTO_START): Define.
+ (TARGET_ASM_LTO_END): Likewise.
+ * config/i386/winnt.c (saved_debug_info_level): New static variable.
+ (i386_pe_asm_lto_start): New function.
+ (i386_pe_asm_lto_end): Likewise.
+
2018-04-12 Cesar Philippidis <cesar@codesourcery.com>
Richard Biener <rguenther@suse.de>
#undef TARGET_ASM_FILE_END
#define TARGET_ASM_FILE_END i386_pe_file_end
+/* Kludge because of missing PE-COFF support for early LTO debug. */
+#undef TARGET_ASM_LTO_START
+#define TARGET_ASM_LTO_START i386_pe_asm_lto_start
+#undef TARGET_ASM_LTO_END
+#define TARGET_ASM_LTO_END i386_pe_asm_lto_end
+
#undef ASM_COMMENT_START
#define ASM_COMMENT_START " #"
HOST_WIDE_INT,
HOST_WIDE_INT);
extern void i386_pe_file_end (void);
+extern void i386_pe_asm_lto_start (void);
+extern void i386_pe_asm_lto_end (void);
extern void i386_pe_start_function (FILE *, const char *, tree);
extern void i386_pe_end_function (FILE *, const char *, tree);
extern void i386_pe_end_cold_function (FILE *, const char *, tree);
}
}
+/* Kludge because of missing PE-COFF support for early LTO debug. */
+
+static enum debug_info_levels saved_debug_info_level;
+
+void
+i386_pe_asm_lto_start (void)
+{
+ saved_debug_info_level = debug_info_level;
+ debug_info_level = DINFO_LEVEL_NONE;
+}
+
+void
+i386_pe_asm_lto_end (void)
+{
+ debug_info_level = saved_debug_info_level;
+}
+
\f
/* x64 Structured Exception Handling unwind info. */
early_dwarf_finished = true;
/* Do not generate DWARF assembler now when not producing LTO bytecode. */
- if (!flag_generate_lto && !flag_generate_offload)
+ if ((!flag_generate_lto && !flag_generate_offload)
+ /* 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)
return;
/* Now as we are going to output for LTO initialize sections and labels
infile = fname;
inoff = (off_t) loffset;
}
- int infd = open (infile, O_RDONLY);
+ int infd = open (infile, O_RDONLY | O_BINARY);
if (infd == -1)
return NULL;
simple_object_read *inobj = simple_object_start_read (infd, inoff,