mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-02 23:27:16 +00:00
[ELF] Fix TP offset of TLS Variant I after D62059
As Ryan Prichard pointed out, after D62059, the TP offset is incorrect. Add x86-64-tls-le-align.s to check this. Better formulae for both variants should take p_vaddr%p_align into account (offset%p_align = p_vaddr%p_align is a basic ELF requirement), but I can't find a way to test the behavior. llvm-svn: 361084
This commit is contained in:
parent
f9399de525
commit
348731aeed
@ -598,7 +598,7 @@ static int64_t getTlsTpOffset() {
|
||||
case EM_386:
|
||||
case EM_X86_64:
|
||||
// Variant 2. The TLS segment is located just before the thread pointer.
|
||||
return -Out::TlsPhdr->p_memsz;
|
||||
return -alignTo(Out::TlsPhdr->p_memsz, Out::TlsPhdr->p_align);
|
||||
case EM_PPC64:
|
||||
// The thread pointer points to a fixed offset from the start of the
|
||||
// executable's TLS segment. An offset of 0x7000 allows a signed 16-bit
|
||||
|
Loading…
x
Reference in New Issue
Block a user