aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvgeny Karpov <evgeny.karpov@microsoft.com>2024-07-11 15:27:35 +0200
committerEvgeny Karpov <eukarpov@gmail.com>2024-11-19 14:27:33 +0100
commit961c50410926b0d62b9938b438857664cbaca02d (patch)
tree1fb914a02b3b3ebb5925e0908f1f9c2dc147baba
parent55788176f1e103a2912bb3b4b6fad65c480276f9 (diff)
downloadgcc-961c50410926b0d62b9938b438857664cbaca02d.zip
gcc-961c50410926b0d62b9938b438857664cbaca02d.tar.gz
gcc-961c50410926b0d62b9938b438857664cbaca02d.tar.bz2
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.
-rw-r--r--gcc/config/aarch64/cygming.h6
-rw-r--r--gcc/config/i386/cygming.h4
-rw-r--r--gcc/config/i386/i386-protos.h2
-rw-r--r--gcc/config/mingw/winnt.cc4
-rw-r--r--gcc/config/mingw/winnt.h2
-rw-r--r--libiberty/simple-object-coff.c4
6 files changed, 15 insertions, 7 deletions
diff --git a/gcc/config/aarch64/cygming.h b/gcc/config/aarch64/cygming.h
index 3afeb77..8b9038c 100644
--- a/gcc/config/aarch64/cygming.h
+++ b/gcc/config/aarch64/cygming.h
@@ -245,4 +245,10 @@ still needed for compilation. */
#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
diff --git a/gcc/config/i386/cygming.h b/gcc/config/i386/cygming.h
index 7852af6..7a97d02 100644
--- a/gcc/config/i386/cygming.h
+++ b/gcc/config/i386/cygming.h
@@ -348,9 +348,9 @@ do { \
/* 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
+#define TARGET_ASM_LTO_START mingw_pe_asm_lto_start
#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
#define ASM_COMMENT_START " #"
diff --git a/gcc/config/i386/i386-protos.h b/gcc/config/i386/i386-protos.h
index c26ae5e..78e72c5 100644
--- a/gcc/config/i386/i386-protos.h
+++ b/gcc/config/i386/i386-protos.h
@@ -320,8 +320,6 @@ extern void i386_pe_asm_output_aligned_decl_common (FILE *, tree,
const char *,
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_end_function (FILE *, const char *, tree);
extern void i386_pe_end_cold_function (FILE *, const char *, tree);
diff --git a/gcc/config/mingw/winnt.cc b/gcc/config/mingw/winnt.cc
index 59d4a6e..5690492 100644
--- a/gcc/config/mingw/winnt.cc
+++ b/gcc/config/mingw/winnt.cc
@@ -832,14 +832,14 @@ mingw_pe_file_end (void)
static enum debug_info_levels saved_debug_info_level;
void
-i386_pe_asm_lto_start (void)
+mingw_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)
+mingw_pe_asm_lto_end (void)
{
debug_info_level = saved_debug_info_level;
}
diff --git a/gcc/config/mingw/winnt.h b/gcc/config/mingw/winnt.h
index 14bff19..1ac19fd 100644
--- a/gcc/config/mingw/winnt.h
+++ b/gcc/config/mingw/winnt.h
@@ -23,6 +23,8 @@ http://www.gnu.org/licenses/. */
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_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_encode_section_info (tree, rtx, int);
extern void mingw_pe_file_end (void);
diff --git a/libiberty/simple-object-coff.c b/libiberty/simple-object-coff.c
index e748205..fd3c310 100644
--- a/libiberty/simple-object-coff.c
+++ b/libiberty/simple-object-coff.c
@@ -219,7 +219,9 @@ static const struct coff_magic_struct coff_magic[] =
/* i386. */
{ 0x14c, 0, F_EXEC | IMAGE_FILE_SYSTEM | IMAGE_FILE_DLL },
/* 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. */