+2017-02-09 Ulf Hermann <ulf.hermann@qt.io>
+
+ * backtrace-data.c: Don't assert that symbols are found.
+ The unwinder is allowed to ask for invalid addresses. We deny
+ such requests, rather than make the test fail.
+
2016-11-17 Mark Wielaard <mjw@redhat.com>
* run-readelf-s.sh: Add --symbols=.dynsym and --symbols=.symtab tests.
errno = 0;
long l = ptrace (PTRACE_PEEKDATA, child, (void *) (uintptr_t) addr, NULL);
- assert (errno == 0);
+
+ // The unwinder can ask for an invalid address.
+ // Don't assert on that but just politely refuse.
+ if (errno != 0) {
+ errno = 0;
+ return false;
+ }
*result = l;
- /* We could also return false for failed ptrace. */
return true;
}
unsigned long start, end, offset;
i = fscanf (f, "%lx-%lx %*s %lx %*x:%*x %*x", &start, &end, &offset);
assert (errno == 0);
- assert (i == 3);
+ if (i != 3)
+ break;
char *filename = strdup ("");
assert (filename);
size_t filename_len = 0;
}
free (filename);
}
+ *basep = 0;
+ return NULL;
}
/* Add module containing ADDR to the DWFL address space.
{
GElf_Addr base;
char *long_name = maps_lookup (child, addr, &base);
+ if (!long_name)
+ return NULL; // not found
Dwfl_Module *mod = dwfl_report_elf (dwfl, long_name, long_name, -1,
base, false /* add_p_vaddr */);
assert (mod);