From eb5983b48ea075461d6f8aba8ffe5ae69ced2299 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Mon, 31 May 2021 14:36:56 -0400 Subject: [PATCH] asahi: Print unknown enum values Signed-off-by: Alyssa Rosenzweig Part-of: --- src/asahi/lib/gen_pack.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/asahi/lib/gen_pack.py b/src/asahi/lib/gen_pack.py index 0cca73f4367..0eaf8360743 100644 --- a/src/asahi/lib/gen_pack.py +++ b/src/asahi/lib/gen_pack.py @@ -513,7 +513,10 @@ class Group(object): # TODO resolve to name print(' fprintf(fp, "%*s{}: 0x%" PRIx64 "\\n", indent, "", {});'.format(name, val)) elif field.type in self.parser.enums: - print(' fprintf(fp, "%*s{}: %s\\n", indent, "", {}_as_str({}));'.format(name, enum_name(field.type), val)) + print(' if ({}_as_str({}))'.format(enum_name(field.type), val)) + print(' fprintf(fp, "%*s{}: %s\\n", indent, "", {}_as_str({}));'.format(name, enum_name(field.type), val)) + print(' else') + print(' fprintf(fp, "%*s{}: unknown %X (XXX)\\n", indent, "", {});'.format(name, val)) elif field.type == "int": print(' fprintf(fp, "%*s{}: %d\\n", indent, "", {});'.format(name, val)) elif field.type == "bool": @@ -672,8 +675,9 @@ class Parser(object): name = '{}_{}'.format(prefix, value.name) name = safe_name(name).upper() print(' case {}: return "{}";'.format(name, value.name)) - print(' default: return "XXX: INVALID";') + print(' default: break;') print(" }") + print(" return NULL;") print("}\n") def parse(self, filename):