[PATCH] D32336: [ELF] Account for R_386_TLS_LDO_32 addend

Shoaib Meenai via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Apr 20 21:57:38 PDT 2017


smeenai created this revision.

This relocation type has an implicit addend. Account for it when
processing the relocation. Add an offset to an existing test to ensure
it gets processed correctly.

Fixes PR32634.


https://reviews.llvm.org/D32336

Files:
  ELF/Target.cpp
  test/ELF/tls-dynamic-i686.s


Index: test/ELF/tls-dynamic-i686.s
===================================================================
--- test/ELF/tls-dynamic-i686.s
+++ test/ELF/tls-dynamic-i686.s
@@ -25,7 +25,7 @@
 .align 4
 tls2:
  .long 0
- .size tls2, 4
+ .size tls2, 8
 
 .section .text
 .globl _start
@@ -42,7 +42,7 @@
 
 leal tls2 at tlsldm(%ebx),%eax
 call __tls_get_addr at plt
-leal tls2 at dtpoff(%eax),%edx
+leal tls2 at dtpoff+4(%eax),%edx
 
 movl %gs:0,%eax
 addl tls0 at gotntpoff(%ebx),%eax
@@ -91,7 +91,7 @@
 // DIS-NEXT: 1023: 8d 90 08 00 00 00 leal 8(%eax), %edx
 // DIS-NEXT: 1029: 8d 83 f0 ff ff ff leal -16(%ebx), %eax
 // DIS-NEXT: 102f: e8 3c 00 00 00    calll 60
-// DIS-NEXT: 1034: 8d 90 08 00 00 00 leal 8(%eax), %edx
+// DIS-NEXT: 1034: 8d 90 0c 00 00 00 leal 12(%eax), %edx
 // Initial exec model:
 // DIS-NEXT: 103a: 65 a1 00 00 00 00 movl %gs:0, %eax
 // DIS-NEXT: 1040: 03 83 f8 ff ff ff addl -8(%ebx), %eax
Index: ELF/Target.cpp
===================================================================
--- ELF/Target.cpp
+++ ELF/Target.cpp
@@ -532,6 +532,7 @@
   case R_386_GOTPC:
   case R_386_PC32:
   case R_386_PLT32:
+  case R_386_TLS_LDO_32:
   case R_386_TLS_LE:
     return SignExtend64<32>(read32le(Buf));
   }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D32336.96093.patch
Type: text/x-patch
Size: 1203 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170421/716f5f67/attachment.bin>


More information about the llvm-commits mailing list