Index: uspace/lib/c/generic/rtld/module.c
===================================================================
--- uspace/lib/c/generic/rtld/module.c	(revision 634e020ca4b381b0399365dd09c5ca7895e43a1c)
+++ uspace/lib/c/generic/rtld/module.c	(revision 6d87dce26627d7694e5261b909baec0bd3036471)
@@ -117,5 +117,5 @@
 		}
 	}
-	
+
 	return NULL; /* Not found */
 }
@@ -127,5 +127,5 @@
  * Currently this trivially tries to load '/<name>'.
  */
-module_t *module_load(rtld_t *rtld, const char *name)
+module_t *module_load(rtld_t *rtld, const char *name, mlflags_t flags)
 {
 	elf_finfo_t info;
@@ -133,6 +133,6 @@
 	module_t *m;
 	int rc;
-	
-	m = malloc(sizeof(module_t));
+
+	m = calloc(1, sizeof(module_t));
 	if (!m) {
 		printf("malloc failed\n");
@@ -141,4 +141,6 @@
 
 	m->rtld = rtld;
+	if ((flags & mlf_local) != 0)
+		m->local = true;
 
 	if (str_size(name) > NAME_BUF_SIZE - 2) {
@@ -185,5 +187,5 @@
 /** Load all modules on which m (transitively) depends.
  */
-void module_load_deps(module_t *m)
+void module_load_deps(module_t *m, mlflags_t flags)
 {
 	elf_dyn_t *dp;
@@ -230,6 +232,6 @@
 			dm = module_find(m->rtld, dep_name);
 			if (!dm) {
-				dm = module_load(m->rtld, dep_name);
-				module_load_deps(dm);
+				dm = module_load(m->rtld, dep_name, flags);
+				module_load_deps(dm, flags);
 			}
 
