From a30b3e182aad25f94de6412efd5d78f7805fb4d3 Mon Sep 17 00:00:00 2001 From: Nick Alcock Date: Wed, 24 Apr 2019 11:41:00 +0100 Subject: libctf: debug dumping This introduces ctf_dump(), an iterator which returns a series of strings, each representing a debugging dump of one item from a given section in the CTF file. The items may be multiline: a callback is provided to allow the caller to decorate each line as they desire before the line is returned. libctf/ * ctf-dump.c: New. include/ * ctf-api.h (ctf_dump_decorate_f): New. (ctf_dump_state_t): new. (ctf_dump): New. --- include/ChangeLog | 6 ++++++ include/ctf-api.h | 7 +++++++ 2 files changed, 13 insertions(+) (limited to 'include') diff --git a/include/ChangeLog b/include/ChangeLog index 3ea7ac8..0508376 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,5 +1,11 @@ 2019-05-28 Nick Alcock + * ctf-api.h (ctf_dump_decorate_f): New. + (ctf_dump_state_t): new. + (ctf_dump): New. + +2019-05-28 Nick Alcock + * ctf-api.h (ctf_label_f): New. (ctf_label_set): New. (ctf_label_get): New. diff --git a/include/ctf-api.h b/include/ctf-api.h index c5ae38e..822b3bf 100644 --- a/include/ctf-api.h +++ b/include/ctf-api.h @@ -218,6 +218,10 @@ typedef int ctf_label_f (const char *name, const ctf_lblinfo_t *info, typedef int ctf_archive_member_f (ctf_file_t *fp, const char *name, void *arg); typedef int ctf_archive_raw_member_f (const char *name, const void *content, size_t len, void *arg); +typedef char *ctf_dump_decorate_f (ctf_sect_names_t sect, + char *line, void *arg); + +typedef struct ctf_dump_state ctf_dump_state_t; /* Opening. These mostly return an abstraction over both CTF files and CTF archives: so they can be used to open both. CTF files will appear to be an @@ -320,6 +324,9 @@ extern int ctf_archive_iter (const ctf_archive_t *, ctf_archive_member_f *, to deal with non-archives at all. */ extern int ctf_archive_raw_iter (const ctf_archive_t *, ctf_archive_raw_member_f *, void *); +extern char *ctf_dump (ctf_file_t *, ctf_dump_state_t **state, + ctf_sect_names_t sect, ctf_dump_decorate_f *, + void *arg); extern ctf_id_t ctf_add_array (ctf_file_t *, uint32_t, const ctf_arinfo_t *); -- cgit v1.1