aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Wennborg <hans@hanshq.net>2016-08-22 21:15:19 +0000
committerHans Wennborg <hans@hanshq.net>2016-08-22 21:15:19 +0000
commit96aa6cfc4cfa1f11506eec8655a2db813b7803cf (patch)
tree8d52198ddf019d0f846b49105b331d5625ec87f4
parented0d2c492c53e4008f5538ff9e497751bd40f244 (diff)
Merging r279368:
------------------------------------------------------------------------ r279368 | ed | 2016-08-20 03:54:51 -0700 (Sat, 20 Aug 2016) | 12 lines Add R_386_TLS_LE as a relocation having an implicit addend. TLS on i386 in non-PIE/PIC code seems broken right now, because we don't properly add the addend encoded in the instruction to the resulting offset when processing R_386_TLS_LE relocations. Extend one of the existing tests for TLS on i686 to use an addend. PR: https://llvm.org/bugs/show_bug.cgi?id=29068 Reviewed by: ruiu Differential Revision: https://reviews.llvm.org/D23741 ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/lld/branches/release_39@279476 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--ELF/Target.cpp1
-rw-r--r--test/ELF/tls-i686.s6
2 files changed, 4 insertions, 3 deletions
diff --git a/ELF/Target.cpp b/ELF/Target.cpp
index 466d1b47c..0375eb96d 100644
--- a/ELF/Target.cpp
+++ b/ELF/Target.cpp
@@ -436,6 +436,7 @@ uint64_t X86TargetInfo::getImplicitAddend(const uint8_t *Buf,
case R_386_GOTPC:
case R_386_PC32:
case R_386_PLT32:
+ case R_386_TLS_LE:
return read32le(Buf);
}
}
diff --git a/test/ELF/tls-i686.s b/test/ELF/tls-i686.s
index e0a1007fd..2a04a5558 100644
--- a/test/ELF/tls-i686.s
+++ b/test/ELF/tls-i686.s
@@ -28,7 +28,7 @@ _start:
movl %gs:0, %ecx
leal var@ntpoff(%ecx), %eax
movl %gs:0, %ecx
- leal var1@ntpoff(%ecx), %eax
+ leal var1@ntpoff+123(%ecx), %eax
// DIS: Disassembly of section test:
// DIS-NEXT: _start:
@@ -41,7 +41,7 @@ _start:
// DIS-NEXT: 1201c: 65 8b 0d 00 00 00 00 movl %gs:0, %ecx
// DIS-NEXT: 12023: 8d 81 f8 ff ff ff leal -8(%ecx), %eax
// DIS-NEXT: 12029: 65 8b 0d 00 00 00 00 movl %gs:0, %ecx
-// DIS-NEXT: 12030: 8d 81 fc ff ff ff leal -4(%ecx), %eax
+// DIS-NEXT: 12030: 8d 81 77 00 00 00 leal 119(%ecx), %eax
// RELOC: Relocations [
// RELOC-NEXT: ]
@@ -57,7 +57,7 @@ _start:
// DISSHARED-NEXT: 201c: 65 8b 0d 00 00 00 00 movl %gs:0, %ecx
// DISSHARED-NEXT: 2023: 8d 81 00 00 00 00 leal (%ecx), %eax
// DISSHARED-NEXT: 2029: 65 8b 0d 00 00 00 00 movl %gs:0, %ecx
-// DISSHARED-NEXT: 2030: 8d 81 00 00 00 00 leal (%ecx), %eax
+// DISSHARED-NEXT: 2030: 8d 81 7b 00 00 00 leal 123(%ecx), %eax
// RELOCSHARED: Relocations [
// RELOCSHARED-NEXT: Section (4) .rel.dyn {