From 1bcb8cce507e76ac1ae947694ae80bdba1653b43 Mon Sep 17 00:00:00 2001 From: pompolic <pompolic@special-circumstanc.es> Date: Wed, 22 Jun 2022 19:15:42 +0200 Subject: [PATCH] Permit data field for TT_MAX --- gdb-port/ast.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/gdb-port/ast.py b/gdb-port/ast.py index b3cb498..8c72448 100644 --- a/gdb-port/ast.py +++ b/gdb-port/ast.py @@ -51,6 +51,7 @@ class HParsedToken: #TT_MAX = gdb.lookup_type("enum HTokenType_").fields()[-1].enumval # Will be cached on the first lookup + # Annoyingly, the numerical value for the first custom token type == TT_MAX TT_MAX = None # Enum value hardcoded for convenience of implementation TT_SEQUENCE = 16 @@ -94,10 +95,13 @@ class HParsedToken: tok = gdb.Value(self.address).cast(__class__.HParsedToken_t_p) return tok +#TODO: how to tell when token_type == TT_MAX is meant to be TT_MAX, and when it's meant to be a custom type? def has_token_data(self): if not __class__.no_token_data: - __class__.no_token_data = [v.enumval for v in gdb.lookup_type("enum HTokenType_").fields() if v.name in ["TT_INVALID", "TT_RESERVED_1", "TT_ERR", "TT_NONE", "TT_MAX"]] - no_token_data = __class__.no_token_data or [v.enumval for v in gdb.lookup_type("enum HTokenType_").fields() if v.name in ["TT_INVALID", "TT_RESERVED_1", "TT_ERR", "TT_NONE", "TT_MAX"]] + #__class__.no_token_data = [v.enumval for v in gdb.lookup_type("enum HTokenType_").fields() if v.name in ["TT_INVALID", "TT_RESERVED_1", "TT_ERR", "TT_NONE", "TT_MAX"]] + __class__.no_token_data = [v.enumval for v in gdb.lookup_type("enum HTokenType_").fields() if v.name in ["TT_INVALID", "TT_RESERVED_1", "TT_ERR", "TT_NONE"]] + #no_token_data = __class__.no_token_data or [v.enumval for v in gdb.lookup_type("enum HTokenType_").fields() if v.name in ["TT_INVALID", "TT_RESERVED_1", "TT_ERR", "TT_NONE", "TT_MAX"]] + no_token_data = __class__.no_token_data or [v.enumval for v in gdb.lookup_type("enum HTokenType_").fields() if v.name in ["TT_INVALID", "TT_RESERVED_1", "TT_ERR", "TT_NONE"]] return self.token_type not in no_token_data #TODO: return make HCountedArray from data, if this is a sequence -- GitLab