Print this page
12259 CTF shouldn't assume enum size
*** 8,18 ****
* source. A copy of the CDDL is also available via the Internet at
* http://www.illumos.org/license/CDDL.
*/
/*
! * Copyright 2019, Joyent, Inc.
*/
/*
* To perform a merge of two CTF containers, we first diff the two containers
* types. For every type that's in the src container, but not in the dst
--- 8,18 ----
* source. A copy of the CDDL is also available via the Internet at
* http://www.illumos.org/license/CDDL.
*/
/*
! * Copyright 2020 Joyent, Inc.
*/
/*
* To perform a merge of two CTF containers, we first diff the two containers
* types. For every type that's in the src container, but not in the dst
*** 338,356 ****
int flags;
const ctf_type_t *tp;
const char *name;
ctf_id_t enumid;
ctf_merge_enum_t cme;
tp = LCTF_INDEX_TO_TYPEPTR(cmp->cm_src, id);
- name = ctf_strraw(cmp->cm_src, tp->ctt_name);
if (CTF_INFO_ISROOT(tp->ctt_info) != 0)
flags = CTF_ADD_ROOT;
else
flags = CTF_ADD_NONROOT;
! enumid = ctf_add_enum(cmp->cm_out, flags, name);
if (enumid == CTF_ERR)
return (enumid);
cme.cme_fp = cmp->cm_out;
cme.cme_id = enumid;
--- 338,359 ----
int flags;
const ctf_type_t *tp;
const char *name;
ctf_id_t enumid;
ctf_merge_enum_t cme;
+ size_t size;
tp = LCTF_INDEX_TO_TYPEPTR(cmp->cm_src, id);
if (CTF_INFO_ISROOT(tp->ctt_info) != 0)
flags = CTF_ADD_ROOT;
else
flags = CTF_ADD_NONROOT;
! name = ctf_strraw(cmp->cm_src, tp->ctt_name);
! size = ctf_get_ctt_size(cmp->cm_src, tp, NULL, NULL);
!
! enumid = ctf_add_enum(cmp->cm_out, flags, name, size);
if (enumid == CTF_ERR)
return (enumid);
cme.cme_fp = cmp->cm_out;
cme.cme_id = enumid;