libctf: add ctf_type_kind_forwarded

This is just like ctf_type_kind, except that forwards get the
type of the thing being pointed to rather than CTF_K_FORWARD.

include/
	* ctf-api.h (ctf_type_kind_forwarded): New.
libctf/
	* ctf-types.c (ctf_type_kind_forwarded): New.
This commit is contained in:
Nick Alcock
2020-06-02 21:09:49 +01:00
parent 01d9317436
commit 9b15cbb789
5 changed files with 30 additions and 0 deletions

View File

@ -677,6 +677,26 @@ ctf_type_kind (ctf_file_t *fp, ctf_id_t type)
return kind;
}
/* Return the kind of this type, except, for forwards, return the kind of thing
this is a forward to. */
int
ctf_type_kind_forwarded (ctf_file_t *fp, ctf_id_t type)
{
int kind;
const ctf_type_t *tp;
if ((kind = ctf_type_kind (fp, type)) < 0)
return -1; /* errno is set for us. */
if (kind != CTF_K_FORWARD)
return kind;
if ((tp = ctf_lookup_by_id (&fp, type)) == NULL)
return -1; /* errno is set for us. */
return tp->ctt_type;
}
/* If the type is one that directly references another type (such as POINTER),
then return the ID of the type to which it refers. */