Index: uspace/app/dltest/dltest.c
===================================================================
--- uspace/app/dltest/dltest.c	(revision 9c07c3d937d51ff587e1eac05d09ce9b2423f541)
+++ uspace/app/dltest/dltest.c	(revision 97696ab1816deac19e577366523288ba111157cb)
@@ -96,4 +96,5 @@
 {
 	int (*p_dl_get_private_var)(void);
+	int *(*p_dl_get_private_var_addr)(void);
 	int val;
 
@@ -106,8 +107,16 @@
 	}
 
+	p_dl_get_private_var_addr = dlsym(handle, "dl_get_private_var_addr");
+	if (p_dl_get_private_var_addr == NULL) {
+		printf("FAILED\n");
+		return false;
+	}
+
 	val = p_dl_get_private_var();
 
 	printf("Got %d, expected %d... ", val, dl_private_var_val);
 	if (val != dl_private_var_val) {
+		printf("dl_get_private_var_addr -> %p\n",
+		    p_dl_get_private_var_addr());
 		printf("FAILED\n");
 		return false;
@@ -124,4 +133,5 @@
 {
 	int (*p_dl_get_private_uvar)(void);
+	int *(*p_dl_get_private_uvar_addr)(void);
 	int val;
 
@@ -134,8 +144,16 @@
 	}
 
+	p_dl_get_private_uvar_addr = dlsym(handle, "dl_get_private_uvar_addr");
+	if (p_dl_get_private_uvar_addr == NULL) {
+		printf("FAILED\n");
+		return false;
+	}
+
 	val = p_dl_get_private_uvar();
 
 	printf("Got %d, expected %d... ", val, 0);
 	if (val != 0) {
+		printf("dl_get_private_uvar_addr -> %p\n",
+		    p_dl_get_private_uvar_addr());
 		printf("FAILED\n");
 		return false;
@@ -152,4 +170,5 @@
 {
 	int (*p_dl_get_public_var)(void);
+	int *(*p_dl_get_public_var_addr)(void);
 	int val;
 
@@ -162,8 +181,16 @@
 	}
 
+	p_dl_get_public_var_addr = dlsym(handle, "dl_get_public_var_addr");
+	if (p_dl_get_public_var_addr == NULL) {
+		printf("FAILED\n");
+		return false;
+	}
+
 	val = p_dl_get_public_var();
 
 	printf("Got %d, expected %d... ", val, dl_public_var_val);
 	if (val != dl_public_var_val) {
+		printf("dl_get_public_var_addr -> %p\n",
+		    p_dl_get_public_var_addr());
 		printf("FAILED\n");
 		return false;
@@ -180,4 +207,5 @@
 {
 	int (*p_dl_get_public_uvar)(void);
+	int *(*p_dl_get_public_uvar_addr)(void);
 	int val;
 
@@ -190,8 +218,16 @@
 	}
 
+	p_dl_get_public_uvar_addr = dlsym(handle, "dl_get_public_uvar_addr");
+	if (p_dl_get_public_uvar_addr == NULL) {
+		printf("FAILED\n");
+		return false;
+	}
+
 	val = p_dl_get_public_uvar();
 
 	printf("Got %d, expected %d... ", val, 0);
 	if (val != 0) {
+		printf("dl_get_public_uvar_addr -> %p\n",
+		    p_dl_get_public_uvar_addr());
 		printf("FAILED\n");
 		return false;
@@ -208,4 +244,5 @@
 {
 	int *p_dl_public_var;
+	int *(*p_dl_get_public_var_addr)(void);
 	int val;
 
@@ -218,8 +255,17 @@
 	}
 
+	p_dl_get_public_var_addr = dlsym(handle, "dl_get_public_var_addr");
+	if (p_dl_get_public_var_addr == NULL) {
+		printf("FAILED\n");
+		return false;
+	}
+
 	val = *p_dl_public_var;
 
 	printf("Got %d, expected %d... ", val, dl_public_var_val);
 	if (val != dl_public_var_val) {
+		printf("&dl_public_var = %p, "
+		    "dl_get_public_var_addr -> %p\n",
+		    p_dl_public_var, p_dl_get_public_var_addr());
 		printf("FAILED\n");
 		return false;
@@ -236,4 +282,5 @@
 {
 	int *p_dl_public_uvar;
+	int *(*p_dl_get_public_uvar_addr)(void);
 	int val;
 
@@ -246,8 +293,17 @@
 	}
 
+	p_dl_get_public_uvar_addr = dlsym(handle, "dl_get_public_uvar_addr");
+	if (p_dl_get_public_uvar_addr == NULL) {
+		printf("FAILED\n");
+		return false;
+	}
+
 	val = *p_dl_public_uvar;
 
 	printf("Got %d, expected %d... ", val, 0);
 	if (val != 0) {
+		printf("&dl_public_uvar = %p, "
+		    "dl_get_public_uvar_addr -> %p\n",
+		    p_dl_public_uvar, p_dl_get_public_uvar_addr());
 		printf("FAILED\n");
 		return false;
@@ -264,4 +320,5 @@
 {
 	int (*p_dl_get_private_fib_var)(void);
+	int *(*p_dl_get_private_fib_var_addr)(void);
 	int val;
 
@@ -274,8 +331,16 @@
 	}
 
+	p_dl_get_private_fib_var_addr = dlsym(handle, "dl_get_private_fib_var_addr");
+	if (p_dl_get_private_fib_var_addr == NULL) {
+		printf("FAILED\n");
+		return false;
+	}
+
 	val = p_dl_get_private_fib_var();
 
 	printf("Got %d, expected %d... ", val, dl_private_fib_var_val);
 	if (val != dl_private_fib_var_val) {
+		printf("dl_get_private_fib_var_addr -> %p\n",
+		    p_dl_get_private_fib_var_addr());
 		printf("FAILED\n");
 		return false;
@@ -292,4 +357,5 @@
 {
 	int (*p_dl_get_private_fib_uvar)(void);
+	int *(*p_dl_get_private_fib_uvar_addr)(void);
 	int val;
 
@@ -302,8 +368,16 @@
 	}
 
+	p_dl_get_private_fib_uvar_addr = dlsym(handle, "dl_get_private_fib_uvar_addr");
+	if (p_dl_get_private_fib_uvar_addr == NULL) {
+		printf("FAILED\n");
+		return false;
+	}
+
 	val = p_dl_get_private_fib_uvar();
 
 	printf("Got %d, expected %d... ", val, 0);
 	if (val != 0) {
+		printf("dl_get_private_fib_uvar_addr -> %p\n",
+		    p_dl_get_private_fib_uvar_addr());
 		printf("FAILED\n");
 		return false;
@@ -320,4 +394,5 @@
 {
 	int (*p_dl_get_public_fib_var)(void);
+	int *(*p_dl_get_public_fib_var_addr)(void);
 	int val;
 
@@ -330,8 +405,16 @@
 	}
 
+	p_dl_get_public_fib_var_addr = dlsym(handle, "dl_get_public_fib_var_addr");
+	if (p_dl_get_public_fib_var_addr == NULL) {
+		printf("FAILED\n");
+		return false;
+	}
+
 	val = p_dl_get_public_fib_var();
 
 	printf("Got %d, expected %d... ", val, dl_public_fib_var_val);
 	if (val != dl_public_fib_var_val) {
+		printf("dl_get_public_fib_var_addr -> %p\n",
+		    p_dl_get_public_fib_var_addr());
 		printf("FAILED\n");
 		return false;
@@ -348,4 +431,5 @@
 {
 	int (*p_dl_get_public_fib_uvar)(void);
+	int *(*p_dl_get_public_fib_uvar_addr)(void);
 	int val;
 
@@ -358,8 +442,16 @@
 	}
 
+	p_dl_get_public_fib_uvar_addr = dlsym(handle, "dl_get_public_fib_uvar_addr");
+	if (p_dl_get_public_fib_uvar_addr == NULL) {
+		printf("FAILED\n");
+		return false;
+	}
+
 	val = p_dl_get_public_fib_uvar();
 
 	printf("Got %d, expected %d... ", val, 0);
 	if (val != 0) {
+		printf("dl_get_public_fib_uvar_addr -> %p\n",
+		    p_dl_get_public_fib_uvar_addr());
 		printf("FAILED\n");
 		return false;
@@ -376,4 +468,5 @@
 {
 	int *p_dl_public_fib_var;
+	int *(*p_dl_get_public_fib_var_addr)(void);
 	int val;
 
@@ -386,8 +479,17 @@
 	}
 
+	p_dl_get_public_fib_var_addr = dlsym(handle, "dl_get_public_fib_var_addr");
+	if (p_dl_get_public_fib_var_addr == NULL) {
+		printf("FAILED\n");
+		return false;
+	}
+
 	val = *p_dl_public_fib_var;
 
 	printf("Got %d, expected %d... ", val, dl_public_fib_var_val);
 	if (val != dl_public_fib_var_val) {
+		printf("&dl_public_fib_var = %p, "
+		    "dl_get_public_fib_var_addr -> %p\n",
+		    p_dl_public_fib_var, p_dl_get_public_fib_var_addr());
 		printf("FAILED\n");
 		return false;
@@ -404,4 +506,5 @@
 {
 	int *p_dl_public_fib_uvar;
+	int *(*p_dl_get_public_fib_uvar_addr)(void);
 	int val;
 
@@ -414,8 +517,17 @@
 	}
 
+	p_dl_get_public_fib_uvar_addr = dlsym(handle, "dl_get_public_fib_uvar_addr");
+	if (p_dl_get_public_fib_uvar_addr == NULL) {
+		printf("FAILED\n");
+		return false;
+	}
+
 	val = *p_dl_public_fib_uvar;
 
 	printf("Got %d, expected %d... ", val, 0);
 	if (val != 0) {
+		printf("&dl_public_fib_uvar = %p, "
+		    "dl_get_public_fib_uvar_addr -> %p\n",
+		    p_dl_public_fib_uvar, p_dl_get_public_fib_uvar_addr());
 		printf("FAILED\n");
 		return false;
@@ -460,4 +572,6 @@
 	printf("Got %d, expected %d... ", val, dl_private_var_val);
 	if (val != dl_private_var_val) {
+		printf("dl_get_private_var_addr -> %p\n",
+		    dl_get_private_var_addr());
 		printf("FAILED\n");
 		return false;
@@ -481,4 +595,6 @@
 	printf("Got %d, expected %d... ", val, 0);
 	if (val != 0) {
+		printf("dl_get_private_uvar_addr -> %p\n",
+		    dl_get_private_uvar_addr());
 		printf("FAILED\n");
 		return false;
@@ -502,4 +618,6 @@
 	printf("Got %d, expected %d... ", val, dl_public_var_val);
 	if (val != dl_public_var_val) {
+		printf("dl_get_public_var_addr -> %p\n",
+		    dl_get_public_var_addr());
 		printf("FAILED\n");
 		return false;
@@ -523,4 +641,6 @@
 	printf("Got %d, expected %d... ", val, 0);
 	if (val != 0) {
+		printf("dl_get_public_uvar_addr -> %p\n",
+		    dl_get_public_uvar_addr());
 		printf("FAILED\n");
 		return false;
@@ -542,4 +662,6 @@
 	printf("Got %d, expected %d... ", val, dl_public_var_val);
 	if (val != dl_public_var_val) {
+		printf("&dl_public_var = %p, dl_get_public_var_addr -> %p\n",
+		    &dl_public_var, dl_get_public_var_addr());
 		printf("FAILED\n");
 		return false;
@@ -561,4 +683,6 @@
 	printf("Got %d, expected %d... ", val, 0);
 	if (val != 0) {
+		printf("&dl_public_uvar = %p, dl_get_public_uvar_addr -> %p\n",
+		    &dl_public_uvar, dl_get_public_uvar_addr());
 		printf("FAILED\n");
 		return false;
@@ -582,4 +706,6 @@
 	printf("Got %d, expected %d... ", val, dl_private_fib_var_val);
 	if (val != dl_private_fib_var_val) {
+		printf("dl_get_private_fib_var_addr -> %p\n",
+		    dl_get_private_fib_var_addr());
 		printf("FAILED\n");
 		return false;
@@ -603,4 +729,6 @@
 	printf("Got %d, expected %d... ", val, 0);
 	if (val != 0) {
+		printf("dl_get_private_fib_uvar_addr -> %p\n",
+		    dl_get_private_fib_var_addr());
 		printf("FAILED\n");
 		return false;
@@ -624,4 +752,6 @@
 	printf("Got %d, expected %d... ", val, dl_public_fib_var_val);
 	if (val != dl_public_fib_var_val) {
+		printf("dl_get_public_fib_var_addr -> %p\n",
+		    dl_get_public_fib_var_addr());
 		printf("FAILED\n");
 		return false;
@@ -645,4 +775,6 @@
 	printf("Got %d, expected %d... ", val, 0);
 	if (val != 0) {
+		printf("dl_get_public_fib_uvar_addr -> %p\n",
+		    dl_get_public_fib_uvar_addr());
 		printf("FAILED\n");
 		return false;
@@ -664,4 +796,7 @@
 	printf("Got %d, expected %d... ", val, dl_public_fib_var_val);
 	if (val != dl_public_fib_var_val) {
+		printf("&dl_public_fib_var = %p, "
+		    "dl_get_public_fib_var_addr -> %p\n",
+		    &dl_public_fib_var, dl_get_public_fib_var_addr());
 		printf("FAILED\n");
 		return false;
@@ -683,4 +818,7 @@
 	printf("Got %d, expected %d... ", val, 0);
 	if (val != 0) {
+		printf("&dl_public_fib_uvar = %p, "
+		    "dl_get_public_fib_uvar_addr -> %p\n",
+		    &dl_public_fib_uvar, dl_get_public_fib_uvar_addr());
 		printf("FAILED\n");
 		return false;
Index: uspace/lib/dltest/dltest.c
===================================================================
--- uspace/lib/dltest/dltest.c	(revision 9c07c3d937d51ff587e1eac05d09ce9b2423f541)
+++ uspace/lib/dltest/dltest.c	(revision 97696ab1816deac19e577366523288ba111157cb)
@@ -69,8 +69,20 @@
 }
 
+/** Return address of private initialized variable */
+int *dl_get_private_var_addr(void)
+{
+	return &private_var;
+}
+
 /** Return value of private uninitialized variable */
 int dl_get_private_uvar(void)
 {
 	return private_uvar;
+}
+
+/** Return vaddress of private uninitialized variable */
+int *dl_get_private_uvar_addr(void)
+{
+	return &private_uvar;
 }
 
@@ -81,8 +93,20 @@
 }
 
+/** Return address of public initialized variable */
+int *dl_get_public_var_addr(void)
+{
+	return &dl_public_var;
+}
+
 /** Return value of public uninitialized variable */
 int dl_get_public_uvar(void)
 {
 	return dl_public_uvar;
+}
+
+/** Return address of public uninitialized variable */
+int *dl_get_public_uvar_addr(void)
+{
+	return &dl_public_uvar;
 }
 
@@ -93,8 +117,20 @@
 }
 
+/** Return address of private initialized fibril-local variable */
+int *dl_get_private_fib_var_addr(void)
+{
+	return &dl_private_fib_var;
+}
+
 /** Return value of private uninitialized fibril-local variable */
 int dl_get_private_fib_uvar(void)
 {
 	return dl_private_fib_uvar;
+}
+
+/** Return address of private uninitialized fibril-local variable */
+int *dl_get_private_fib_uvar_addr(void)
+{
+	return &dl_private_fib_uvar;
 }
 
@@ -105,4 +141,10 @@
 }
 
+/** Return value of public initialized fibril-local variable */
+int *dl_get_public_fib_var_addr(void)
+{
+	return &dl_public_fib_var;
+}
+
 /** Return value of public uninitialized fibril-local variable */
 int dl_get_public_fib_uvar(void)
@@ -111,4 +153,10 @@
 }
 
+/** Return value of public uninitialized fibril-local variable */
+int *dl_get_public_fib_uvar_addr(void)
+{
+	return &dl_public_fib_uvar;
+}
+
 /**
  * @}
Index: uspace/lib/dltest/libdltest.h
===================================================================
--- uspace/lib/dltest/libdltest.h	(revision 9c07c3d937d51ff587e1eac05d09ce9b2423f541)
+++ uspace/lib/dltest/libdltest.h	(revision 97696ab1816deac19e577366523288ba111157cb)
@@ -49,11 +49,19 @@
 extern int dl_get_constant(void);
 extern int dl_get_private_var(void);
+extern int *dl_get_private_var_addr(void);
 extern int dl_get_private_uvar(void);
+extern int *dl_get_private_uvar_addr(void);
 extern int dl_get_public_var(void);
+extern int *dl_get_public_var_addr(void);
 extern int dl_get_public_uvar(void);
+extern int *dl_get_public_uvar_addr(void);
 extern int dl_get_private_fib_var(void);
+extern int *dl_get_private_fib_var_addr(void);
 extern int dl_get_private_fib_uvar(void);
+extern int *dl_get_private_fib_uvar_addr(void);
 extern int dl_get_public_fib_var(void);
+extern int *dl_get_public_fib_var_addr(void);
 extern int dl_get_public_fib_uvar(void);
+extern int *dl_get_public_fib_uvar_addr(void);
 
 extern int dl_public_var;
