// powerpc.h -- ELF definitions specific to EM_PPC and EM_PPC64 -*- C++ -*-
-// Copyright (C) 2008-2016 Free Software Foundation, Inc.
+// Copyright (C) 2008-2018 Free Software Foundation, Inc.
// Written by David S. Miller <davem@davemloft.net>.
// This file is part of elfcpp.
R_PPC64_REL24_NOTOC = 116,
R_PPC64_ADDR64_LOCAL = 117,
R_PPC64_ENTRY = 118,
+ R_POWERPC_PLTSEQ = 119,
+ R_POWERPC_PLTCALL = 120,
R_PPC_VLE_REL8 = 216,
R_PPC_VLE_REL15 = 217,
EF_PPC64_ABI = 3
};
+// Object attribute tags. 0-3 are generic.
+enum
+{
+ // FP ABI, low 2 bits:
+ // 1 for double precision hard-float,
+ // 2 for soft-float,
+ // 3 for single precision hard-float.
+ // 0 for not tagged or not using any ABIs affected by the differences.
+ // Next 2 bits:
+ // 1 for ibm long double
+ // 2 for 64-bit long double
+ // 3 for IEEE long double.
+ // 0 for not tagged or not using any ABIs affected by the differences.
+ Tag_GNU_Power_ABI_FP = 4,
+
+ // Value 1 for general purpose registers only, 2 for AltiVec
+ // registers, 3 for SPE registers; 0 for not tagged or not using any
+ // ABIs affected by the differences.
+ Tag_GNU_Power_ABI_Vector = 8,
+
+ // Value 1 for ABIs using r3/r4 for returning structures <= 8 bytes,
+ // 2 for ABIs using memory; 0 for not tagged or not using any ABIs
+ // affected by the differences.
+ Tag_GNU_Power_ABI_Struct_Return = 12
+};
+
+// DT_PPC_OPT bits
+enum
+{
+ PPC_OPT_TLS = 1
+};
+
+// DT_PPC64_OPT bits
+enum
+{
+ PPC64_OPT_TLS = 1,
+ PPC64_OPT_MULTI_TOC = 2,
+ PPC64_OPT_LOCALENTRY = 4
+};
+
enum
{
// The ELFv2 ABI uses three bits in the symbol st_other field of a