* [committed] Dump more information with --devel-dump-dies
@ 2019-01-01 0:00 Tom de Vries
0 siblings, 0 replies; only message in thread
From: Tom de Vries @ 2019-01-01 0:00 UTC (permalink / raw)
To: dwz, jakub
Hi,
For --devel-dump-dies, additionally dump the tag (without the DW_TAG_ prefix
for brevity) as well as the DW_AT_type attribute of a DIE:
...
- 88 O b500801d ccbaf67d
+ 88 O b500801d ccbaf67d pointer_type (type: 8e char base_type)
...
Committed to trunk.
Thanks,
- Tom
Dump more information with --devel-dump-dies
2019-11-30 Tom de Vries <tdevries@suse.de>
* dwz.c (dump_type): New function.
(dump_die_with_indent): Print tag and type.
---
dwz.c | 37 +++++++++++++++++++++++++++++++++++--
1 file changed, 35 insertions(+), 2 deletions(-)
diff --git a/dwz.c b/dwz.c
index f7b2cae..d417c94 100644
--- a/dwz.c
+++ b/dwz.c
@@ -4128,15 +4128,48 @@ find_dups_fi (dw_die_ref parent)
return 0;
}
+/* Dump type of DIE to stderr. */
+static void
+dump_type (dw_die_ref die)
+{
+ bool present;
+ enum dwarf_form form;
+ unsigned int value = get_AT_int (die, DW_AT_type, &present, &form);
+ if (!present)
+ return;
+
+ dw_cu_ref cu = die_cu (die);
+ if (cu == NULL)
+ return;
+
+ dw_die_ref ref;
+ if (form != DW_FORM_ref_addr)
+ value = cu->cu_offset + value;
+ fprintf (stderr, " (type: %x", value);
+ ref = off_htab_lookup (cu, value);
+ if (ref != NULL)
+ {
+ const char *type_name = get_AT_string (ref, DW_AT_name);
+ if (type_name)
+ fprintf (stderr, " %s", type_name);
+ }
+ fprintf (stderr, " %s", get_DW_TAG_name (ref->die_tag) + 7);
+ dump_type (ref);
+ fprintf (stderr, ")");
+}
+
/* Dump DIE to stderr with INDENT. */
static void
dump_die_with_indent (int indent, dw_die_ref die)
{
const char *name = get_AT_string (die, DW_AT_name);
- fprintf (stderr, "%*s %x %c %x %x %s\n", indent, "", die->die_offset,
+ fprintf (stderr, "%*s %x %c %x %x %s %s", indent, "", die->die_offset,
die->die_ck_state == CK_KNOWN ? 'O' : 'X',
(unsigned) die->u.p1.die_hash,
- (unsigned) die->u.p1.die_ref_hash, name ? name : "");
+ (unsigned) die->u.p1.die_ref_hash, name ? name : "",
+ get_DW_TAG_name (die->die_tag) + 7);
+ dump_type (die);
+ fprintf (stderr, "\n");
}
/* Dump DIE tree at tree depth DEPTH. */
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2019-12-01 9:08 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-01-01 0:00 [committed] Dump more information with --devel-dump-dies Tom de Vries
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).