[PowerPC] Fix 32-bit PowerPC TLS relocs
authorUlrich Weigand <ulrich.weigand@de.ibm.com>
Mon, 1 Jul 2013 22:27:57 +0000 (22:27 +0000)
committerUlrich Weigand <ulrich.weigand@de.ibm.com>
Mon, 1 Jul 2013 22:27:57 +0000 (22:27 +0000)
Some TLS relocs were copied incorrectly from ppc64 to ppc32,
and some were missing completely.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185390 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Object/ELF.h
include/llvm/Support/ELF.h

index 6fb53cf7d4d9f82b10e66c3b5e2868fad2a24495..d14f96fd64d5d59a2471fc47a08b96984ffa1504 100644 (file)
@@ -2033,6 +2033,7 @@ StringRef ELFObjectFile<ELFT>::getRelocationTypeName(uint32_t Type) const {
       LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT16_HI);
       LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT16_HA);
       LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_REL32);
+      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_TLS);
       LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_TPREL16);
       LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_TPREL16_LO);
       LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_TPREL16_HI);
@@ -2049,14 +2050,16 @@ StringRef ELFObjectFile<ELFT>::getRelocationTypeName(uint32_t Type) const {
       LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TLSLD16_LO);
       LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TLSLD16_HI);
       LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TLSLD16_HA);
-      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TPREL16_DS);
-      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TPREL16_LO_DS);
+      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TPREL16);
+      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TPREL16_LO);
       LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TPREL16_HI);
       LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TPREL16_HA);
-      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_DTPREL16_DS);
-      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_DTPREL16_LO_DS);
+      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_DTPREL16);
+      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_DTPREL16_LO);
       LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_DTPREL16_HI);
       LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_DTPREL16_HA);
+      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_TLSGD);
+      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_TLSLD);
       LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_REL16);
       LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_REL16_LO);
       LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_REL16_HI);
index 9836e2e68ca9ef84289ea5b5ce98f5ec8ee0ae92..0b1337fab750128019e3569906112519f6ee98e7 100644 (file)
@@ -465,6 +465,7 @@ enum {
   R_PPC_GOT16_HI              = 16,
   R_PPC_GOT16_HA              = 17,
   R_PPC_REL32                 = 26,
+  R_PPC_TLS                   = 67,
   R_PPC_TPREL16               = 69,
   R_PPC_TPREL16_LO            = 70,
   R_PPC_TPREL16_HI            = 71,
@@ -481,14 +482,16 @@ enum {
   R_PPC_GOT_TLSLD16_LO        = 84,
   R_PPC_GOT_TLSLD16_HI        = 85,
   R_PPC_GOT_TLSLD16_HA        = 86,
-  R_PPC_GOT_TPREL16_DS        = 87,
-  R_PPC_GOT_TPREL16_LO_DS     = 88,
+  R_PPC_GOT_TPREL16           = 87,
+  R_PPC_GOT_TPREL16_LO        = 88,
   R_PPC_GOT_TPREL16_HI        = 89,
   R_PPC_GOT_TPREL16_HA        = 90,
-  R_PPC_GOT_DTPREL16_DS       = 91,
-  R_PPC_GOT_DTPREL16_LO_DS    = 92,
+  R_PPC_GOT_DTPREL16          = 91,
+  R_PPC_GOT_DTPREL16_LO       = 92,
   R_PPC_GOT_DTPREL16_HI       = 93,
   R_PPC_GOT_DTPREL16_HA       = 94,
+  R_PPC_TLSGD                 = 95,
+  R_PPC_TLSLD                 = 96,
   R_PPC_REL16                 = 249,
   R_PPC_REL16_LO              = 250,
   R_PPC_REL16_HI              = 251,