Add LTO support

The patch reuses the configuration for LTO from ix86 and adds the
aarch64 architecture to the list of supported COFF headers.

gcc/ChangeLog:

	* config/aarch64/cygming.h (TARGET_ASM_LTO_START): New.
	(TARGET_ASM_LTO_END): Likewise.
	* config/i386/cygming.h (TARGET_ASM_LTO_START): Update.
	(TARGET_ASM_LTO_END): Likewise.
	* config/i386/i386-protos.h (i386_pe_asm_lto_start): Delete.
	(i386_pe_asm_lto_end): Likewise.
	* config/mingw/winnt.cc (i386_pe_asm_lto_start): Rename
	into ...
	(mingw_pe_asm_lto_start): ... this.
	(i386_pe_asm_lto_end): Rename into ...
	(mingw_pe_asm_lto_end): ... this.
	* config/mingw/winnt.h (mingw_pe_asm_lto_start): New.
	(mingw_pe_asm_lto_end): Likewise.

libiberty/ChangeLog:

	* simple-object-coff.c: Add aarch64.
This commit is contained in:
Evgeny Karpov 2024-07-11 15:27:35 +02:00 committed by Evgeny Karpov
parent 55788176f1
commit 961c504109
6 changed files with 15 additions and 7 deletions

View File

@ -245,4 +245,10 @@ still needed for compilation. */
#define HAVE_64BIT_POINTERS 1 #define HAVE_64BIT_POINTERS 1
/* Kludge because of missing PE-COFF support for early LTO debug. */
#undef TARGET_ASM_LTO_START
#define TARGET_ASM_LTO_START mingw_pe_asm_lto_start
#undef TARGET_ASM_LTO_END
#define TARGET_ASM_LTO_END mingw_pe_asm_lto_end
#endif #endif

View File

@ -348,9 +348,9 @@ do { \
/* Kludge because of missing PE-COFF support for early LTO debug. */ /* Kludge because of missing PE-COFF support for early LTO debug. */
#undef TARGET_ASM_LTO_START #undef TARGET_ASM_LTO_START
#define TARGET_ASM_LTO_START i386_pe_asm_lto_start #define TARGET_ASM_LTO_START mingw_pe_asm_lto_start
#undef TARGET_ASM_LTO_END #undef TARGET_ASM_LTO_END
#define TARGET_ASM_LTO_END i386_pe_asm_lto_end #define TARGET_ASM_LTO_END mingw_pe_asm_lto_end
#undef ASM_COMMENT_START #undef ASM_COMMENT_START
#define ASM_COMMENT_START " #" #define ASM_COMMENT_START " #"

View File

@ -320,8 +320,6 @@ extern void i386_pe_asm_output_aligned_decl_common (FILE *, tree,
const char *, const char *,
HOST_WIDE_INT, HOST_WIDE_INT,
HOST_WIDE_INT); HOST_WIDE_INT);
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_start_function (FILE *, const char *, tree);
extern void i386_pe_end_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); extern void i386_pe_end_cold_function (FILE *, const char *, tree);

View File

@ -832,14 +832,14 @@ mingw_pe_file_end (void)
static enum debug_info_levels saved_debug_info_level; static enum debug_info_levels saved_debug_info_level;
void void
i386_pe_asm_lto_start (void) mingw_pe_asm_lto_start (void)
{ {
saved_debug_info_level = debug_info_level; saved_debug_info_level = debug_info_level;
debug_info_level = DINFO_LEVEL_NONE; debug_info_level = DINFO_LEVEL_NONE;
} }
void void
i386_pe_asm_lto_end (void) mingw_pe_asm_lto_end (void)
{ {
debug_info_level = saved_debug_info_level; debug_info_level = saved_debug_info_level;
} }

View File

@ -23,6 +23,8 @@ http://www.gnu.org/licenses/. */
extern tree mingw_handle_selectany_attribute (tree *, tree, tree, int, bool *); extern tree mingw_handle_selectany_attribute (tree *, tree, tree, int, bool *);
extern void mingw_pe_asm_named_section (const char *, unsigned int, tree); extern void mingw_pe_asm_named_section (const char *, unsigned int, tree);
extern void mingw_pe_asm_lto_start (void);
extern void mingw_pe_asm_lto_end (void);
extern void mingw_pe_declare_type (FILE *, const char *, bool, bool); extern void mingw_pe_declare_type (FILE *, const char *, bool, bool);
extern void mingw_pe_encode_section_info (tree, rtx, int); extern void mingw_pe_encode_section_info (tree, rtx, int);
extern void mingw_pe_file_end (void); extern void mingw_pe_file_end (void);

View File

@ -219,7 +219,9 @@ static const struct coff_magic_struct coff_magic[] =
/* i386. */ /* i386. */
{ 0x14c, 0, F_EXEC | IMAGE_FILE_SYSTEM | IMAGE_FILE_DLL }, { 0x14c, 0, F_EXEC | IMAGE_FILE_SYSTEM | IMAGE_FILE_DLL },
/* x86_64. */ /* x86_64. */
{ 0x8664, 0, F_EXEC | IMAGE_FILE_SYSTEM | IMAGE_FILE_DLL } { 0x8664, 0, F_EXEC | IMAGE_FILE_SYSTEM | IMAGE_FILE_DLL },
/* AArch64. */
{ 0xaa64, 0, F_EXEC | IMAGE_FILE_SYSTEM | IMAGE_FILE_DLL }
}; };
/* See if we have a COFF file. */ /* See if we have a COFF file. */