diff options
author | Nick Alcock <nick.alcock@oracle.com> | 2019-07-13 20:00:07 +0100 |
---|---|---|
committer | Nick Alcock <nick.alcock@oracle.com> | 2019-10-03 17:04:55 +0100 |
commit | 0ac6231298cbc5a3a16bd4e98d85d98700b81dee (patch) | |
tree | 89040caa55c0d64d462235ef2ba45cc50b84b74d /include/ctf-api.h | |
parent | 6b88d7d70c50fc320cd693fb3ddba6e28da839aa (diff) | |
download | gdb-0ac6231298cbc5a3a16bd4e98d85d98700b81dee.zip gdb-0ac6231298cbc5a3a16bd4e98d85d98700b81dee.tar.gz gdb-0ac6231298cbc5a3a16bd4e98d85d98700b81dee.tar.bz2 |
libctf: Add iteration over non-root types
The existing function ctf_type_iter lets you iterate over root-visible
types (types you can look up by name). There is no way to iterate over
non-root-visible types, which is troublesome because both the linker
and dumper want to do that.
So add a new function that can do it: the callback it takes accepts
an extra parameter which indicates whether the type is root-visible
or not.
include/
* ctf-api.h (ctf_type_all_f): New.
(ctf_type_iter_all): New.
libctf/
* ctf_types.c (ctf_type_iter_all): New.
Diffstat (limited to 'include/ctf-api.h')
-rw-r--r-- | include/ctf-api.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/ctf-api.h b/include/ctf-api.h index 28256a3..fa74788 100644 --- a/include/ctf-api.h +++ b/include/ctf-api.h @@ -211,6 +211,7 @@ typedef int ctf_member_f (const char *name, ctf_id_t membtype, typedef int ctf_enum_f (const char *name, int val, void *arg); typedef int ctf_variable_f (const char *name, ctf_id_t type, void *arg); typedef int ctf_type_f (ctf_id_t type, void *arg); +typedef int ctf_type_all_f (ctf_id_t type, int flag, void *arg); typedef int ctf_label_f (const char *name, const ctf_lblinfo_t *info, void *arg); typedef int ctf_archive_member_f (ctf_file_t *fp, const char *name, void *arg); @@ -317,6 +318,7 @@ extern int ctf_label_info (ctf_file_t *, const char *, ctf_lblinfo_t *); extern int ctf_member_iter (ctf_file_t *, ctf_id_t, ctf_member_f *, void *); extern int ctf_enum_iter (ctf_file_t *, ctf_id_t, ctf_enum_f *, void *); extern int ctf_type_iter (ctf_file_t *, ctf_type_f *, void *); +extern int ctf_type_iter_all (ctf_file_t *, ctf_type_all_f *, void *); extern int ctf_label_iter (ctf_file_t *, ctf_label_f *, void *); extern int ctf_variable_iter (ctf_file_t *, ctf_variable_f *, void *); extern int ctf_archive_iter (const ctf_archive_t *, ctf_archive_member_f *, |