libctf, types: allow ctf_type_reference of dynamic slices
One spot was missed when we rejigged ctf_update into ctf_serialize and allowed all operations on dynamic containers: ctf_type_reference of slices. A dynamic slice's vlen state is stored in the dtu_slice member, so fetch it from there. libctf/ * ctf-types.c (ctf_type_reference): Add support for dynamic slices.
This commit is contained in:
parent
9943fa3a73
commit
437061996d
2 changed files with 16 additions and 3 deletions
|
@ -680,10 +680,19 @@ ctf_type_reference (ctf_file_t *fp, ctf_id_t type)
|
|||
/* Slices store their type in an unusual place. */
|
||||
case CTF_K_SLICE:
|
||||
{
|
||||
ctf_dtdef_t *dtd;
|
||||
const ctf_slice_t *sp;
|
||||
ssize_t increment;
|
||||
(void) ctf_get_ctt_size (fp, tp, NULL, &increment);
|
||||
sp = (const ctf_slice_t *) ((uintptr_t) tp + increment);
|
||||
|
||||
if ((dtd = ctf_dynamic_type (ofp, type)) == NULL)
|
||||
{
|
||||
ssize_t increment;
|
||||
|
||||
(void) ctf_get_ctt_size (fp, tp, NULL, &increment);
|
||||
sp = (const ctf_slice_t *) ((uintptr_t) tp + increment);
|
||||
}
|
||||
else
|
||||
sp = &dtd->dtd_u.dtu_slice;
|
||||
|
||||
return sp->cts_type;
|
||||
}
|
||||
default:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue