Drop ELF_MAX_SEGMENTS, simplify iteration through dynamic entries
diff --git a/sysdeps/linux-gnu/proc.c b/sysdeps/linux-gnu/proc.c
index 7f3c8d9..eb66021 100644
--- a/sysdeps/linux-gnu/proc.c
+++ b/sysdeps/linux-gnu/proc.c
@@ -249,7 +249,6 @@
find_dynamic_entry_addr(Process *proc, void *pvAddr, int d_tag, void **addr) {
fprintf(stderr, "find_dynamic_entry_addr %d %p %d\n",
proc->pid, pvAddr, d_tag);
- int i = 0, done = 0;
ElfW(Dyn) entry;
debug(DEBUG_FUNCTION, "find_dynamic_entry()");
@@ -258,27 +257,20 @@
return -1;
}
- while ((!done) && (i < ELF_MAX_SEGMENTS) &&
- (sizeof(entry) == umovebytes(proc, pvAddr, &entry, sizeof(entry))) &&
- (entry.d_tag != DT_NULL)) {
+ while ((sizeof(entry) == umovebytes(proc, pvAddr, &entry, sizeof(entry))) &&
+ (entry.d_tag != DT_NULL)) {
fprintf(stderr, " entry %ld %#lx\n", entry.d_tag, entry.d_un.d_val);
if (entry.d_tag == d_tag) {
fprintf(stderr, " hit\n");
- done = 1;
*addr = (void *)entry.d_un.d_val;
+ debug(2, "found address: 0x%p in dtag %d\n", *addr, d_tag);
+ return 0;
}
pvAddr += sizeof(entry);
- i++;
}
- if (done) {
- debug(2, "found address: 0x%p in dtag %d\n", *addr, d_tag);
- return 0;
- }
- else {
- debug(2, "Couldn't address for dtag!\n");
- return -1;
- }
+ debug(2, "Couldn't address for dtag!\n");
+ return -1;
}
enum callback_status