diff options
author | Mark Seaborn <mseaborn@chromium.org> | 2012-11-29 18:42:19 -0800 |
---|---|---|
committer | Mark Seaborn <mseaborn@chromium.org> | 2012-11-29 18:42:19 -0800 |
commit | ffb0eedef4f034996ce59aac3176482617a8044c (patch) | |
tree | 03195b67f4e4770e961a4487fcdc5ac9e52bbb17 /lib/ExecutionEngine/JIT/NaClJITMemoryManager.cpp | |
parent | 7a51b9c26dfc7fb9df8047c553227b47d64ba5c6 (diff) |
PNaCl: Add ExpandTls pass for expanding out static TLS variables
This replaces each reference to a TLS variable "foo" with the LLVM IR
equivalent of the expression:
((struct tls_template *) __nacl_read_tp())->foo
This pass fills out the global variables __tls_template_start,
__tls_template_end etc. which are used by src/untrusted/nacl/tls.c.
These are the symbols that are otherwise defined by a binutils linker
script.
In order to handle the case of TLS variables that occur inside
ConstantExprs, we have a helper pass, ExpandTlsConstantExpr.
BUG=http://code.google.com/p/nativeclient/issues/detail?id=2837
TEST=test/Transforms/NaCl/expand-tls*.ll
Review URL: https://chromiumcodereview.appspot.com/10896042
Diffstat (limited to 'lib/ExecutionEngine/JIT/NaClJITMemoryManager.cpp')
0 files changed, 0 insertions, 0 deletions