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:
parent
01d9317436
commit
9b15cbb789
@ -1,3 +1,7 @@
|
||||
2020-07-22 Nick Alcock <nick.alcock@oracle.com>
|
||||
|
||||
* ctf-api.h (ctf_type_kind_forwarded): New.
|
||||
|
||||
2020-07-22 Nick Alcock <nick.alcock@oracle.com>
|
||||
|
||||
* ctf-api.c (ctf_type_name_raw): New.
|
||||
|
@ -328,6 +328,7 @@ extern const char *ctf_type_name_raw (ctf_file_t *, ctf_id_t);
|
||||
extern ssize_t ctf_type_size (ctf_file_t *, ctf_id_t);
|
||||
extern ssize_t ctf_type_align (ctf_file_t *, ctf_id_t);
|
||||
extern int ctf_type_kind (ctf_file_t *, ctf_id_t);
|
||||
extern int ctf_type_kind_forwarded (ctf_file_t *, ctf_id_t);
|
||||
extern ctf_id_t ctf_type_reference (ctf_file_t *, ctf_id_t);
|
||||
extern ctf_id_t ctf_type_pointer (ctf_file_t *, ctf_id_t);
|
||||
extern int ctf_type_encoding (ctf_file_t *, ctf_id_t, ctf_encoding_t *);
|
||||
|
@ -1,3 +1,7 @@
|
||||
2020-07-22 Nick Alcock <nick.alcock@oracle.com>
|
||||
|
||||
* ctf-types.c (ctf_type_kind_forwarded): New.
|
||||
|
||||
2020-07-22 Nick Alcock <nick.alcock@oracle.com>
|
||||
|
||||
* ctf-types.c (ctf_type_name_raw): New.
|
||||
|
@ -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. */
|
||||
|
||||
|
@ -63,6 +63,7 @@ LIBCTF_1.0 {
|
||||
ctf_type_size;
|
||||
ctf_type_align;
|
||||
ctf_type_kind;
|
||||
ctf_type_kind_forwarded;
|
||||
ctf_type_reference;
|
||||
ctf_type_pointer;
|
||||
ctf_type_encoding;
|
||||
|
Loading…
x
Reference in New Issue
Block a user