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);
}