Fix size of external_reloc for pe-aarch64
authorMark Harmstone <mark@harmstone.com>
Wed, 14 Dec 2022 00:51:57 +0000 (00:51 +0000)
committerMark Harmstone <mark@harmstone.com>
Tue, 10 Jan 2023 23:30:42 +0000 (23:30 +0000)
This patch series finishes off the work by Jedidiah Thompson, and adds
support for creating aarch64 PE images.

This should be essentially complete: I've used this to create a "hello
world" Windows program in asm, and (with GCC patches) a UEFI program in
C. I think the only things missing are the .secidx relocation, which is
needed for PDBs, and the SEH pseudos used for C++ exceptions.

This first patch fixes the size of RELSZ; I'm not sure why it was 14 in
the first place. This is the size of the "Base Relocation Block" in
https://learn.microsoft.com/en-us/windows/win32/debug/pe-format, and
AFAIK should be 10 for everything.

bfd/coff-aarch64.c
include/coff/aarch64.h

index 8a514b278ee25cdb4850db58ff363ccc7e5ed8f0..236cbb79ffb878781451ed663b2581da0e852797 100644 (file)
@@ -188,10 +188,6 @@ coff_aarch64_rtype_lookup (unsigned int code)
 #define bfd_pe_print_pdata      NULL
 #endif
 
-/* Handle include/coff/aarch64.h external_reloc.  */
-#define SWAP_IN_RELOC_OFFSET   H_GET_32
-#define SWAP_OUT_RELOC_OFFSET  H_PUT_32
-
 /* Return TRUE if this relocation should
    appear in the output .reloc section.  */
 
index 7592661553ff12676ab97009d5165e513d284f49..4616cfef2b831310ea7ece4cefef0e20d466acd7 100644 (file)
@@ -54,11 +54,10 @@ struct external_reloc
   char r_vaddr[4];
   char r_symndx[4];
   char r_type[2];
-  char r_offset[4];
 };
 
 #define RELOC struct external_reloc
-#define RELSZ 14
+#define RELSZ 10
 
 /* ARM64 relocations types. */