commit | 9b3124ca264b5ecb231b1d6c3758ce5073d4d0c6 | [log] [tgz] |
---|---|---|
author | Fangrui Song <maskray@google.com> | Thu May 30 10:00:20 2019 +0000 |
committer | Fangrui Song <maskray@google.com> | Thu May 30 10:00:20 2019 +0000 |
tree | 1362430c79a61bba2ebfa4b2094b844fcee95871 | |
parent | 072a2ea8f45dd4a44cc81b1a8f5bc009d393968d [diff] |
[ELF] Implement Local Dynamic style TLSDESC for x86-64 For the Local Dynamic case of TLSDESC, _TLS_MODULE_BASE_ is defined as a special TLS symbol that makes: 1) Without relaxation: it produces a dynamic TLSDESC relocation that computes 0. Adding @dtpoff to access a TLS symbol. 2) With LD->LE relaxation: _TLS_MODULE_BASE_@tpoff = 0 (lowest address in the TLS block). Adding @tpoff to access a TLS symbol. For 1), this saves dynamic relocations and GOT slots as otherwise (General Dynamic) we would create an R_X86_64_TLSDESC and reserve two GOT slots for each symbol. Add ElfSym::TlsModuleBase and change the signature of getTlsTpOffset() to special case _TLS_MODULE_BASE_. Reviewed By: ruiu Differential Revision: https://reviews.llvm.org/D62577 git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@362078 91177308-0d34-0410-b5e6-96231b3b80d8
This directory and its subdirectories contain source code for the LLVM Linker, a modular cross platform linker which is built as part of the LLVM compiler infrastructure project.
lld is open source software. You may freely distribute it under the terms of the license agreement found in LICENSE.txt.
In order to make sure various developers can evaluate patches over the same tests, we create a collection of self contained programs.
It is hosted at https://s3-us-west-2.amazonaws.com/linker-tests/lld-speed-test.tar.xz
The current sha256 is 10eec685463d5a8bbf08d77f4ca96282161d396c65bd97dc99dbde644a31610f.