Fix handling of @IDNTPOFF relocations, they need to get STT_TLS.
authorJoerg Sonnenberger <joerg@bec.de>
Thu, 17 Mar 2011 00:35:10 +0000 (00:35 +0000)
committerJoerg Sonnenberger <joerg@bec.de>
Thu, 17 Mar 2011 00:35:10 +0000 (00:35 +0000)
While here, add VK_ARM_TPOFF and VK_ARM_GOTTPOFF, too.

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

lib/MC/MCELFStreamer.cpp
test/MC/ELF/tls-i386.s

index 464c136029894c72ca59b0aac1d0cc4b95e4f046..9fc9173914d2da06a739d955b254466b3a5365c3 100644 (file)
@@ -291,15 +291,18 @@ void  MCELFStreamer::fixSymbolsInTLSFixups(const MCExpr *expr) {
     switch (symRef.getKind()) {
     default:
       return;
+    case MCSymbolRefExpr::VK_GOTTPOFF:
+    case MCSymbolRefExpr::VK_INDNTPOFF:
     case MCSymbolRefExpr::VK_NTPOFF:
     case MCSymbolRefExpr::VK_GOTNTPOFF:
     case MCSymbolRefExpr::VK_TLSGD:
+    case MCSymbolRefExpr::VK_TLSLD:
     case MCSymbolRefExpr::VK_TLSLDM:
     case MCSymbolRefExpr::VK_TPOFF:
     case MCSymbolRefExpr::VK_DTPOFF:
-    case MCSymbolRefExpr::VK_GOTTPOFF:
-    case MCSymbolRefExpr::VK_TLSLD:
     case MCSymbolRefExpr::VK_ARM_TLSGD:
+    case MCSymbolRefExpr::VK_ARM_TPOFF:
+    case MCSymbolRefExpr::VK_ARM_GOTTPOFF:
       break;
     }
     MCSymbolData &SD = getAssembler().getOrCreateSymbolData(symRef.getSymbol());
index 459d4cc69df9b16ea68a69eda67ab1eaa1db8990..c754121cd6949f9712ad83194dbc138b1b0f9eb1 100644 (file)
@@ -8,6 +8,7 @@
         movl    foo4@TLSLDM(%eax), %eax
         movl    foo5@TPOFF(%eax), %eax
         movl    foo6@DTPOFF(%eax), %eax
+        movl    foo7@INDNTPOFF, %eax
 
 // CHECK:       (('st_name', 0x00000001) # 'foo1'
 // CHECK-NEXT:   ('st_value', 0x00000000)
 // CHECK-NEXT:   ('st_other', 0x00000000)
 // CHECK-NEXT:   ('st_shndx', 0x00000000)
 // CHECK-NEXT:  ),
+// CHECK-NEXT:  # Symbol 0x0000000b
+// CHECK-NEXT:  (('st_name', 0x0000001f) # 'foo7'
+// CHECK-NEXT:   ('st_value', 0x00000000)
+// CHECK-NEXT:   ('st_size', 0x00000000)
+// CHECK-NEXT:   ('st_bind', 0x00000001)
+// CHECK-NEXT:   ('st_type', 0x00000006)
+// CHECK-NEXT:   ('st_other', 0x00000000)
+// CHECK-NEXT:   ('st_shndx', 0x00000000)
+// CHECK-NEXT:  ),