Index: uspace/lib/c/arch/ia32/include/libarch/tls.h
===================================================================
--- uspace/lib/c/arch/ia32/include/libarch/tls.h	(revision e2f260026920f1d43bed8d2b775564b1f64a6f6a)
+++ uspace/lib/c/arch/ia32/include/libarch/tls.h	(revision d2bb25e777311fb1c2e3cb09e66bab0c8b523a13)
@@ -43,4 +43,5 @@
 	void *self;
 	void *fibril_data;
+	void **dtv;
 } tcb_t;
 
Index: uspace/lib/c/arch/ia32/src/rtld/reloc.c
===================================================================
--- uspace/lib/c/arch/ia32/src/rtld/reloc.c	(revision e2f260026920f1d43bed8d2b775564b1f64a6f6a)
+++ uspace/lib/c/arch/ia32/src/rtld/reloc.c	(revision d2bb25e777311fb1c2e3cb09e66bab0c8b523a13)
@@ -101,9 +101,9 @@
 			sym_def = symbol_def_find(str_tab + sym->st_name,
 			    m, ssf_none, &dest);
-//			DPRINTF("dest name: '%s'\n", dest->dyn.soname);
+			DPRINTF("dest name: '%s'\n", dest->dyn.soname);
 //			DPRINTF("dest bias: 0x%x\n", dest->bias);
 			if (sym_def) {
 				sym_addr = (uint32_t)
-				    symbol_get_addr(sym_def, dest);
+				    symbol_get_addr(sym_def, dest, NULL);
 //				DPRINTF("symbol definition found, addr=0x%x\n", sym_addr);
 			} else {
@@ -154,5 +154,5 @@
 			if (sym_def) {
 				sym_addr = (uint32_t)
-				    symbol_get_addr(sym_def, dest);
+				    symbol_get_addr(sym_def, dest, NULL);
 			} else {
 				printf("Source definition of '%s' not found.\n",
Index: uspace/lib/c/arch/ia32/src/tls.c
===================================================================
--- uspace/lib/c/arch/ia32/src/tls.c	(revision e2f260026920f1d43bed8d2b775564b1f64a6f6a)
+++ uspace/lib/c/arch/ia32/src/tls.c	(revision d2bb25e777311fb1c2e3cb09e66bab0c8b523a13)
@@ -73,6 +73,6 @@
 #ifdef CONFIG_RTLD
 	if (runtime_env != NULL) {
-		return rtld_tls_get_addr(runtime_env, ti->ti_module,
-		    ti->ti_offset);
+		return rtld_tls_get_addr(runtime_env, __tcb_get(),
+		    ti->ti_module, ti->ti_offset);
 	}
 #endif
