Don't create PLT symbols that don't match filtering criteria

- instead of creating them, keeping them around, and then just not enabling
  breakpoints for them
diff --git a/sysdeps/linux-gnu/proc.c b/sysdeps/linux-gnu/proc.c
index 95a67e7..6002a1c 100644
--- a/sysdeps/linux-gnu/proc.c
+++ b/sysdeps/linux-gnu/proc.c
@@ -459,13 +459,21 @@
 
 		fprintf(stderr, "DSO addr=%#lx, name='%s'\n",
 			rlm.l_addr, lib_name);
-		struct library *lib
-			= ltelf_read_library(proc, lib_name, rlm.l_addr);
+
+		struct library *lib = malloc(sizeof(*lib));
 		if (lib == NULL) {
+		fail:
+			if (lib != NULL)
+				library_destroy(lib);
 			error(0, errno, "Couldn't load ELF object %s\n",
 			      lib_name);
 			continue;
 		}
+		library_init(lib, LT_LIBTYPE_DSO);
+
+		if (ltelf_read_library(lib, proc, lib_name, rlm.l_addr) < 0)
+			goto fail;
+
 		lib->key = key;
 		proc_add_library(proc, lib);
 	}