Commit dc0e0c6b by Eric Botcazou Committed by Eric Botcazou

re PR target/85238 (lto-wrapper: fatal error: …

re PR target/85238 (lto-wrapper: fatal error:  simple_object_copy_lto_debug_sections not implemented: Invalid argument  on Cygwin)

	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.

From-SVN: r259347
parent 2e5efa67
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>
......
......@@ -356,6 +356,12 @@ do { \
#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 " #"
......
......@@ -254,6 +254,8 @@ extern void i386_pe_asm_output_aligned_decl_common (FILE *, tree,
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);
......
......@@ -808,6 +808,23 @@ i386_pe_file_end (void)
}
}
/* 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;
}
/* x64 Structured Exception Handling unwind info. */
......
......@@ -31820,7 +31820,11 @@ dwarf2out_early_finish (const char *filename)
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
......
......@@ -983,7 +983,7 @@ debug_objcopy (const char *infile)
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,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment