} else if ( VG_(get_objname)(ip, buf, ERRTXT_LEN) ) {
VG_(printf)(" obj:%s\n", buf);
} else {
- VG_(printf)(" ???:??? "
- "# unknown, suppression will not work, sorry\n");
+ VG_(printf)(" obj:*\n");
}
}
for (i = 0; i < su->n_callers; i++) {
Addr a = ips[i];
vg_assert(su->callers[i].name != NULL);
+ // The string to be used in the unknown case ("???") can be anything
+ // that couldn't be a valid function or objname. --gen-suppressions
+ // prints 'obj:*' for such an entry, which will match any string we
+ // use.
switch (su->callers[i].ty) {
case ObjName:
if (!VG_(get_objname)(a, caller_name, ERRTXT_LEN))
- return False;
+ VG_(strcpy)(caller_name, "???");
break;
case FunName:
// Nb: mangled names used in suppressions
if (!VG_(get_fnname_nodemangle)(a, caller_name, ERRTXT_LEN))
- return False;
+ VG_(strcpy)(caller_name, "???");
break;
default: VG_(tool_panic)("supp_matches_callers");
}
stack_changes.stderr.exp stack_changes.stdout.exp stack_changes.vgtest \
strchr.stderr.exp strchr.vgtest \
str_tester.stderr.exp str_tester.vgtest \
+ supp_unknown.stderr.exp supp_unknown.vgtest supp_unknown.supp \
supp1.stderr.exp supp1.vgtest \
supp2.stderr.exp supp2.vgtest \
supp.supp \
post-syscall \
realloc1 realloc2 realloc3 \
sigaltstack signal2 sigprocmask sigkill \
- stack_changes strchr str_tester supp1 supp2 suppfree \
+ stack_changes strchr str_tester supp_unknown supp1 supp2 suppfree \
trivialleak weirdioctl \
mismatches new_override metadata \
vgtest_ume xml1 \
# Don't allow GCC to inline memcpy(), because then we can't intercept it
overlap_CFLAGS = $(AM_CFLAGS) -fno-builtin-memcpy
str_tester_CFLAGS = $(AM_CFLAGS) -Wno-shadow
+supp_unknown_SOURCES = badjump.c
supp1_SOURCES = supp.c
supp2_SOURCES = supp.c