about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMark Wielaard <mjw@redhat.com>2016-01-29 09:49:01 +0100
committerMark Wielaard <mjw@redhat.com>2016-02-19 20:48:22 +0100
commit7aa5adfbc30de5d5e6cc02ec3fada50de4880ef4 (patch)
tree260f88e837e5eb5d5227245f31689281f2b423d6
parenta28605b22946c708f0a5c4f06307e1a17650ced8 (diff)
downloadglibc-7aa5adfbc30de5d5e6cc02ec3fada50de4880ef4.tar.gz
glibc-7aa5adfbc30de5d5e6cc02ec3fada50de4880ef4.tar.xz
glibc-7aa5adfbc30de5d5e6cc02ec3fada50de4880ef4.zip
elf/elf.h: Add new 386 and X86_64 relocations from binutils.
The following new 386 and X86_64 were added to binutils. They are
non-dynamic relocations, so don't need direct handling in glibc.
But other programs, like elfutils, use the glibc elf.h definitions
for the names and numbers when inspecting ET_REL files.

R_386_GOT32X was proposed in
https://groups.google.com/forum/#!topic/ia32-abi/GbJJskkid4I

X86_64_GOTPCRELX and R_X86_64_REX_GOTPCRELX were proposed in
https://groups.google.com/forum/#!topic/x86-64-abi/n9AWHogmVY0

There also used to be R_X86_64_PC32_BND and R_X86_64_PLT32_BND
but those already got deprecated in
https://groups.google.com/d/msg/x86-64-abi/-hdQyMixt8Y/XFDOvioG85cJ

	* elf/elf.h (R_386_GOT32X): New.
	(R_386_NUM): Update.
	(R_X86_64_GOTPCRELX: New.
	(R_X86_64_REX_GOTPCRELX): New.
	(R_X86_64_NUM): Update.
-rw-r--r--ChangeLog8
-rw-r--r--elf/elf.h15
2 files changed, 20 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index fbdbb44a3f..848f7505d7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2016-02-19  Mark Wielaard  <mjw@redhat.com>
+
+	* elf/elf.h (R_386_GOT32X): New.
+	(R_386_NUM): Update.
+	(R_X86_64_GOTPCRELX: New.
+	(R_X86_64_REX_GOTPCRELX): New.
+	(R_X86_64_NUM): Update.
+
 2016-02-19  Mike Frysinger  <vapier@gentoo.org>
 
 	* test-skeleton.c (TIMEOUT): Change to 20 and adjust comment.
diff --git a/elf/elf.h b/elf/elf.h
index 15f5a75dec..1a7000b8c6 100644
--- a/elf/elf.h
+++ b/elf/elf.h
@@ -1269,8 +1269,10 @@ typedef struct
 					   argument, returning the TLS
 					   offset for the symbol.  */
 #define R_386_IRELATIVE	   42		/* Adjust indirectly by program base */
+#define R_386_GOT32X	   43		/* Load from 32 bit GOT entry,
+					   relaxable. */
 /* Keep this the last entry.  */
-#define R_386_NUM	   43
+#define R_386_NUM	   44
 
 /* SUN SPARC specific definitions.  */
 
@@ -3144,8 +3146,15 @@ enum
 #define R_X86_64_TLSDESC        36	/* TLS descriptor.  */
 #define R_X86_64_IRELATIVE	37	/* Adjust indirectly by program base */
 #define R_X86_64_RELATIVE64	38	/* 64-bit adjust by program base */
-
-#define R_X86_64_NUM		39
+					/* 39 Reserved was R_X86_64_PC32_BND */
+					/* 40 Reserved was R_X86_64_PLT32_BND */
+#define R_X86_64_GOTPCRELX	41	/* Load from 32 bit signed pc relative
+					   offset to GOT entry without REX
+					   prefix, relaxable.  */
+#define R_X86_64_REX_GOTPCRELX	42	/* Load from 32 bit signed pc relative
+					   offset to GOT entry with REX prefix,
+					   relaxable.  */
+#define R_X86_64_NUM		43
 
 
 /* AM33 relocations.  */