asahi: Print unknown enum values
authorAlyssa Rosenzweig <alyssa@rosenzweig.io>
Mon, 31 May 2021 18:36:56 +0000 (14:36 -0400)
committerMarge Bot <eric+marge@anholt.net>
Tue, 1 Jun 2021 01:31:02 +0000 (01:31 +0000)
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11086>

src/asahi/lib/gen_pack.py

index 0cca73f..0eaf836 100644 (file)
@@ -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):