Lines Matching defs:cds

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