Index: uspace/lib/c/generic/rtld/module.c
===================================================================
--- uspace/lib/c/generic/rtld/module.c	(revision 9182e86f8fac41203c8da4e3158cbf2b160dc738)
+++ uspace/lib/c/generic/rtld/module.c	(revision 634e020ca4b381b0399365dd09c5ca7895e43a1c)
@@ -62,22 +62,27 @@
 	module_process_pre_arch(m);
 
-	if (m->dyn.plt_rel == DT_REL) {
-		DPRINTF("table type DT_REL\n");
-		if (m->dyn.rel != NULL) {
-			DPRINTF("non-empty\n");
-			rel_table_process(m, m->dyn.rel, m->dyn.rel_sz);
-		}
-		/* FIXME: this seems wrong */
-		if (m->dyn.jmp_rel != NULL) {
-		DPRINTF("table type jmp-rel\n");
-			DPRINTF("non-empty\n");
+	/* jmp_rel table */
+	if (m->dyn.jmp_rel != NULL) {
+		DPRINTF("jmp_rel table\n");
+		if (m->dyn.plt_rel == DT_REL) {
+			DPRINTF("jmp_rel table type DT_REL\n");
 			rel_table_process(m, m->dyn.jmp_rel, m->dyn.plt_rel_sz);
-		}
-	} else { /* (m->dyn.plt_rel == DT_RELA) */
-		DPRINTF("table type DT_RELA\n");
-		if (m->dyn.rela != NULL) {
-			DPRINTF("non-empty\n");
-			rela_table_process(m, m->dyn.rela, m->dyn.rela_sz);
-		}
+		} else {
+			assert(m->dyn.plt_rel == DT_RELA);
+			DPRINTF("jmp_rel table type DT_RELA\n");
+			rela_table_process(m, m->dyn.jmp_rel, m->dyn.plt_rel_sz);
+		}
+	}
+
+	/* rel table */
+	if (m->dyn.rel != NULL) {
+		DPRINTF("rel table\n");
+		rel_table_process(m, m->dyn.rel, m->dyn.rel_sz);
+	}
+
+	/* rela table */
+	if (m->dyn.rela != NULL) {
+		DPRINTF("rela table\n");
+		rela_table_process(m, m->dyn.rela, m->dyn.rela_sz);
 	}
 
Index: uspace/lib/c/include/rtld/dynamic.h
===================================================================
--- uspace/lib/c/include/rtld/dynamic.h	(revision 9182e86f8fac41203c8da4e3158cbf2b160dc738)
+++ uspace/lib/c/include/rtld/dynamic.h	(revision 634e020ca4b381b0399365dd09c5ca7895e43a1c)
@@ -48,7 +48,4 @@
  */
 typedef struct dyn_info {
-	/** Type of relocations used for the PLT, either DT_REL or DT_RELA */
-	int plt_rel;
-
 	/** Relocation table without explicit addends */
 	void *rel;
@@ -64,4 +61,6 @@
 	void *jmp_rel;
 	size_t plt_rel_sz;
+	/** Type of relocations used for the PLT, either DT_REL or DT_RELA */
+	int plt_rel;
 
 	/** Pointer to PLT/GOT (processor-specific) */
