diff options
author | Evgeny Karpov <evgeny.karpov@microsoft.com> | 2024-07-11 15:27:35 +0200 |
---|---|---|
committer | Evgeny Karpov <eukarpov@gmail.com> | 2024-11-19 14:27:33 +0100 |
commit | 961c50410926b0d62b9938b438857664cbaca02d (patch) | |
tree | 1fb914a02b3b3ebb5925e0908f1f9c2dc147baba | |
parent | 55788176f1e103a2912bb3b4b6fad65c480276f9 (diff) | |
download | gcc-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.h | 6 | ||||
-rw-r--r-- | gcc/config/i386/cygming.h | 4 | ||||
-rw-r--r-- | gcc/config/i386/i386-protos.h | 2 | ||||
-rw-r--r-- | gcc/config/mingw/winnt.cc | 4 | ||||
-rw-r--r-- | gcc/config/mingw/winnt.h | 2 | ||||
-rw-r--r-- | libiberty/simple-object-coff.c | 4 |
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. */ |