diff options
author | Felix (Ting Wang) <Ting.Wang.SH@ibm.com> | 2024-03-01 08:09:40 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-01 08:09:40 +0800 |
commit | 5b058709536dd883980722ee000bb7b8c7b2cd8b (patch) | |
tree | 2b0ba08cb9f8dc133afdbdbfba221f22b97c6b7d /llvm/lib/MC/MCExpr.cpp | |
parent | 7d7d4752a8f3d7b83586c10a882f974d821c0c53 (diff) | |
download | llvm-5b058709536dd883980722ee000bb7b8c7b2cd8b.zip llvm-5b058709536dd883980722ee000bb7b8c7b2cd8b.tar.gz llvm-5b058709536dd883980722ee000bb7b8c7b2cd8b.tar.bz2 |
[PowerPC] Support local-dynamic TLS relocation on AIX (#66316)
Supports TLS local-dynamic on AIX, generates below sequence of code:
```
.tc foo[TC],foo[TL]@ld # Variable offset, ld relocation specifier
.tc mh[TC],mh[TC]@ml # Module handle for the caller
lwz 3,mh[TC]\(2\) $$ For 64-bit: ld 3,mh[TC]\(2\)
bla .__tls_get_mod # Modifies r0,r3,r4,r5,r11,lr,cr0
#r3 = &TLS for module
lwz 4,foo[TC]\(2\) $$ For 64-bit: ld 4,foo[TC]\(2\)
add 5,3,4 # Compute &foo
.rename mh[TC], "\_$TLSML" # Symbol for the module handle must have the name "_$TLSML"
```
---------
Co-authored-by: tingwang <tingwang@tingwangs-MBP.lan>
Co-authored-by: tingwang <tingwang@tingwangs-MacBook-Pro.local>
Diffstat (limited to 'llvm/lib/MC/MCExpr.cpp')
-rw-r--r-- | llvm/lib/MC/MCExpr.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/MC/MCExpr.cpp b/llvm/lib/MC/MCExpr.cpp index 485fd18..28b2cbb 100644 --- a/llvm/lib/MC/MCExpr.cpp +++ b/llvm/lib/MC/MCExpr.cpp @@ -338,6 +338,10 @@ StringRef MCSymbolRefExpr::getVariantKindName(VariantKind Kind) { return "ie"; case VK_PPC_AIX_TLSLE: return "le"; + case VK_PPC_AIX_TLSLD: + return "ld"; + case VK_PPC_AIX_TLSML: + return "ml"; case VK_PPC_GOT_TLSLD: return "got@tlsld"; case VK_PPC_GOT_TLSLD_LO: return "got@tlsld@l"; case VK_PPC_GOT_TLSLD_HI: return "got@tlsld@h"; |