ddb: Properly pretty-print non-labeled enum values

The ddb pretty-printer currently does not print out enum values that
are not labeled (e.g. X | Y).
The enum printer was reworked to print non-labeled values.

Reported by:	jrtc27
Fixes:	c21bc6f ("ddb: Add CTF-based pretty printing")
Approved by:	markj (mentor)
This commit is contained in:
Bojan Novković 2024-04-03 17:47:00 +02:00
parent 87e63f2e7f
commit aada453dcb

View file

@ -225,13 +225,14 @@ db_pprint_enum(db_addr_t addr, struct ctf_type_v3 *type, u_int depth)
for (; ep < endp; ep++) {
if (val == ep->cte_value) {
valname = db_ctf_stroff_to_str(&sym_data, ep->cte_name);
if (valname != NULL)
db_printf("%s (0x%lx)", valname, (long)val);
else
db_printf("(0x%lx)", (long)val);
break;
if (valname != NULL) {
db_printf("%s (0x%lx)", valname, val);
break;
}
}
}
if (ep == endp)
db_printf("0x%lx", val);
}
/*