Index: uspace/lib/c/generic/dlfcn.c
===================================================================
--- uspace/lib/c/generic/dlfcn.c	(revision b401b3322a451446f62c081f02087ec8f1c2f07e)
+++ uspace/lib/c/generic/dlfcn.c	(revision f42ee6f303b03f563ca4bf42301c737e9efa2172)
@@ -45,4 +45,5 @@
 #include <rtld/module.h>
 #include <rtld/rtld.h>
+#include <rtld/rtld_arch.h>
 #include <rtld/symbol.h>
 
@@ -79,5 +80,8 @@
 	sd = symbol_bfs_find(sym_name, (module_t *) mod, &sm);
 	if (sd != NULL) {
-		return symbol_get_addr(sd, sm, __tcb_get());
+		if (elf_st_type(sd->st_info) == STT_FUNC)
+			return func_get_addr(sd, sm);
+		else
+			return symbol_get_addr(sd, sm, __tcb_get());
 	}
 
