From fef822556889451bc1a09e4415eebc3aa7eea489 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20D=C3=BCsterhus?= Date: Tue, 24 Jun 2025 08:57:35 +0200 Subject: [PATCH 1/2] =?UTF-8?q?php=5Fgdb:=20Print=20`zend=5Fstring*`?= =?UTF-8?q?=E2=80=99s=20`h`=20field=20as=20hexadecimal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A decimal representation of a hash value is not particularly meaningful and makes it harder to compare hash values. --- main/debug_gdb_scripts.c | 2 ++ scripts/gdb/php_gdb.py | 2 ++ 2 files changed, 4 insertions(+) diff --git a/main/debug_gdb_scripts.c b/main/debug_gdb_scripts.c index 3806f6aab60dd..f49f01b547594 100644 --- a/main/debug_gdb_scripts.c +++ b/main/debug_gdb_scripts.c @@ -719,6 +719,8 @@ asm( ".ascii \" for field in self.val.type.fields():\\n\"\n" ".ascii \" if field.name == 'val':\\n\"\n" ".ascii \" yield ('val', format_zstr(self.val))\\n\"\n" + ".ascii \" elif field.name == 'h':\\n\"\n" + ".ascii \" yield (field.name, \\\"0x%x\\\" % self.val[field.name])\\n\"\n" ".ascii \" else:\\n\"\n" ".ascii \" yield (field.name, format_nested(self.val[field.name]))\\n\"\n" ".ascii \"\\n\"\n" diff --git a/scripts/gdb/php_gdb.py b/scripts/gdb/php_gdb.py index ae8396a2ac0c2..00467409c625e 100644 --- a/scripts/gdb/php_gdb.py +++ b/scripts/gdb/php_gdb.py @@ -49,6 +49,8 @@ def children(self): for field in self.val.type.fields(): if field.name == 'val': yield ('val', format_zstr(self.val)) + elif field.name == 'h': + yield (field.name, "0x%x" % self.val[field.name]) else: yield (field.name, format_nested(self.val[field.name])) From da3b3d8888c6fe43818f03881b1baca5c70de745 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20D=C3=BCsterhus?= Date: Tue, 24 Jun 2025 09:30:47 +0200 Subject: [PATCH 2/2] =?UTF-8?q?php=5Fgdb:=20Print=20`HashTable*`=E2=80=99s?= =?UTF-8?q?=20`nTableMask`=20field=20as=20hexadecimal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main/debug_gdb_scripts.c | 9 ++++----- scripts/gdb/php_gdb.py | 9 ++++----- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/main/debug_gdb_scripts.c b/main/debug_gdb_scripts.c index f49f01b547594..e3c522bc04843 100644 --- a/main/debug_gdb_scripts.c +++ b/main/debug_gdb_scripts.c @@ -753,12 +753,11 @@ asm( ".ascii \" def children(self):\\n\"\n" ".ascii \" for field in self.val.type.fields():\\n\"\n" ".ascii \" if field.name is None:\\n\"\n" - ".ascii \" name = ''\\n\"\n" - ".ascii \" val = self.val[field]\\n\"\n" + ".ascii \" yield ('', format_nested(self.val[field]))\\n\"\n" + ".ascii \" elif field.name == 'nTableMask':\\n\"\n" + ".ascii \" yield (field.name, \\\"0x%x\\\" % self.val[field.name])\\n\"\n" ".ascii \" else:\\n\"\n" - ".ascii \" name = field.name\\n\"\n" - ".ascii \" val = self.val[field.name]\\n\"\n" - ".ascii \" yield (name, format_nested(val))\\n\"\n" + ".ascii \" yield (field.name, format_nested(self.val[field.name]))\\n\"\n" ".ascii \"\\n\"\n" ".ascii \"pp_set.add_printer('zend_array', '^_zend_array$', ZendArrayPrettyPrinter)\\n\"\n" ".ascii \"\\n\"\n" diff --git a/scripts/gdb/php_gdb.py b/scripts/gdb/php_gdb.py index 00467409c625e..1c5da0154aecd 100644 --- a/scripts/gdb/php_gdb.py +++ b/scripts/gdb/php_gdb.py @@ -83,12 +83,11 @@ def to_string(self): def children(self): for field in self.val.type.fields(): if field.name is None: - name = '' - val = self.val[field] + yield ('', format_nested(self.val[field])) + elif field.name == 'nTableMask': + yield (field.name, "0x%x" % self.val[field.name]) else: - name = field.name - val = self.val[field.name] - yield (name, format_nested(val)) + yield (field.name, format_nested(self.val[field.name])) pp_set.add_printer('zend_array', '^_zend_array$', ZendArrayPrettyPrinter)