Index: uspace/srv/loader/main.c
===================================================================
--- uspace/srv/loader/main.c	(revision 9b1baac695a63afb1850cd44050a52e06635cbd2)
+++ uspace/srv/loader/main.c	(revision 0d83cf6f04f9a3bfef021c71a4d4e0c172f9ad79)
@@ -62,4 +62,8 @@
 #include <vfs/inbox.h>
 
+#ifdef CONFIG_RTLD
+#include <rtld/rtld.h>
+#endif
+
 #define DPRINTF(...) ((void) 0)
 
@@ -296,4 +300,14 @@
 	DPRINTF("Loaded.\n");
 
+#ifdef CONFIG_RTLD
+	if (prog_info.env) {
+		pcb.tcb = rtld_tls_make(prog_info.env);
+	} else {
+		pcb.tcb = tls_make(prog_info.finfo.base);
+	}
+#else
+	pcb.tcb = tls_make(prog_info.finfo.base);
+#endif
+
 	elf_set_pcb(&prog_info, &pcb);
 
@@ -328,5 +342,8 @@
 	DPRINTF("Reply OK\n");
 	async_answer_0(req, EOK);
+
 	DPRINTF("Jump to entry point at %p\n", pcb.entry);
+
+	__tcb_reset();
 	entry_point_jmp(prog_info.finfo.entry, &pcb);
 
