Commit f7ff8644 authored by Hans Wennborg's avatar Hans Wennborg
Browse files

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

------------------------------------------------------------------------

llvm-svn: 279476
parent 0f664e38
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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);
  }
}
+3 −3
Original line number Diff line number Diff line
@@ -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 {