[binutils-gdb] ld: use definitions in generate_reloc rather than raw literals

Nick Clifton nickc@sourceware.org
Mon May 23 11:04:50 GMT 2022


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=27049a382fe50249c6408d3d92bb7a833c2194a6

commit 27049a382fe50249c6408d3d92bb7a833c2194a6
Author: Mark Harmstone <mark@harmstone.com>
Date:   Mon May 23 12:04:26 2022 +0100

    ld: use definitions in generate_reloc rather than raw literals

Diff:
---
 include/coff/internal.h | 16 ++++++++++++++++
 ld/pe-dll.c             | 15 ++++++++-------
 2 files changed, 24 insertions(+), 7 deletions(-)

diff --git a/include/coff/internal.h b/include/coff/internal.h
index f12908b0f65..4d2046ee090 100644
--- a/include/coff/internal.h
+++ b/include/coff/internal.h
@@ -694,4 +694,20 @@ struct internal_reloc
   unsigned long r_offset;	/* Used by Alpha ECOFF, SPARC, others */
 };
 
+#define IMAGE_REL_BASED_ABSOLUTE		0
+#define IMAGE_REL_BASED_HIGH			1
+#define IMAGE_REL_BASED_LOW			2
+#define IMAGE_REL_BASED_HIGHLOW			3
+#define IMAGE_REL_BASED_HIGHADJ			4
+#define IMAGE_REL_BASED_MIPS_JMPADDR		5
+#define IMAGE_REL_BASED_ARM_MOV32		5
+#define IMAGE_REL_BASED_RISCV_HIGH20		5
+#define IMAGE_REL_BASED_THUMB_MOV32		7
+#define IMAGE_REL_BASED_RISCV_LOW12I		7
+#define IMAGE_REL_BASED_RISCV_LOW12S		8
+#define IMAGE_REL_BASED_LOONGARCH32_MARK_LA	8
+#define IMAGE_REL_BASED_LOONGARCH64_MARK_LA	8
+#define IMAGE_REL_BASED_MIPS_JMPADDR16		9
+#define IMAGE_REL_BASED_DIR64			10
+
 #endif /* GNU_COFF_INTERNAL_H */
diff --git a/ld/pe-dll.c b/ld/pe-dll.c
index 4cf8ed23672..db2c75da9b5 100644
--- a/ld/pe-dll.c
+++ b/ld/pe-dll.c
@@ -1632,20 +1632,20 @@ generate_reloc (bfd *abfd, struct bfd_link_info *info)
 		    {
 #ifdef pe_use_x86_64
 		    case BITS_AND_SHIFT (64, 0):
-		      reloc_data[total_relocs].type = 10;
+		      reloc_data[total_relocs].type = IMAGE_REL_BASED_DIR64;
 		      total_relocs++;
 		      break;
 #endif
 		    case BITS_AND_SHIFT (32, 0):
-		      reloc_data[total_relocs].type = 3;
+		      reloc_data[total_relocs].type = IMAGE_REL_BASED_HIGHLOW;
 		      total_relocs++;
 		      break;
 		    case BITS_AND_SHIFT (16, 0):
-		      reloc_data[total_relocs].type = 2;
+		      reloc_data[total_relocs].type = IMAGE_REL_BASED_LOW;
 		      total_relocs++;
 		      break;
 		    case BITS_AND_SHIFT (16, 16):
-		      reloc_data[total_relocs].type = 4;
+		      reloc_data[total_relocs].type = IMAGE_REL_BASED_HIGHADJ;
 		      /* FIXME: we can't know the symbol's right value
 			 yet, but we probably can safely assume that
 			 CE will relocate us in 64k blocks, so leaving
@@ -1654,7 +1654,8 @@ generate_reloc (bfd *abfd, struct bfd_link_info *info)
 		      total_relocs++;
 		      break;
 		    case BITS_AND_SHIFT (26, 2):
-		      reloc_data[total_relocs].type = 5;
+		      reloc_data[total_relocs].type =
+                        IMAGE_REL_BASED_ARM_MOV32;
 		      total_relocs++;
 		      break;
 		    case BITS_AND_SHIFT (24, 2):
@@ -1701,7 +1702,7 @@ generate_reloc (bfd *abfd, struct bfd_link_info *info)
 
       reloc_sz += 2;
 
-      if (reloc_data[i].type == 4)
+      if (reloc_data[i].type == IMAGE_REL_BASED_HIGHADJ)
 	reloc_sz += 2;
     }
 
@@ -1736,7 +1737,7 @@ generate_reloc (bfd *abfd, struct bfd_link_info *info)
 		  reloc_d + reloc_sz);
       reloc_sz += 2;
 
-      if (reloc_data[i].type == 4)
+      if (reloc_data[i].type == IMAGE_REL_BASED_HIGHADJ)
 	{
 	  bfd_put_16 (abfd, reloc_data[i].extra, reloc_d + reloc_sz);
 	  reloc_sz += 2;


More information about the Binutils-cvs mailing list