diff options
author | Nemanja Ivanovic <nemanja.i.ibm@gmail.com> | 2021-03-04 08:07:22 -0600 |
---|---|---|
committer | Lei Huang <lei@ca.ibm.com> | 2021-03-08 09:30:19 -0600 |
commit | b0f0115308e4e8692b254c3b0e20f3743616b2d5 (patch) | |
tree | 22c4057ed7fee6bd20087fe2431ccd9e6d173e72 /llvm/lib/Object/WasmObjectFile.cpp | |
parent | 60d4c73b30a0e324c6ae314722eb036f70f4b03a (diff) | |
download | llvm-b0f0115308e4e8692b254c3b0e20f3743616b2d5.zip llvm-b0f0115308e4e8692b254c3b0e20f3743616b2d5.tar.gz llvm-b0f0115308e4e8692b254c3b0e20f3743616b2d5.tar.bz2 |
[AIX][TLS] Generate 32-bit general-dynamic access code sequence
Adds support for the TLS general dynamic access model to
assembly files on AIX 32-bit.
To generate the correct code sequence when accessing a TLS variable
`v`, we first create two TOC entry nodes, one for the variable offset, one
for the region handle. These nodes are followed by a `PPCISD::TLSGD_AIX`
node (new node introduced by this patch).
The `PPCISD::TLSGD_AIX` node (`TLSGDAIX` pseudo instruction) is
expanded to 2 copies (to put the variable offset and region handle in
the right registers) and a call to `__tls_get_addr`.
This patch also changes the way TC entries are generated in asm files.
If the generated TC entry is for the region handle of a TLS variable,
we add the `@m` relocation and the `.` prefix to the entry name.
For example:
```
L..C0:
.tc .v[TC],v[TL]@m -> region handle
L..C1:
.tc v[TC],v[TL] -> variable offset
```
Reviewed By: nemanjai, sfertile
Differential Revision: https://reviews.llvm.org/D97948
Diffstat (limited to 'llvm/lib/Object/WasmObjectFile.cpp')
0 files changed, 0 insertions, 0 deletions