Lines Matching refs:cds
161 ctf_diff_typedef(ctf_diff_t *cds, ctf_file_t *ifp, ctf_id_t iid, in ctf_diff_typedef() argument
181 return (ctf_diff_type(cds, ifp, iref, ofp, oref)); in ctf_diff_typedef()
188 ctf_diff_qualifier(ctf_diff_t *cds, ctf_file_t *ifp, ctf_id_t iid, in ctf_diff_qualifier() argument
201 return (ctf_diff_type(cds, ifp, iref, ofp, oref)); in ctf_diff_qualifier()
209 ctf_diff_array(ctf_diff_t *cds, ctf_file_t *ifp, ctf_id_t iid, ctf_file_t *ofp, in ctf_diff_array() argument
221 ret = ctf_diff_type(cds, ifp, iar.ctr_contents, ofp, oar.ctr_contents); in ctf_diff_array()
234 if ((cds->cds_flags & CTF_DIFF_F_IGNORE_INTNAMES) == 0) { in ctf_diff_array()
235 ret = ctf_diff_type(cds, ifp, iar.ctr_index, ofp, in ctf_diff_array()
253 ctf_diff_fptr(ctf_diff_t *cds, ctf_file_t *ifp, ctf_id_t iid, ctf_file_t *ofp, in ctf_diff_fptr() argument
272 ret = ctf_diff_type(cds, ifp, ifunc.ctc_return, ofp, ofunc.ctc_return); in ctf_diff_fptr()
298 ret = ctf_diff_type(cds, ifp, iids[i], ofp, oids[i]); in ctf_diff_fptr()
316 ctf_diff_struct(ctf_diff_t *cds, ctf_file_t *ifp, ctf_id_t iid, ctf_file_t *ofp, in ctf_diff_struct() argument
369 cdg->cdg_next = cds->cds_guess; in ctf_diff_struct()
370 cds->cds_guess = cdg; in ctf_diff_struct()
371 cds->cds_forward[TINDEX(iid)] = oid; in ctf_diff_struct()
372 cds->cds_reverse[TINDEX(oid)] = iid; in ctf_diff_struct()
406 ret = ctf_diff_type(cds, ifp, itype, ofp, otype); in ctf_diff_struct()
508 ctf_diff_union(ctf_diff_t *cds, ctf_file_t *ifp, ctf_id_t iid, ctf_file_t *ofp, in ctf_diff_union() argument
532 cdg->cdg_next = cds->cds_guess; in ctf_diff_union()
533 cds->cds_guess = cdg; in ctf_diff_union()
534 cds->cds_forward[TINDEX(iid)] = oid; in ctf_diff_union()
535 cds->cds_reverse[TINDEX(oid)] = iid; in ctf_diff_union()
537 cduf.cduf_cds = cds; in ctf_diff_union()
617 ctf_diff_type(ctf_diff_t *cds, ctf_file_t *ifp, ctf_id_t iid, ctf_file_t *ofp, in ctf_diff_type() argument
631 if (cds->cds_forward[TINDEX(iid)] == oid) in ctf_diff_type()
633 if (cds->cds_forward[TINDEX(iid)] != 0) in ctf_diff_type()
635 if (cds->cds_reverse[TINDEX(oid)] == iid) in ctf_diff_type()
637 if ((cds->cds_flags & CTF_DIFF_F_IGNORE_INTNAMES) == 0 && in ctf_diff_type()
638 cds->cds_reverse[TINDEX(oid)] != 0) in ctf_diff_type()
651 (cds->cds_flags & CTF_DIFF_F_IGNORE_INTNAMES) == 0) in ctf_diff_type()
664 ret = ctf_diff_array(cds, ifp, iid, ofp, oid); in ctf_diff_type()
667 ret = ctf_diff_fptr(cds, ifp, iid, ofp, oid); in ctf_diff_type()
670 ret = ctf_diff_struct(cds, ifp, iid, ofp, oid); in ctf_diff_type()
673 ret = ctf_diff_union(cds, ifp, iid, ofp, oid); in ctf_diff_type()
682 ret = ctf_diff_typedef(cds, ifp, iid, ofp, oid); in ctf_diff_type()
688 ret = ctf_diff_qualifier(cds, ifp, iid, ofp, oid); in ctf_diff_type()
713 ctf_diff_pass1(ctf_diff_t *cds, boolean_t self) in ctf_diff_pass1() argument
719 iend = cds->cds_ifp->ctf_typemax; in ctf_diff_pass1()
720 if (cds->cds_ifp->ctf_flags & LCTF_CHILD) { in ctf_diff_pass1()
726 jend = cds->cds_ofp->ctf_typemax; in ctf_diff_pass1()
727 if (cds->cds_ofp->ctf_flags & LCTF_CHILD) { in ctf_diff_pass1()
748 ASSERT(cds->cds_guess == NULL); in ctf_diff_pass1()
749 diff = ctf_diff_type(cds, cds->cds_ifp, i, in ctf_diff_pass1()
750 cds->cds_ofp, j); in ctf_diff_pass1()
755 cdg = cds->cds_guess; in ctf_diff_pass1()
756 cds->cds_guess = NULL; in ctf_diff_pass1()
759 cds->cds_forward[TINDEX(cdg->cdg_iid)] = in ctf_diff_pass1()
761 cds->cds_reverse[TINDEX(cdg->cdg_oid)] = in ctf_diff_pass1()
771 cds->cds_forward[TINDEX(i)] = j; in ctf_diff_pass1()
772 if (cds->cds_reverse[TINDEX(j)] == 0) in ctf_diff_pass1()
773 cds->cds_reverse[TINDEX(j)] = i; in ctf_diff_pass1()
780 cds->cds_forward[TINDEX(i)] = CTF_ERR; in ctf_diff_pass1()
781 cds->cds_func(cds->cds_ifp, i, B_FALSE, NULL, CTF_ERR, in ctf_diff_pass1()
782 cds->cds_arg); in ctf_diff_pass1()
784 cds->cds_func(cds->cds_ifp, i, B_TRUE, cds->cds_ofp, j, in ctf_diff_pass1()
785 cds->cds_arg); in ctf_diff_pass1()
797 ctf_diff_pass2(ctf_diff_t *cds) in ctf_diff_pass2() argument
802 end = cds->cds_ofp->ctf_typemax; in ctf_diff_pass2()
803 if (cds->cds_ofp->ctf_flags & LCTF_CHILD) { in ctf_diff_pass2()
809 if (cds->cds_reverse[TINDEX(i)] != 0) in ctf_diff_pass2()
811 cds->cds_func(cds->cds_ofp, i, B_FALSE, NULL, CTF_ERR, in ctf_diff_pass2()
812 cds->cds_arg); in ctf_diff_pass2()
821 ctf_diff_t *cds; in ctf_diff_init() local
824 cds = ctf_alloc(sizeof (ctf_diff_t)); in ctf_diff_init()
825 if (cds == NULL) in ctf_diff_init()
828 bzero(cds, sizeof (ctf_diff_t)); in ctf_diff_init()
829 cds->cds_ifp = ifp; in ctf_diff_init()
830 cds->cds_ofp = ofp; in ctf_diff_init()
839 cds->cds_forward = ctf_alloc(fsize); in ctf_diff_init()
840 if (cds->cds_forward == NULL) { in ctf_diff_init()
841 ctf_free(cds, sizeof (ctf_diff_t)); in ctf_diff_init()
844 cds->cds_fsize = fsize; in ctf_diff_init()
845 cds->cds_reverse = ctf_alloc(rsize); in ctf_diff_init()
846 if (cds->cds_reverse == NULL) { in ctf_diff_init()
847 ctf_free(cds->cds_forward, fsize); in ctf_diff_init()
848 ctf_free(cds, sizeof (ctf_diff_t)); in ctf_diff_init()
851 cds->cds_rsize = rsize; in ctf_diff_init()
852 bzero(cds->cds_forward, fsize); in ctf_diff_init()
853 bzero(cds->cds_reverse, rsize); in ctf_diff_init()
855 cds->cds_ifp->ctf_refcnt++; in ctf_diff_init()
856 cds->cds_ofp->ctf_refcnt++; in ctf_diff_init()
857 *cdsp = cds; in ctf_diff_init()
862 ctf_diff_types(ctf_diff_t *cds, ctf_diff_type_f cb, void *arg) in ctf_diff_types() argument
866 cds->cds_func = cb; in ctf_diff_types()
867 cds->cds_arg = arg; in ctf_diff_types()
869 ret = ctf_diff_pass1(cds, B_FALSE); in ctf_diff_types()
871 ret = ctf_diff_pass2(cds); in ctf_diff_types()
873 cds->cds_func = NULL; in ctf_diff_types()
874 cds->cds_arg = NULL; in ctf_diff_types()
875 cds->cds_tvalid = B_TRUE; in ctf_diff_types()
888 ctf_diff_self(ctf_diff_t *cds, ctf_diff_type_f cb, void *arg) in ctf_diff_self() argument
890 if (cds->cds_ifp != cds->cds_ofp) in ctf_diff_self()
893 cds->cds_func = cb; in ctf_diff_self()
894 cds->cds_arg = arg; in ctf_diff_self()
896 return (ctf_diff_pass1(cds, B_TRUE)); in ctf_diff_self()
901 ctf_diff_fini(ctf_diff_t *cds) in ctf_diff_fini() argument
906 if (cds == NULL) in ctf_diff_fini()
909 cds->cds_ifp->ctf_refcnt--; in ctf_diff_fini()
910 cds->cds_ofp->ctf_refcnt--; in ctf_diff_fini()
912 fsize = sizeof (ctf_id_t) * cds->cds_ifp->ctf_typemax; in ctf_diff_fini()
913 rsize = sizeof (ctf_id_t) * cds->cds_ofp->ctf_typemax; in ctf_diff_fini()
914 if (cds->cds_ifp->ctf_flags & LCTF_CHILD) in ctf_diff_fini()
916 if (cds->cds_ofp->ctf_flags & LCTF_CHILD) in ctf_diff_fini()
919 if (cds->cds_ifuncs != NULL) in ctf_diff_fini()
920 ctf_free(cds->cds_ifuncs, in ctf_diff_fini()
921 sizeof (ctf_diff_func_t) * cds->cds_nifuncs); in ctf_diff_fini()
922 if (cds->cds_ofuncs != NULL) in ctf_diff_fini()
923 ctf_free(cds->cds_ofuncs, in ctf_diff_fini()
924 sizeof (ctf_diff_func_t) * cds->cds_nofuncs); in ctf_diff_fini()
925 if (cds->cds_iobj != NULL) in ctf_diff_fini()
926 ctf_free(cds->cds_iobj, in ctf_diff_fini()
927 sizeof (ctf_diff_obj_t) * cds->cds_niobj); in ctf_diff_fini()
928 if (cds->cds_oobj != NULL) in ctf_diff_fini()
929 ctf_free(cds->cds_oobj, in ctf_diff_fini()
930 sizeof (ctf_diff_obj_t) * cds->cds_noobj); in ctf_diff_fini()
931 cdg = cds->cds_guess; in ctf_diff_fini()
937 if (cds->cds_forward != NULL) in ctf_diff_fini()
938 ctf_free(cds->cds_forward, cds->cds_fsize); in ctf_diff_fini()
939 if (cds->cds_reverse != NULL) in ctf_diff_fini()
940 ctf_free(cds->cds_reverse, cds->cds_rsize); in ctf_diff_fini()
941 ctf_free(cds, sizeof (ctf_diff_t)); in ctf_diff_fini()
945 ctf_diff_getflags(ctf_diff_t *cds) in ctf_diff_getflags() argument
947 return (cds->cds_flags); in ctf_diff_getflags()
951 ctf_diff_setflags(ctf_diff_t *cds, uint_t flags) in ctf_diff_setflags() argument
954 return (ctf_set_errno(cds->cds_ifp, EINVAL)); in ctf_diff_setflags()
956 cds->cds_flags = flags; in ctf_diff_setflags()
961 ctf_diff_symid(ctf_diff_t *cds, ctf_id_t iid, ctf_id_t oid) in ctf_diff_symid() argument
965 ifp = cds->cds_ifp; in ctf_diff_symid()
966 ofp = cds->cds_ofp; in ctf_diff_symid()
977 if (cds->cds_forward[TINDEX(iid)] != oid) in ctf_diff_symid()
982 return (ctf_diff_type(cds, ifp, iid, ofp, oid)); in ctf_diff_symid()
1010 ctf_diff_t *cds = arg; in ctf_diff_func_fill_cb() local
1012 if (cds->cds_ffillip == B_TRUE) { in ctf_diff_func_fill_cb()
1013 max = cds->cds_nifuncs; in ctf_diff_func_fill_cb()
1014 next = &cds->cds_nextifunc; in ctf_diff_func_fill_cb()
1015 funcptr = cds->cds_ifuncs + *next; in ctf_diff_func_fill_cb()
1017 max = cds->cds_nofuncs; in ctf_diff_func_fill_cb()
1018 next = &cds->cds_nextofunc; in ctf_diff_func_fill_cb()
1019 funcptr = cds->cds_ofuncs + *next; in ctf_diff_func_fill_cb()
1033 ctf_diff_func_fill(ctf_diff_t *cds) in ctf_diff_func_fill() argument
1046 ret = ctf_function_iter(cds->cds_ifp, ctf_diff_func_count, &ifcount); in ctf_diff_func_fill()
1049 ret = ctf_function_iter(cds->cds_ofp, ctf_diff_func_count, &ofcount); in ctf_diff_func_fill()
1053 cds->cds_ifuncs = ctf_alloc(sizeof (ctf_diff_func_t) * ifcount); in ctf_diff_func_fill()
1054 if (cds->cds_ifuncs == NULL) in ctf_diff_func_fill()
1055 return (ctf_set_errno(cds->cds_ifp, ENOMEM)); in ctf_diff_func_fill()
1057 cds->cds_nifuncs = ifcount; in ctf_diff_func_fill()
1058 cds->cds_nextifunc = 0; in ctf_diff_func_fill()
1060 cds->cds_ofuncs = ctf_alloc(sizeof (ctf_diff_func_t) * ofcount); in ctf_diff_func_fill()
1061 if (cds->cds_ofuncs == NULL) in ctf_diff_func_fill()
1062 return (ctf_set_errno(cds->cds_ifp, ENOMEM)); in ctf_diff_func_fill()
1064 cds->cds_nofuncs = ofcount; in ctf_diff_func_fill()
1065 cds->cds_nextofunc = 0; in ctf_diff_func_fill()
1067 cds->cds_ffillip = B_TRUE; in ctf_diff_func_fill()
1068 if ((ret = ctf_function_iter(cds->cds_ifp, ctf_diff_func_fill_cb, in ctf_diff_func_fill()
1069 cds)) != 0) in ctf_diff_func_fill()
1072 cds->cds_ffillip = B_FALSE; in ctf_diff_func_fill()
1073 if ((ret = ctf_function_iter(cds->cds_ofp, ctf_diff_func_fill_cb, in ctf_diff_func_fill()
1074 cds)) != 0) in ctf_diff_func_fill()
1082 for (i = 0; i < cds->cds_nifuncs; i++) { in ctf_diff_func_fill()
1083 for (j = 0; j < cds->cds_nofuncs; j++) { in ctf_diff_func_fill()
1088 ifd = &cds->cds_ifuncs[i]; in ctf_diff_func_fill()
1089 ofd = &cds->cds_ofuncs[j]; in ctf_diff_func_fill()
1093 ret = ctf_func_info(cds->cds_ifp, ifd->cdf_symidx, in ctf_diff_func_fill()
1097 ret = ctf_func_info(cds->cds_ofp, ofd->cdf_symidx, in ctf_diff_func_fill()
1100 ret = ctf_set_errno(cds->cds_ifp, in ctf_diff_func_fill()
1101 ctf_errno(cds->cds_ofp)); in ctf_diff_func_fill()
1110 if (ctf_diff_symid(cds, ifip.ctc_return, in ctf_diff_func_fill()
1125 ret = ctf_set_errno(cds->cds_ifp, in ctf_diff_func_fill()
1131 ret = ctf_set_errno(cds->cds_ifp, in ctf_diff_func_fill()
1137 if ((ret = ctf_func_args(cds->cds_ifp, ifd->cdf_symidx, in ctf_diff_func_fill()
1140 if ((ret = ctf_func_args(cds->cds_ofp, ofd->cdf_symidx, in ctf_diff_func_fill()
1146 if (ctf_diff_symid(cds, iids[cti], oids[cti])) { in ctf_diff_func_fill()
1179 ctf_diff_functions(ctf_diff_t *cds, ctf_diff_func_f cb, void *arg) in ctf_diff_functions() argument
1184 if (cds->cds_tvalid == B_FALSE) { in ctf_diff_functions()
1185 if ((ret = ctf_diff_types(cds, ctf_diff_void_cb, NULL)) != 0) in ctf_diff_functions()
1189 if (cds->cds_fvalid == B_FALSE) { in ctf_diff_functions()
1190 if ((ret = ctf_diff_func_fill(cds)) != 0) in ctf_diff_functions()
1192 cds->cds_fvalid = B_TRUE; in ctf_diff_functions()
1195 for (i = 0; i < cds->cds_nifuncs; i++) { in ctf_diff_functions()
1196 if (cds->cds_ifuncs[i].cdf_matchidx == ULONG_MAX) { in ctf_diff_functions()
1197 cb(cds->cds_ifp, cds->cds_ifuncs[i].cdf_symidx, in ctf_diff_functions()
1200 ulong_t idx = cds->cds_ifuncs[i].cdf_matchidx; in ctf_diff_functions()
1201 cb(cds->cds_ifp, cds->cds_ifuncs[i].cdf_symidx, B_TRUE, in ctf_diff_functions()
1202 cds->cds_ofp, cds->cds_ofuncs[idx].cdf_symidx, arg); in ctf_diff_functions()
1206 for (i = 0; i < cds->cds_nofuncs; i++) { in ctf_diff_functions()
1207 if (cds->cds_ofuncs[i].cdf_matchidx != ULONG_MAX) in ctf_diff_functions()
1209 cb(cds->cds_ofp, cds->cds_ofuncs[i].cdf_symidx, B_FALSE, in ctf_diff_functions()
1221 ctf_diff_t *cds = arg; in ctf_diff_obj_fill_cb() local
1223 if (cds->cds_ofillip == B_TRUE) { in ctf_diff_obj_fill_cb()
1224 max = cds->cds_niobj; in ctf_diff_obj_fill_cb()
1225 next = &cds->cds_nextiobj; in ctf_diff_obj_fill_cb()
1226 objptr = cds->cds_iobj + *next; in ctf_diff_obj_fill_cb()
1228 max = cds->cds_noobj; in ctf_diff_obj_fill_cb()
1229 next = &cds->cds_nextoobj; in ctf_diff_obj_fill_cb()
1230 objptr = cds->cds_oobj+ *next; in ctf_diff_obj_fill_cb()
1257 ctf_diff_obj_fill(ctf_diff_t *cds) in ctf_diff_obj_fill() argument
1266 ret = ctf_object_iter(cds->cds_ifp, ctf_diff_obj_count, &iocount); in ctf_diff_obj_fill()
1270 ret = ctf_object_iter(cds->cds_ofp, ctf_diff_obj_count, &oocount); in ctf_diff_obj_fill()
1274 cds->cds_iobj = ctf_alloc(sizeof (ctf_diff_obj_t) * iocount); in ctf_diff_obj_fill()
1275 if (cds->cds_iobj == NULL) in ctf_diff_obj_fill()
1276 return (ctf_set_errno(cds->cds_ifp, ENOMEM)); in ctf_diff_obj_fill()
1277 cds->cds_niobj = iocount; in ctf_diff_obj_fill()
1278 cds->cds_nextiobj = 0; in ctf_diff_obj_fill()
1280 cds->cds_oobj = ctf_alloc(sizeof (ctf_diff_obj_t) * oocount); in ctf_diff_obj_fill()
1281 if (cds->cds_oobj == NULL) in ctf_diff_obj_fill()
1282 return (ctf_set_errno(cds->cds_ifp, ENOMEM)); in ctf_diff_obj_fill()
1283 cds->cds_noobj = oocount; in ctf_diff_obj_fill()
1284 cds->cds_nextoobj = 0; in ctf_diff_obj_fill()
1286 cds->cds_ofillip = B_TRUE; in ctf_diff_obj_fill()
1287 if ((ret = ctf_object_iter(cds->cds_ifp, ctf_diff_obj_fill_cb, in ctf_diff_obj_fill()
1288 cds)) != 0) in ctf_diff_obj_fill()
1291 cds->cds_ofillip = B_FALSE; in ctf_diff_obj_fill()
1292 if ((ret = ctf_object_iter(cds->cds_ofp, ctf_diff_obj_fill_cb, in ctf_diff_obj_fill()
1293 cds)) != 0) in ctf_diff_obj_fill()
1296 for (i = 0; i < cds->cds_niobj; i++) { in ctf_diff_obj_fill()
1297 for (j = 0; j < cds->cds_noobj; j++) { in ctf_diff_obj_fill()
1300 id = &cds->cds_iobj[i]; in ctf_diff_obj_fill()
1301 od = &cds->cds_oobj[j]; in ctf_diff_obj_fill()
1308 if (ctf_diff_symid(cds, id->cdo_id, od->cdo_id)) { in ctf_diff_obj_fill()
1322 ctf_diff_objects(ctf_diff_t *cds, ctf_diff_obj_f cb, void *arg) in ctf_diff_objects() argument
1327 if (cds->cds_tvalid == B_FALSE) { in ctf_diff_objects()
1328 if ((ret = ctf_diff_types(cds, ctf_diff_void_cb, NULL)) != 0) in ctf_diff_objects()
1332 if (cds->cds_ovalid == B_FALSE) { in ctf_diff_objects()
1333 if ((ret = ctf_diff_obj_fill(cds)) != 0) in ctf_diff_objects()
1335 cds->cds_ovalid = B_TRUE; in ctf_diff_objects()
1338 for (i = 0; i < cds->cds_niobj; i++) { in ctf_diff_objects()
1339 ctf_diff_obj_t *o = &cds->cds_iobj[i]; in ctf_diff_objects()
1341 if (cds->cds_iobj[i].cdo_matchidx == ULONG_MAX) { in ctf_diff_objects()
1342 cb(cds->cds_ifp, o->cdo_symidx, o->cdo_id, B_FALSE, in ctf_diff_objects()
1345 ctf_diff_obj_t *alt = &cds->cds_oobj[o->cdo_matchidx]; in ctf_diff_objects()
1346 cb(cds->cds_ifp, o->cdo_symidx, o->cdo_id, B_TRUE, in ctf_diff_objects()
1347 cds->cds_ofp, alt->cdo_symidx, alt->cdo_id, arg); in ctf_diff_objects()
1351 for (i = 0; i < cds->cds_noobj; i++) { in ctf_diff_objects()
1352 ctf_diff_obj_t *o = &cds->cds_oobj[i]; in ctf_diff_objects()
1355 cb(cds->cds_ofp, o->cdo_symidx, o->cdo_id, B_FALSE, NULL, in ctf_diff_objects()