If the target of a DW_OP_GNU_parameter_ref isn't a DW_TAG_formal_parameter
that is bad data (which varlocs should error on). But it isn't an internal
consistency check (for which varlocs should assert).
Signed-off-by: Mark Wielaard <mark@klomp.org>
+2018-06-08 Mark Wielaard <mark@klomp.org>
+
+ * varlocs.c (print_expr): Error on bad DW_OP_GNU_parameter_ref
+ target, do not assert.
+
2018-06-08 Mark Wielaard <mark@klomp.org>
* get-units-invalid.c (main): Check invalid dwarf_getabbrev call.
// XXX actually lookup DW_TAG_GNU_call_site_parameter
printf ("%s[%" PRIx64 "]", opname, dwarf_dieoffset (¶m));
assert (expr->number == dwarf_cuoffset (¶m));
- assert (dwarf_tag (¶m) == DW_TAG_formal_parameter);
+ if (dwarf_tag (¶m) != DW_TAG_formal_parameter)
+ error (EXIT_FAILURE, 0, "Not a formal parameter");
}
break;