[PATCH] [lld] [ELF/AArch64] Fix local TLS relocations
Adhemerval Zanella
adhemerval.zanella at linaro.org
Tue May 26 10:37:50 PDT 2015
On 26-05-2015 10:36, Shankar Kalpathi Easwaran wrote:
> ================
> Comment at: lib/ReaderWriter/ELF/AArch64/AArch64RelocationHandler.cpp:476-479
> @@ -475,6 +475,6 @@
> break;
> - case R_AARCH64_TLSLE_ADD_TPREL_HI12:
> - return relocR_AARCH64_TLSLE_ADD_TPREL_HI12(loc, reloc, target, addend);
> - case R_AARCH64_TLSLE_ADD_TPREL_LO12_NC:
> - relocR_AARCH64_TLSLE_ADD_TPREL_LO12_NC(loc, reloc, target, addend);
> - break;
> + case R_AARCH64_TLSLE_ADD_TPREL_HI12: {
> + _tlsSize = _layout.getAlignedTLSSize();
> + return relocR_AARCH64_TLSLE_ADD_TPREL_HI12(loc, reloc, target + _tlsSize, addend);
> + } case R_AARCH64_TLSLE_ADD_TPREL_LO12_NC: {
> + _tlsSize = _layout.getAlignedTLSSize();
> ----------------
> can you move the case statement to a new line ?
Alright, I will change it.
>
> ================
> Comment at: lib/ReaderWriter/ELF/AArch64/AArch64RelocationHandler.cpp:477
> @@ +476,3 @@
> + case R_AARCH64_TLSLE_ADD_TPREL_HI12: {
> + _tlsSize = _layout.getAlignedTLSSize();
> + return relocR_AARCH64_TLSLE_ADD_TPREL_HI12(loc, reloc, target + _tlsSize, addend);
> ----------------
> Do relocations increase the size of the initial TLS image ? Confused.
The idea is to get the target address aligned to TLS alignment requirement (which
is 16 bytes for aarch64). That's why the _tlsSize is 'changed' before send to the
relocation handler.
>
> http://reviews.llvm.org/D10030
>
> EMAIL PREFERENCES
> http://reviews.llvm.org/settings/panel/emailpreferences/
>
>
More information about the llvm-commits
mailing list