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;