summaryrefslogtreecommitdiff
path: root/linker/linker_main.cpp
diff options
context:
space:
mode:
authorRyan Prichard <rprichard@google.com>2019-01-17 23:10:51 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2019-01-17 23:10:51 +0000
commit9a238653c1a32a7bd046aba8411e7400dda8367e (patch)
tree726605d697cad7873e090acdb5014164ce42f5d6 /linker/linker_main.cpp
parent1f6adf5863b53c8a9139eef256e87d998f7130d4 (diff)
parentfb8730d49586f29868b5697d6a8c74aa9a4847d0 (diff)
Merge changes Ia08e1b5c,I60e589dd,Ib7edb665,Ibf1bf5ec,Ibd623857
* changes: Handle R_GENERIC_TLS_TPREL relocations Avoid a dlopen abort on an invalid TLS alignment Initialize static TLS memory using module list Record TLS modules and layout static TLS memory StaticTlsLayout: add exe/tcb and solib layout
Diffstat (limited to 'linker/linker_main.cpp')
-rw-r--r--linker/linker_main.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/linker/linker_main.cpp b/linker/linker_main.cpp
index 9b4ce47c3..b0c27dcd6 100644
--- a/linker/linker_main.cpp
+++ b/linker/linker_main.cpp
@@ -415,6 +415,8 @@ static ElfW(Addr) linker_main(KernelArgumentBlock& args, const char* exe_to_load
}
}
+ linker_setup_exe_static_tls(g_argv[0]);
+
// Load ld_preloads and dependencies.
std::vector<const char*> needed_library_name_list;
size_t ld_preloads_count = 0;
@@ -452,8 +454,7 @@ static ElfW(Addr) linker_main(KernelArgumentBlock& args, const char* exe_to_load
si->increment_ref_count();
}
- layout_linker_static_tls();
-
+ linker_finalize_static_tls();
__libc_init_main_thread_final();
if (!get_cfi_shadow()->InitialLinkDone(solist)) __linker_cannot_link(g_argv[0]);