diff options
author | Nick Alcock <nick.alcock@oracle.com> | 2021-03-18 12:37:52 +0000 |
---|---|---|
committer | Nick Alcock <nick.alcock@oracle.com> | 2021-03-18 12:40:40 +0000 |
commit | 534444b1ee161f342d303fd6549310963ce233c9 (patch) | |
tree | 40baedec204fb6417e0e412f8de81a0f4f406117 /libctf/ctf-types.c | |
parent | 7879dd88efdabc5a2e93b71f488f09303117a0a9 (diff) | |
download | gdb-534444b1ee161f342d303fd6549310963ce233c9.zip gdb-534444b1ee161f342d303fd6549310963ce233c9.tar.gz gdb-534444b1ee161f342d303fd6549310963ce233c9.tar.bz2 |
libctf: eliminate dtd_u, part 2: arrays
This is even simpler than ints, floats and slices, with the only extra
complication being the need to manually transfer the array parameter in
the rarely-used function ctf_set_array. (Arrays are unique in libctf in
that they can be modified post facto, not just created and appended to.
I'm not sure why they got this exemption, but it's easy to maintain.)
libctf/ChangeLog
2021-03-18 Nick Alcock <nick.alcock@oracle.com>
* ctf-impl.h (ctf_dtdef_t) <dtd_u.dtu_arr>: Remove.
* ctf-create.c (ctf_add_array): Use the dtd_vlen, not dtu_arr.
(ctf_set_array): Likewise.
* ctf-serialize.c (ctf_emit_type_sect): Just copy the dtd_vlen.
* ctf-types.c (ctf_array_info): Just use the vlen.
Diffstat (limited to 'libctf/ctf-types.c')
-rw-r--r-- | libctf/ctf-types.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/libctf/ctf-types.c b/libctf/ctf-types.c index ae24381..8c983d5 100644 --- a/libctf/ctf-types.c +++ b/libctf/ctf-types.c @@ -1520,14 +1520,12 @@ ctf_array_info (ctf_dict_t *fp, ctf_id_t type, ctf_arinfo_t *arp) return (ctf_set_errno (ofp, ECTF_NOTARRAY)); if ((dtd = ctf_dynamic_type (ofp, type)) != NULL) + ap = (const ctf_array_t *) dtd->dtd_vlen; + else { - *arp = dtd->dtd_u.dtu_arr; - return 0; + ctf_get_ctt_size (fp, tp, NULL, &increment); + ap = (const ctf_array_t *) ((uintptr_t) tp + increment); } - - (void) ctf_get_ctt_size (fp, tp, NULL, &increment); - - ap = (const ctf_array_t *) ((uintptr_t) tp + increment); arp->ctr_contents = ap->cta_contents; arp->ctr_index = ap->cta_index; arp->ctr_nelems = ap->cta_nelems; |