Lines Matching refs:cmp

111 ctf_merge_gettype(ctf_merge_types_t *cmp, ctf_id_t id)  in ctf_merge_gettype()  argument
113 if (cmp->cm_dedup == B_FALSE) { in ctf_merge_gettype()
114 VERIFY(cmp->cm_tmap[id].cmt_map != 0); in ctf_merge_gettype()
115 return (cmp->cm_tmap[id].cmt_map); in ctf_merge_gettype()
118 while (cmp->cm_tmap[id].cmt_missing == B_FALSE) { in ctf_merge_gettype()
119 VERIFY(cmp->cm_tmap[id].cmt_map != 0); in ctf_merge_gettype()
120 id = cmp->cm_tmap[id].cmt_map; in ctf_merge_gettype()
122 VERIFY(cmp->cm_tmap[id].cmt_map != 0); in ctf_merge_gettype()
123 return (cmp->cm_tmap[id].cmt_map); in ctf_merge_gettype()
130 ctf_merge_types_t *cmp = arg; in ctf_merge_diffcb() local
131 ctf_merge_tinfo_t *cmt = cmp->cm_tmap; in ctf_merge_diffcb()
150 if (cmp->cm_unique == B_TRUE) { in ctf_merge_diffcb()
171 } else if (ifp == cmp->cm_src) { in ctf_merge_diffcb()
179 ctf_merge_add_number(ctf_merge_types_t *cmp, ctf_id_t id) in ctf_merge_add_number() argument
186 if (ctf_type_encoding(cmp->cm_src, id, &en) != 0) in ctf_merge_add_number()
189 tp = LCTF_INDEX_TO_TYPEPTR(cmp->cm_src, id); in ctf_merge_add_number()
190 name = ctf_strraw(cmp->cm_src, tp->ctt_name); in ctf_merge_add_number()
196 ret = ctf_add_encoded(cmp->cm_out, flags, name, &en, in ctf_merge_add_number()
197 ctf_type_kind(cmp->cm_src, id)); in ctf_merge_add_number()
202 VERIFY(cmp->cm_tmap[id].cmt_map == 0); in ctf_merge_add_number()
203 cmp->cm_tmap[id].cmt_map = ret; in ctf_merge_add_number()
208 ctf_merge_add_array(ctf_merge_types_t *cmp, ctf_id_t id) in ctf_merge_add_array() argument
214 if (ctf_array_info(cmp->cm_src, id, &ar) == CTF_ERR) in ctf_merge_add_array()
217 tp = LCTF_INDEX_TO_TYPEPTR(cmp->cm_src, id); in ctf_merge_add_array()
223 if (cmp->cm_tmap[ar.ctr_contents].cmt_map == 0) { in ctf_merge_add_array()
224 ret = ctf_merge_add_type(cmp, ar.ctr_contents); in ctf_merge_add_array()
227 ASSERT(cmp->cm_tmap[ar.ctr_contents].cmt_map != 0); in ctf_merge_add_array()
229 ar.ctr_contents = ctf_merge_gettype(cmp, ar.ctr_contents); in ctf_merge_add_array()
231 if (cmp->cm_tmap[ar.ctr_index].cmt_map == 0) { in ctf_merge_add_array()
232 ret = ctf_merge_add_type(cmp, ar.ctr_index); in ctf_merge_add_array()
235 ASSERT(cmp->cm_tmap[ar.ctr_index].cmt_map != 0); in ctf_merge_add_array()
237 ar.ctr_index = ctf_merge_gettype(cmp, ar.ctr_index); in ctf_merge_add_array()
239 ret = ctf_add_array(cmp->cm_out, flags, &ar); in ctf_merge_add_array()
243 VERIFY(cmp->cm_tmap[id].cmt_map == 0); in ctf_merge_add_array()
244 cmp->cm_tmap[id].cmt_map = ret; in ctf_merge_add_array()
250 ctf_merge_add_reftype(ctf_merge_types_t *cmp, ctf_id_t id) in ctf_merge_add_reftype() argument
257 tp = LCTF_INDEX_TO_TYPEPTR(cmp->cm_src, id); in ctf_merge_add_reftype()
258 name = ctf_strraw(cmp->cm_src, tp->ctt_name); in ctf_merge_add_reftype()
264 reftype = ctf_type_reference(cmp->cm_src, id); in ctf_merge_add_reftype()
266 return (ctf_set_errno(cmp->cm_out, ctf_errno(cmp->cm_src))); in ctf_merge_add_reftype()
268 if (cmp->cm_tmap[reftype].cmt_map == 0) { in ctf_merge_add_reftype()
269 ret = ctf_merge_add_type(cmp, reftype); in ctf_merge_add_reftype()
272 ASSERT(cmp->cm_tmap[reftype].cmt_map != 0); in ctf_merge_add_reftype()
274 reftype = ctf_merge_gettype(cmp, reftype); in ctf_merge_add_reftype()
276 ret = ctf_add_reftype(cmp->cm_out, flags, name, reftype, in ctf_merge_add_reftype()
277 ctf_type_kind(cmp->cm_src, id)); in ctf_merge_add_reftype()
281 VERIFY(cmp->cm_tmap[id].cmt_map == 0); in ctf_merge_add_reftype()
282 cmp->cm_tmap[id].cmt_map = ret; in ctf_merge_add_reftype()
287 ctf_merge_add_typedef(ctf_merge_types_t *cmp, ctf_id_t id) in ctf_merge_add_typedef() argument
294 tp = LCTF_INDEX_TO_TYPEPTR(cmp->cm_src, id); in ctf_merge_add_typedef()
295 name = ctf_strraw(cmp->cm_src, tp->ctt_name); in ctf_merge_add_typedef()
301 reftype = ctf_type_reference(cmp->cm_src, id); in ctf_merge_add_typedef()
303 return (ctf_set_errno(cmp->cm_out, ctf_errno(cmp->cm_src))); in ctf_merge_add_typedef()
305 if (cmp->cm_tmap[reftype].cmt_map == 0) { in ctf_merge_add_typedef()
306 ret = ctf_merge_add_type(cmp, reftype); in ctf_merge_add_typedef()
309 ASSERT(cmp->cm_tmap[reftype].cmt_map != 0); in ctf_merge_add_typedef()
311 reftype = ctf_merge_gettype(cmp, reftype); in ctf_merge_add_typedef()
313 ret = ctf_add_typedef(cmp->cm_out, flags, name, reftype); in ctf_merge_add_typedef()
317 VERIFY(cmp->cm_tmap[id].cmt_map == 0); in ctf_merge_add_typedef()
318 cmp->cm_tmap[id].cmt_map = ret; in ctf_merge_add_typedef()
337 ctf_merge_add_enum(ctf_merge_types_t *cmp, ctf_id_t id) in ctf_merge_add_enum() argument
346 tp = LCTF_INDEX_TO_TYPEPTR(cmp->cm_src, id); in ctf_merge_add_enum()
352 name = ctf_strraw(cmp->cm_src, tp->ctt_name); in ctf_merge_add_enum()
353 size = ctf_get_ctt_size(cmp->cm_src, tp, NULL, NULL); in ctf_merge_add_enum()
355 enumid = ctf_add_enum(cmp->cm_out, flags, name, size); in ctf_merge_add_enum()
359 cme.cme_fp = cmp->cm_out; in ctf_merge_add_enum()
361 if (ctf_enum_iter(cmp->cm_src, id, ctf_merge_add_enumerator, in ctf_merge_add_enum()
365 VERIFY(cmp->cm_tmap[id].cmt_map == 0); in ctf_merge_add_enum()
366 cmp->cm_tmap[id].cmt_map = enumid; in ctf_merge_add_enum()
371 ctf_merge_add_func(ctf_merge_types_t *cmp, ctf_id_t id) in ctf_merge_add_func() argument
378 tp = LCTF_INDEX_TO_TYPEPTR(cmp->cm_src, id); in ctf_merge_add_func()
384 if (ctf_func_info_by_id(cmp->cm_src, id, &ctc) == CTF_ERR) in ctf_merge_add_func()
385 return (ctf_set_errno(cmp->cm_out, ctf_errno(cmp->cm_src))); in ctf_merge_add_func()
389 return (ctf_set_errno(cmp->cm_out, ENOMEM)); in ctf_merge_add_func()
390 if (ctf_func_args_by_id(cmp->cm_src, id, ctc.ctc_argc, argv) == in ctf_merge_add_func()
393 return (ctf_set_errno(cmp->cm_out, ctf_errno(cmp->cm_src))); in ctf_merge_add_func()
396 if (cmp->cm_tmap[ctc.ctc_return].cmt_map == 0) { in ctf_merge_add_func()
397 ret = ctf_merge_add_type(cmp, ctc.ctc_return); in ctf_merge_add_func()
400 ASSERT(cmp->cm_tmap[ctc.ctc_return].cmt_map != 0); in ctf_merge_add_func()
402 ctc.ctc_return = ctf_merge_gettype(cmp, ctc.ctc_return); in ctf_merge_add_func()
405 if (cmp->cm_tmap[argv[i]].cmt_map == 0) { in ctf_merge_add_func()
406 ret = ctf_merge_add_type(cmp, argv[i]); in ctf_merge_add_func()
409 ASSERT(cmp->cm_tmap[argv[i]].cmt_map != 0); in ctf_merge_add_func()
411 argv[i] = ctf_merge_gettype(cmp, argv[i]); in ctf_merge_add_func()
414 ret = ctf_add_funcptr(cmp->cm_out, flags, &ctc, argv); in ctf_merge_add_func()
419 VERIFY(cmp->cm_tmap[id].cmt_map == 0); in ctf_merge_add_func()
420 cmp->cm_tmap[id].cmt_map = ret; in ctf_merge_add_func()
425 ctf_merge_add_forward(ctf_merge_types_t *cmp, ctf_id_t id, uint_t kind) in ctf_merge_add_forward() argument
431 tp = LCTF_INDEX_TO_TYPEPTR(cmp->cm_src, id); in ctf_merge_add_forward()
432 name = ctf_strraw(cmp->cm_src, tp->ctt_name); in ctf_merge_add_forward()
438 ret = ctf_add_forward(cmp->cm_out, flags, name, kind); in ctf_merge_add_forward()
442 VERIFY(cmp->cm_tmap[id].cmt_map == 0); in ctf_merge_add_forward()
443 cmp->cm_tmap[id].cmt_map = ret; in ctf_merge_add_forward()
471 ctf_merge_add_sou(ctf_merge_types_t *cmp, ctf_id_t id, boolean_t forward) in ctf_merge_add_sou() argument
478 tp = LCTF_INDEX_TO_TYPEPTR(cmp->cm_src, id); in ctf_merge_add_sou()
479 name = ctf_strraw(cmp->cm_src, tp->ctt_name); in ctf_merge_add_sou()
484 kind = ctf_type_kind(cmp->cm_src, id); in ctf_merge_add_sou()
487 suid = ctf_add_struct(cmp->cm_out, flags, name); in ctf_merge_add_sou()
489 suid = ctf_add_union(cmp->cm_out, flags, name); in ctf_merge_add_sou()
497 VERIFY(cmp->cm_tmap[id].cmt_map == 0); in ctf_merge_add_sou()
498 cmp->cm_tmap[id].cmt_map = suid; in ctf_merge_add_sou()
504 if (cmp->cm_tmap[id].cmt_map != suid) { in ctf_merge_add_sou()
507 name, kind, id, suid, cmp->cm_tmap[id].cmt_map); in ctf_merge_add_sou()
509 &cmp->cm_src->ctf_structs, cmp->cm_src); in ctf_merge_add_sou()
511 &cmp->cm_src->ctf_unions, cmp->cm_src); in ctf_merge_add_sou()
513 &cmp->cm_out->ctf_structs, cmp->cm_out); in ctf_merge_add_sou()
515 &cmp->cm_out->ctf_unions, cmp->cm_out); in ctf_merge_add_sou()
517 VERIFY(cmp->cm_tmap[id].cmt_map == suid); in ctf_merge_add_sou()
519 cmp->cm_tmap[id].cmt_fixup = B_TRUE; in ctf_merge_add_sou()
525 ctf_merge_add_type(ctf_merge_types_t *cmp, ctf_id_t id) in ctf_merge_add_type() argument
534 if (cmp->cm_tmap[id].cmt_map != 0) in ctf_merge_add_type()
537 kind = ctf_type_kind(cmp->cm_src, id); in ctf_merge_add_type()
541 ret = ctf_merge_add_number(cmp, id); in ctf_merge_add_type()
544 ret = ctf_merge_add_array(cmp, id); in ctf_merge_add_type()
550 ret = ctf_merge_add_reftype(cmp, id); in ctf_merge_add_type()
553 ret = ctf_merge_add_typedef(cmp, id); in ctf_merge_add_type()
556 ret = ctf_merge_add_enum(cmp, id); in ctf_merge_add_type()
559 ret = ctf_merge_add_func(cmp, id); in ctf_merge_add_type()
565 tp = LCTF_INDEX_TO_TYPEPTR(cmp->cm_src, id); in ctf_merge_add_type()
579 ret = ctf_merge_add_forward(cmp, id, kind); in ctf_merge_add_type()
584 ret = ctf_merge_add_sou(cmp, id, B_FALSE); in ctf_merge_add_type()
600 ctf_merge_fixup_sou(ctf_merge_types_t *cmp, ctf_id_t id) in ctf_merge_fixup_sou() argument
607 mapid = cmp->cm_tmap[id].cmt_map; in ctf_merge_fixup_sou()
609 dtd = ctf_dtd_lookup(cmp->cm_out, mapid); in ctf_merge_fixup_sou()
613 cms.cms_cm = cmp; in ctf_merge_fixup_sou()
615 if (ctf_member_iter(cmp->cm_src, id, ctf_merge_add_member, &cms) != 0) in ctf_merge_fixup_sou()
618 if ((size = ctf_type_size(cmp->cm_src, id)) == CTF_ERR) in ctf_merge_fixup_sou()
620 if (ctf_set_size(cmp->cm_out, mapid, size) == CTF_ERR) in ctf_merge_fixup_sou()
627 ctf_merge_fixup_type(ctf_merge_types_t *cmp, ctf_id_t id) in ctf_merge_fixup_type() argument
631 kind = ctf_type_kind(cmp->cm_src, id); in ctf_merge_fixup_type()
635 ret = ctf_merge_fixup_sou(cmp, id); in ctf_merge_fixup_type()
667 ctf_merge_dedup_remap(ctf_merge_types_t *cmp) in ctf_merge_dedup_remap() argument
671 for (i = 1; i < cmp->cm_src->ctf_typemax + 1; i++) { in ctf_merge_dedup_remap()
674 if (cmp->cm_tmap[i].cmt_missing == B_TRUE) { in ctf_merge_dedup_remap()
675 VERIFY(cmp->cm_tmap[i].cmt_map != 0); in ctf_merge_dedup_remap()
680 while (cmp->cm_tmap[tid].cmt_missing == B_FALSE) { in ctf_merge_dedup_remap()
681 VERIFY(cmp->cm_tmap[tid].cmt_map != 0); in ctf_merge_dedup_remap()
682 tid = cmp->cm_tmap[tid].cmt_map; in ctf_merge_dedup_remap()
684 VERIFY(cmp->cm_tmap[tid].cmt_map != 0); in ctf_merge_dedup_remap()
685 cmp->cm_tmap[i].cmt_map = cmp->cm_tmap[tid].cmt_map; in ctf_merge_dedup_remap()
708 ctf_merge_common(ctf_merge_types_t *cmp) in ctf_merge_common() argument
712 ctf_phase_dump(cmp->cm_src, "merge-common-src", NULL); in ctf_merge_common()
713 ctf_phase_dump(cmp->cm_out, "merge-common-dest", NULL); in ctf_merge_common()
716 for (i = 1; i <= cmp->cm_src->ctf_typemax; i++) { in ctf_merge_common()
717 if (cmp->cm_tmap[i].cmt_forward == B_TRUE) { in ctf_merge_common()
719 ret = ctf_merge_add_sou(cmp, i, B_TRUE); in ctf_merge_common()
727 for (i = 1; i <= cmp->cm_src->ctf_typemax; i++) { in ctf_merge_common()
728 if (cmp->cm_tmap[i].cmt_missing == B_TRUE) { in ctf_merge_common()
729 ret = ctf_merge_add_type(cmp, i); in ctf_merge_common()
737 ret = ctf_update(cmp->cm_out); in ctf_merge_common()
741 if (cmp->cm_dedup == B_TRUE) { in ctf_merge_common()
742 ctf_merge_dedup_remap(cmp); in ctf_merge_common()
747 for (i = 1; i <= cmp->cm_src->ctf_typemax; i++) { in ctf_merge_common()
748 if (cmp->cm_tmap[i].cmt_fixup == B_TRUE) { in ctf_merge_common()
749 ret = ctf_merge_fixup_type(cmp, i); in ctf_merge_common()
765 ctf_merge_uniquify_types(ctf_merge_types_t *cmp) in ctf_merge_uniquify_types() argument
769 for (i = 1; i <= cmp->cm_src->ctf_typemax; i++) { in ctf_merge_uniquify_types()
770 if (cmp->cm_tmap[i].cmt_missing == B_FALSE) in ctf_merge_uniquify_types()
772 ret = ctf_merge_add_type(cmp, i); in ctf_merge_uniquify_types()
777 ret = ctf_update(cmp->cm_out); in ctf_merge_uniquify_types()
781 for (i = 1; i <= cmp->cm_src->ctf_typemax; i++) { in ctf_merge_uniquify_types()
782 if (cmp->cm_tmap[i].cmt_fixup == B_FALSE) in ctf_merge_uniquify_types()
784 ret = ctf_merge_fixup_type(cmp, i); in ctf_merge_uniquify_types()
793 ctf_merge_types_init(ctf_merge_types_t *cmp) in ctf_merge_types_init() argument
795 cmp->cm_tmap = ctf_alloc(sizeof (ctf_merge_tinfo_t) * in ctf_merge_types_init()
796 (cmp->cm_src->ctf_typemax + 1)); in ctf_merge_types_init()
797 if (cmp->cm_tmap == NULL) in ctf_merge_types_init()
798 return (ctf_set_errno(cmp->cm_out, ENOMEM)); in ctf_merge_types_init()
799 bzero(cmp->cm_tmap, sizeof (ctf_merge_tinfo_t) * in ctf_merge_types_init()
800 (cmp->cm_src->ctf_typemax + 1)); in ctf_merge_types_init()
805 ctf_merge_types_fini(ctf_merge_types_t *cmp) in ctf_merge_types_fini() argument
807 ctf_free(cmp->cm_tmap, sizeof (ctf_merge_tinfo_t) * in ctf_merge_types_fini()
808 (cmp->cm_src->ctf_typemax + 1)); in ctf_merge_types_fini()
816 ctf_merge_fixup_symmaps(ctf_merge_types_t *cmp, ctf_merge_input_t *cmi) in ctf_merge_fixup_symmaps() argument
824 VERIFY(cmp->cm_tmap[cmo->cmo_tid].cmt_map != 0); in ctf_merge_fixup_symmaps()
825 cmo->cmo_tid = cmp->cm_tmap[cmo->cmo_tid].cmt_map; in ctf_merge_fixup_symmaps()
832 VERIFY(cmp->cm_tmap[cmf->cmf_rtid].cmt_map != 0); in ctf_merge_fixup_symmaps()
833 cmf->cmf_rtid = cmp->cm_tmap[cmf->cmf_rtid].cmt_map; in ctf_merge_fixup_symmaps()
835 VERIFY(cmp->cm_tmap[cmf->cmf_args[i]].cmt_map != 0); in ctf_merge_fixup_symmaps()
837 cmp->cm_tmap[cmf->cmf_args[i]].cmt_map; in ctf_merge_fixup_symmaps()
1567 ctf_merge_types_t *cmp = arg; in ctf_dedup_cb() local
1568 ctf_merge_tinfo_t *cmt = cmp->cm_tmap; in ctf_dedup_cb()
1602 ctf_merge_dedup(ctf_merge_t *cmp, ctf_file_t **outp) in ctf_merge_dedup() argument
1610 if (cmp == NULL || outp == NULL) in ctf_merge_dedup()
1613 ctf_dprintf("encountered %d inputs\n", cmp->cmh_ninputs); in ctf_merge_dedup()
1614 if (cmp->cmh_ninputs != 2) in ctf_merge_dedup()
1619 cmi = list_head(&cmp->cmh_inputs); in ctf_merge_dedup()
1621 cmc = list_next(&cmp->cmh_inputs, cmi); in ctf_merge_dedup()
1659 if (cmp->cmh_msyms == B_TRUE) { in ctf_merge_dedup()
1686 ctf_merge_set_nthreads(ctf_merge_t *cmp, const uint_t nthrs) in ctf_merge_set_nthreads() argument
1690 cmp->cmh_nthreads = nthrs; in ctf_merge_set_nthreads()