Mark Wielaard 16224b
commit 16e2d351bf31d0ce09ce9632ff196cbd973b656b
Mark Wielaard 16224b
Author: Mark Wielaard <mjw@redhat.com>
Mark Wielaard 16224b
Date:   Fri Jul 4 13:39:18 2014 +0200
Mark Wielaard 16224b
Mark Wielaard 16224b
    Update elf.h from glibc.
Mark Wielaard 16224b
    
Mark Wielaard 16224b
    Includes new bits needed for ppc64le ELFv2 abi.
Mark Wielaard 16224b
    https://bugzilla.redhat.com/show_bug.cgi?id=1110249
Mark Wielaard 16224b
    
Mark Wielaard 16224b
    Signed-off-by: Mark Wielaard <mjw@redhat.com>
Mark Wielaard 16224b
Mark Wielaard 16224b
diff --git a/libelf/elf.h b/libelf/elf.h
Mark Wielaard 16224b
index a05ea3b..40e87b2 100644
Mark Wielaard 16224b
--- a/libelf/elf.h
Mark Wielaard 16224b
+++ b/libelf/elf.h
Mark Wielaard 16224b
@@ -1,5 +1,5 @@
Mark Wielaard 16224b
 /* This file defines standard ELF types, structures, and macros.
Mark Wielaard 16224b
-   Copyright (C) 1995-2013 Free Software Foundation, Inc.
Mark Wielaard 16224b
+   Copyright (C) 1995-2014 Free Software Foundation, Inc.
Mark Wielaard 16224b
    This file is part of the GNU C Library.
Mark Wielaard 16224b
 
Mark Wielaard 16224b
    The GNU C Library is free software; you can redistribute it and/or
Mark Wielaard 16224b
@@ -2252,6 +2252,17 @@ typedef Elf32_Addr Elf32_Conflict;
Mark Wielaard 16224b
 #define R_PPC64_DTPREL16_HIGHERA 104 /* half16	(sym+add)@dtprel@highera */
Mark Wielaard 16224b
 #define R_PPC64_DTPREL16_HIGHEST 105 /* half16	(sym+add)@dtprel@highest */
Mark Wielaard 16224b
 #define R_PPC64_DTPREL16_HIGHESTA 106 /* half16	(sym+add)@dtprel@highesta */
Mark Wielaard 16224b
+#define R_PPC64_TLSGD		107 /* none	(sym+add)@tlsgd */
Mark Wielaard 16224b
+#define R_PPC64_TLSLD		108 /* none	(sym+add)@tlsld */
Mark Wielaard 16224b
+#define R_PPC64_TOCSAVE		109 /* none */
Mark Wielaard 16224b
+
Mark Wielaard 16224b
+/* Added when HA and HI relocs were changed to report overflows.  */
Mark Wielaard 16224b
+#define R_PPC64_ADDR16_HIGH	110
Mark Wielaard 16224b
+#define R_PPC64_ADDR16_HIGHA	111
Mark Wielaard 16224b
+#define R_PPC64_TPREL16_HIGH	112
Mark Wielaard 16224b
+#define R_PPC64_TPREL16_HIGHA	113
Mark Wielaard 16224b
+#define R_PPC64_DTPREL16_HIGH	114
Mark Wielaard 16224b
+#define R_PPC64_DTPREL16_HIGHA	115
Mark Wielaard 16224b
 
Mark Wielaard 16224b
 /* GNU extension to support local ifunc.  */
Mark Wielaard 16224b
 #define R_PPC64_JMP_IREL	247
Mark Wielaard 16224b
@@ -2261,12 +2272,29 @@ typedef Elf32_Addr Elf32_Conflict;
Mark Wielaard 16224b
 #define R_PPC64_REL16_HI	251	/* half16   (sym+add-.)@h */
Mark Wielaard 16224b
 #define R_PPC64_REL16_HA	252	/* half16   (sym+add-.)@ha */
Mark Wielaard 16224b
 
Mark Wielaard 16224b
+/* e_flags bits specifying ABI.
Mark Wielaard 16224b
+   1 for original function descriptor using ABI,
Mark Wielaard 16224b
+   2 for revised ABI without function descriptors,
Mark Wielaard 16224b
+   0 for unspecified or not using any features affected by the differences.  */
Mark Wielaard 16224b
+#define EF_PPC64_ABI	3
Mark Wielaard 16224b
+
Mark Wielaard 16224b
 /* PowerPC64 specific values for the Dyn d_tag field.  */
Mark Wielaard 16224b
 #define DT_PPC64_GLINK  (DT_LOPROC + 0)
Mark Wielaard 16224b
 #define DT_PPC64_OPD	(DT_LOPROC + 1)
Mark Wielaard 16224b
 #define DT_PPC64_OPDSZ	(DT_LOPROC + 2)
Mark Wielaard 16224b
+#define DT_PPC64_OPT	(DT_LOPROC + 3)
Mark Wielaard 16224b
 #define DT_PPC64_NUM    3
Mark Wielaard 16224b
 
Mark Wielaard 16224b
+/* PowerPC64 specific values for the DT_PPC64_OPT Dyn entry.  */
Mark Wielaard 16224b
+#define PPC64_OPT_TLS		1
Mark Wielaard 16224b
+#define PPC64_OPT_MULTI_TOC	2
Mark Wielaard 16224b
+
Mark Wielaard 16224b
+/* PowerPC64 specific values for the Elf64_Sym st_other field.  */
Mark Wielaard 16224b
+#define STO_PPC64_LOCAL_BIT	5
Mark Wielaard 16224b
+#define STO_PPC64_LOCAL_MASK	(7 << STO_PPC64_LOCAL_BIT)
Mark Wielaard 16224b
+#define PPC64_LOCAL_ENTRY_OFFSET(other)				\
Mark Wielaard 16224b
+ (((1 << (((other) & STO_PPC64_LOCAL_MASK) >> STO_PPC64_LOCAL_BIT)) >> 2) << 2)
Mark Wielaard 16224b
+
Mark Wielaard 16224b
 
Mark Wielaard 16224b
 /* ARM specific declarations */
Mark Wielaard 16224b