forked from OSchip/llvm-project
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: 279368
This commit is contained in:
parent
51b9a0e8e8
commit
21483f5636
|
@ -440,6 +440,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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in New Issue