+2018-05-31 Mark Wielaard <mark@klomp.org>
+
+ * dwarf_dieoffset.c: Check die->cu != NULL. Return -1, not ~0ul
+ on failure.
+
2018-05-29 Mark Wielaard <mark@klomp.org>
* dwarf_cuoffset.c (dwarf_cuoffset): Check die->cu is not NULL.
Dwarf_Off
dwarf_dieoffset (Dwarf_Die *die)
{
- return (die == NULL
- ? ~0ul
+ return ((die == NULL || die->cu == NULL)
+ ? (Dwarf_Off) -1
: (Dwarf_Off) (die->addr - die->cu->startp + die->cu->start));
}
INTDEF(dwarf_dieoffset)
+2018-05-31 Mark Wielaard <mark@klomp.org>
+
+ * readelf.c (print_debug_units): Check offset against -1 not ~0ul.
+
2018-05-29 Mark Wielaard <mark@klomp.org>
* readelf.c (print_debug_loc_section): Handle GNU DebugFission list
do
{
Dwarf_Off offset = dwarf_dieoffset (&dies[level]);
- if (unlikely (offset == ~0ul))
+ if (unlikely (offset == (Dwarf_Off) -1))
{
if (!silent)
error (0, 0, gettext ("cannot get DIE offset: %s"),
+2018-05-31 Mark Wielaard <mark@klomp.org>
+
+ * get-units-invalid.c (main): Check dwarf_cuoffset and
+ dwarf_dieoffset.
+
2018-05-29 Mark Wielaard <mark@klomp.org>
* dwarf-die-addr-die.c (check_dbg): Also check subdies, split or
if (dwarf_ranges (&subdie, 0, &base, &start, &end) != -1)
{
printf ("Should NOT have a ranges: %s\n",
- dwarf_diename (&result));
+ dwarf_diename (&subdie));
+ return -1;
+ }
+ if (dwarf_cuoffset (&subdie) != (Dwarf_Off) -1)
+ {
+ printf ("Should NOT have a cuoffset: %s\n",
+ dwarf_diename (&subdie));
+ return -1;
+ }
+ if (dwarf_dieoffset (&subdie) != (Dwarf_Off) -1)
+ {
+ printf ("Should NOT have a die offset: %s\n",
+ dwarf_diename (&subdie));
return -1;
}
}