Update elf.h from glibc and recognize R_386_GOT32X, R_X86_64_GOTPCRELX
and R_x86_64_REX_GOTPCRELX as non-dynamic relocations.

Signed-off-by: Mark Wielaard <m...@redhat.com>
---
 backends/ChangeLog        |  5 +++++
 backends/i386_reloc.def   |  1 +
 backends/x86_64_reloc.def |  2 ++
 libelf/ChangeLog          |  4 ++++
 libelf/elf.h              | 23 ++++++++++++++++++-----
 5 files changed, 30 insertions(+), 5 deletions(-)

diff --git a/backends/ChangeLog b/backends/ChangeLog
index 4b604fd..cc0dd6f 100644
--- a/backends/ChangeLog
+++ b/backends/ChangeLog
@@ -1,3 +1,8 @@
+2015-12-28  Mark Wielaard  <m...@redhat.com>
+
+       * i386_reloc.def: Add GOT32X.
+       * x86_64_reloc.def: Add GOTPCRELX and REX_GOTPCRELX.
+
 2015-12-08  Jose E. Marchesi  <jose.march...@oracle.com>
 
        * sparc_init.c (sparc_init): Hook sparc_set_initial_registers_tid.
diff --git a/backends/i386_reloc.def b/backends/i386_reloc.def
index de3575d..a6a03f3 100644
--- a/backends/i386_reloc.def
+++ b/backends/i386_reloc.def
@@ -68,3 +68,4 @@ RELOC_TYPE (TLS_GOTDESC,      REL)
 RELOC_TYPE (TLS_DESC_CALL,     REL)
 RELOC_TYPE (TLS_DESC,          EXEC)
 RELOC_TYPE (IRELATIVE,         EXEC|DYN)
+RELOC_TYPE (GOT32X,            REL)
diff --git a/backends/x86_64_reloc.def b/backends/x86_64_reloc.def
index ad84efa..07a7c3d 100644
--- a/backends/x86_64_reloc.def
+++ b/backends/x86_64_reloc.def
@@ -61,3 +61,5 @@ RELOC_TYPE (GOTPC32_TLSDESC, REL)
 RELOC_TYPE (TLSDESC_CALL, REL)
 RELOC_TYPE (TLSDESC,   REL|EXEC|DYN)
 RELOC_TYPE (IRELATIVE, EXEC|DYN)
+RELOC_TYPE (GOTPCRELX, REL)
+RELOC_TYPE (REX_GOTPCRELX, REL)
diff --git a/libelf/ChangeLog b/libelf/ChangeLog
index aabf6f6..9536ced 100644
--- a/libelf/ChangeLog
+++ b/libelf/ChangeLog
@@ -1,3 +1,7 @@
+2016-01-28  Mark Wielaard  <m...@redhat.com>
+
+       * elf.h: Update from glibc. Add new i386 and x86_64 relocations.
+
 2016-01-13  Mark Wielaard  <m...@redhat.com>
 
        * libelf.h: Check SHF_COMPRESSED is defined. If not define it and the
diff --git a/libelf/elf.h b/libelf/elf.h
index 12feb91..1a7000b 100644
--- a/libelf/elf.h
+++ b/libelf/elf.h
@@ -1,5 +1,5 @@
 /* This file defines standard ELF types, structures, and macros.
-   Copyright (C) 1995-2015 Free Software Foundation, Inc.
+   Copyright (C) 1995-2016 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -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.  */
 
@@ -1727,7 +1729,11 @@ typedef struct
    PLT is writable.  For a non-writable PLT, this is omitted or has a zero
    value.  */
 #define DT_MIPS_RWPLT        0x70000034
-#define DT_MIPS_NUM         0x35
+/* An alternative description of the classic MIPS RLD_MAP that is usable
+   in a PIE as it stores a relative offset from the address of the tag
+   rather than an absolute address.  */
+#define DT_MIPS_RLD_MAP_REL  0x70000035
+#define DT_MIPS_NUM         0x36
 
 /* Legal values for DT_MIPS_FLAGS Elf32_Dyn entry.  */
 
@@ -3140,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.  */
-- 
1.8.3.1

Reply via email to