From 66303da22f4d286a8b05cba5994cd0cc4760e49b Mon Sep 17 00:00:00 2001 From: rguenth Date: Wed, 1 Aug 2018 06:52:44 +0000 Subject: [PATCH] 2018-08-01 Jan Willem Jagersma 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263191 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 12 ++++++++++++ gcc/config/i386/djgpp.c | 17 +++++++++++++++++ gcc/config/i386/djgpp.h | 11 +++++++++++ gcc/defaults.h | 4 ++++ gcc/dwarf2out.c | 4 ++-- 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 + + 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 * 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 -- 2.11.4.GIT