From aada453dcbaab1b8f7d50b66add5a38eb9e06cc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bojan=20Novkovi=C4=87?= Date: Wed, 3 Apr 2024 17:47:00 +0200 Subject: [PATCH] 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) --- sys/ddb/db_pprint.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/sys/ddb/db_pprint.c b/sys/ddb/db_pprint.c index 8aa14550f06..b4116372cf6 100644 --- a/sys/ddb/db_pprint.c +++ b/sys/ddb/db_pprint.c @@ -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); } /*