X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=bfd%2Fcoffcode.h;h=31bd97542d0337ad9922ff2a4aaaa97484789f6b;hb=a55939ca586b81c16cc95fa692a7862551cc6773;hp=f0b73a988810bd72bb49aef982ccdf9d7ccaa383;hpb=e86fc4a5bc3747a6b811d93648a2afa4c1c74217;p=binutils-gdb.git diff --git a/bfd/coffcode.h b/bfd/coffcode.h index f0b73a98881..31bd97542d0 100644 --- a/bfd/coffcode.h +++ b/bfd/coffcode.h @@ -1,5 +1,5 @@ /* Support for the generic parts of most COFF variants, for BFD. - Copyright (C) 1990-2021 Free Software Foundation, Inc. + Copyright (C) 1990-2022 Free Software Foundation, Inc. Written by Cygnus Support. This file is part of BFD, the Binary File Descriptor library. @@ -2225,6 +2225,12 @@ coff_set_arch_mach_hook (bfd *abfd, void * filehdr) } break; #endif +#ifdef AARCH64MAGIC + case AARCH64MAGIC: + arch = bfd_arch_aarch64; + machine = internal_f->f_flags & F_AARCH64_ARCHITECTURE_MASK; + break; +#endif #ifdef Z80MAGIC case Z80MAGIC: arch = bfd_arch_z80; @@ -2781,6 +2787,12 @@ coff_set_flags (bfd * abfd, return true; #endif +#ifdef AARCH64MAGIC + case bfd_arch_aarch64: + * magicp = AARCH64MAGIC; + return true; +#endif + #ifdef ARMMAGIC case bfd_arch_arm: #ifdef ARM_WINCE @@ -3876,7 +3888,7 @@ coff_write_object_contents (bfd * abfd) internal_f.f_flags |= IMAGE_FILE_LARGE_ADDRESS_AWARE; #endif -#ifndef COFF_WITH_pex64 +#if !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64) #ifdef COFF_WITH_PE internal_f.f_flags |= IMAGE_FILE_32BIT_MACHINE; #else @@ -3925,6 +3937,11 @@ coff_write_object_contents (bfd * abfd) internal_a.magic = ZMAGIC; #endif +#if defined(AARCH64) +#define __A_MAGIC_SET__ + internal_a.magic = ZMAGIC; +#endif + #if defined MCORE_PE #define __A_MAGIC_SET__ internal_a.magic = IMAGE_NT_OPTIONAL_HDR_MAGIC; @@ -3977,8 +3994,13 @@ coff_write_object_contents (bfd * abfd) #endif } +#ifdef RS6000COFF_C + /* XCOFF 32bit needs this to have new behaviour for n_type field. */ + internal_a.vstamp = 2; +#else /* FIXME: Does anybody ever set this to another value? */ internal_a.vstamp = 0; +#endif /* Now should write relocs, strings, syms. */ obj_sym_filepos (abfd) = sym_base; @@ -4053,7 +4075,7 @@ coff_write_object_contents (bfd * abfd) bfd_vma toc; asection *loader_sec; - internal_a.vstamp = 1; + internal_a.vstamp = 2; internal_a.o_snentry = xcoff_data (abfd)->snentry; if (internal_a.o_snentry == 0) @@ -4809,8 +4831,8 @@ coff_slurp_symbol_table (bfd * abfd) /* The value is actually a symbol index. Save a pointer to the symbol instead of the index. FIXME: This should use a union. */ - src->u.syment.n_value = - (long) (intptr_t) (native_symbols + src->u.syment.n_value); + src->u.syment.n_value + = (bfd_hostptr_t) (native_symbols + src->u.syment.n_value); dst->symbol.value = src->u.syment.n_value; src->fix_value = 1; break;