Lines Matching refs:tdp

150 tdesc_add(dwarf_t *dw, tdesc_t *tdp)  in tdesc_add()  argument
152 hash_add(dw->dw_tidhash, tdp); in tdesc_add()
159 void *tdp; in tdesc_lookup() local
163 if (hash_find(dw->dw_tidhash, &tmpl, &tdp)) in tdesc_lookup()
164 return (tdp); in tdesc_lookup()
174 tdesc_size(tdesc_t *tdp) in tdesc_size() argument
177 switch (tdp->t_type) { in tdesc_size()
185 return (tdp->t_size); in tdesc_size()
194 tdp = tdp->t_tdesc; in tdesc_size()
202 tdp->t_id, tdp->t_type); in tdesc_size()
208 tdesc_bitsize(tdesc_t *tdp) in tdesc_bitsize() argument
211 switch (tdp->t_type) { in tdesc_bitsize()
213 return (tdp->t_intr->intr_nbits); in tdesc_bitsize()
221 return (tdp->t_size * NBBY); in tdesc_bitsize()
230 tdp = tdp->t_tdesc; in tdesc_bitsize()
238 tdp->t_id, tdp->t_type); in tdesc_bitsize()
244 tdesc_basetype(tdesc_t *tdp) in tdesc_basetype() argument
247 switch (tdp->t_type) { in tdesc_basetype()
252 tdp = tdp->t_tdesc; in tdesc_basetype()
257 return (tdp); in tdesc_basetype()
464 tdesc_t *tdp = xcalloc(sizeof (tdesc_t)); in die_add() local
466 tdp->t_id = off; in die_add()
468 tdesc_add(dw, tdp); in die_add()
470 return (tdp); in die_add()
477 tdesc_t *tdp; in die_lookup_pass1() local
479 if ((tdp = tdesc_lookup(dw, ref)) != NULL) in die_lookup_pass1()
480 return (tdp); in die_lookup_pass1()
565 tdesc_t *tdp; in tdesc_intr_common() local
573 tdp = xcalloc(sizeof (tdesc_t)); in tdesc_intr_common()
574 tdp->t_name = xstrdup(name); in tdesc_intr_common()
575 tdp->t_size = sz; in tdesc_intr_common()
576 tdp->t_id = tid; in tdesc_intr_common()
577 tdp->t_type = INTRINSIC; in tdesc_intr_common()
578 tdp->t_intr = intr; in tdesc_intr_common()
579 tdp->t_flags = TDESC_F_RESOLVED; in tdesc_intr_common()
581 tdesc_add(dw, tdp); in tdesc_intr_common()
583 return (tdp); in tdesc_intr_common()
712 die_array_create(dwarf_t *dw, Dwarf_Die arr, Dwarf_Off off, tdesc_t *tdp) in die_array_create() argument
724 tdesc_array_create(dw, dim, arrtdp, tdp); in die_array_create()
730 tdp->t_size = uval; in die_array_create()
737 for (dimtdp = tdp->t_ardef->ad_contents; in die_array_create()
746 tdp->t_flags |= flags; in die_array_create()
750 tdp->t_ardef->ad_nelems, tdp->t_size); in die_array_create()
755 die_array_resolve(tdesc_t *tdp, tdesc_t **tdpp __unused, void *private) in die_array_resolve() argument
760 if (tdp->t_flags & TDESC_F_RESOLVED) in die_array_resolve()
763 debug(3, "trying to resolve array %d (cont %d)\n", tdp->t_id, in die_array_resolve()
764 tdp->t_ardef->ad_contents->t_id); in die_array_resolve()
766 if ((sz = tdesc_size(tdp->t_ardef->ad_contents)) == 0 && in die_array_resolve()
767 (tdp->t_ardef->ad_contents->t_flags & TDESC_F_RESOLVED) == 0) { in die_array_resolve()
769 tdesc_name(tdp), tdp->t_id, in die_array_resolve()
770 tdp->t_ardef->ad_contents->t_id); in die_array_resolve()
776 tdp->t_size = sz * tdp->t_ardef->ad_nelems; in die_array_resolve()
777 tdp->t_flags |= TDESC_F_RESOLVED; in die_array_resolve()
779 debug(3, "resolved array %d: %u bytes\n", tdp->t_id, tdp->t_size); in die_array_resolve()
786 die_array_failed(tdesc_t *tdp, tdesc_t **tdpp __unused, void *private __unused) in die_array_failed() argument
788 tdesc_t *cont = tdp->t_ardef->ad_contents; in die_array_failed()
790 if (tdp->t_flags & TDESC_F_RESOLVED) in die_array_failed()
794 tdp->t_id, tdesc_name(cont), cont->t_id); in die_array_failed()
806 die_enum_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp) in die_enum_create() argument
813 tdp->t_type = FORWARD; in die_enum_create()
819 tdp->t_type = ENUM; in die_enum_create()
822 tdp->t_size = uval; in die_enum_create()
825 elist_t **elastp = &tdp->t_emem; in die_enum_create()
857 hash_add(dw->dw_enumhash, tdp); in die_enum_create()
859 tdp->t_flags |= TDESC_F_RESOLVED; in die_enum_create()
861 if (tdp->t_name != NULL) { in die_enum_create()
864 ii->ii_name = xstrdup(tdp->t_name); in die_enum_create()
865 ii->ii_dtype = tdp; in die_enum_create()
875 tdesc_t *tdp = arg1, **fullp = arg2; in die_enum_match() local
877 if (tdp->t_emem != NULL) { in die_enum_match()
878 *fullp = tdp; in die_enum_match()
887 die_enum_resolve(tdesc_t *tdp, tdesc_t **tdpp __unused, void *private) in die_enum_resolve() argument
892 if (tdp->t_flags & TDESC_F_RESOLVED) in die_enum_resolve()
895 (void) hash_find_iter(dw->dw_enumhash, tdp, die_enum_match, &full); in die_enum_resolve()
902 terminate("tdp %u: enum %s has no members\n", tdp->t_id, in die_enum_resolve()
903 tdesc_name(tdp)); in die_enum_resolve()
906 debug(3, "tdp %u: enum %s redirected to %u\n", tdp->t_id, in die_enum_resolve()
907 tdesc_name(tdp), full->t_id); in die_enum_resolve()
909 tdp->t_flags |= TDESC_F_RESOLVED; in die_enum_resolve()
932 die_sou_create(dwarf_t *dw, Dwarf_Die str, Dwarf_Off off, tdesc_t *tdp, in die_sou_create() argument
943 tdp->t_type = (die_isdecl(dw, str) ? FORWARD : type); in die_sou_create()
946 (tdp->t_type == FORWARD ? "forward decl" : typename), in die_sou_create()
947 tdesc_name(tdp)); in die_sou_create()
949 if (tdp->t_type == FORWARD) { in die_sou_create()
950 hash_add(dw->dw_fwdhash, tdp); in die_sou_create()
954 (void) hash_find_iter(dw->dw_fwdhash, tdp, die_fwd_map, tdp); in die_sou_create()
957 tdp->t_size = sz; in die_sou_create()
966 mlastp = &tdp->t_members; in die_sou_create()
1063 if (tdp->t_members == NULL) { in die_sou_create()
1064 const char *old = tdesc_name(tdp); in die_sou_create()
1071 if (tdp->t_name != NULL) in die_sou_create()
1072 free(tdp->t_name); in die_sou_create()
1073 tdp->t_name = new; in die_sou_create()
1078 if (tdp->t_name != NULL) { in die_sou_create()
1081 ii->ii_name = xstrdup(tdp->t_name); in die_sou_create()
1082 ii->ii_dtype = tdp; in die_sou_create()
1089 die_struct_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp) in die_struct_create() argument
1091 die_sou_create(dw, die, off, tdp, STRUCT, "struct"); in die_struct_create()
1095 die_union_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp) in die_union_create() argument
1097 die_sou_create(dw, die, off, tdp, UNION, "union"); in die_union_create()
1102 die_sou_resolve(tdesc_t *tdp, tdesc_t **tdpp __unused, void *private) in die_sou_resolve() argument
1108 if (tdp->t_flags & TDESC_F_RESOLVED) in die_sou_resolve()
1111 debug(3, "resolving sou %s\n", tdesc_name(tdp)); in die_sou_resolve()
1113 for (ml = tdp->t_members; ml != NULL; ml = ml->ml_next) { in die_sou_resolve()
1161 tdp->t_id, ml->ml_size); in die_sou_resolve()
1168 tdp->t_flags |= TDESC_F_RESOLVED; in die_sou_resolve()
1175 die_sou_failed(tdesc_t *tdp, tdesc_t **tdpp __unused, void *private __unused) in die_sou_failed() argument
1177 const char *typename = (tdp->t_type == STRUCT ? "struct" : "union"); in die_sou_failed()
1180 if (tdp->t_flags & TDESC_F_RESOLVED) in die_sou_failed()
1183 for (ml = tdp->t_members; ml != NULL; ml = ml->ml_next) { in die_sou_failed()
1186 "of type %s (%d <%x>)\n", typename, tdp->t_id, in die_sou_failed()
1187 tdp->t_id, in die_sou_failed()
1197 die_funcptr_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp) in die_funcptr_create() argument
1232 tdp->t_type = FUNCTION; in die_funcptr_create()
1268 tdp->t_fndef = fn; in die_funcptr_create()
1269 tdp->t_flags |= TDESC_F_RESOLVED; in die_funcptr_create()
1450 die_base_create(dwarf_t *dw, Dwarf_Die base, Dwarf_Off off, tdesc_t *tdp) in die_base_create() argument
1469 if (tdp->t_name == NULL) in die_base_create()
1473 if ((intr = die_base_name_parse(tdp->t_name, &new)) != NULL) { in die_base_create()
1476 tdesc_name(tdp), new); in die_base_create()
1478 free(tdp->t_name); in die_base_create()
1479 tdp->t_name = new; in die_base_create()
1486 tdesc_name(tdp)); in die_base_create()
1493 tdp->t_type = INTRINSIC; in die_base_create()
1494 tdp->t_intr = intr; in die_base_create()
1495 tdp->t_size = sz; in die_base_create()
1497 tdp->t_flags |= TDESC_F_RESOLVED; in die_base_create()
1501 die_through_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp, in die_through_create() argument
1508 tdp->t_type = type; in die_through_create()
1511 tdp->t_tdesc = die_lookup_pass1(dw, die, DW_AT_type); in die_through_create()
1513 tdp->t_tdesc = tdesc_intr_void(dw); in die_through_create()
1517 tdp->t_size = dw->dw_ptrsz; in die_through_create()
1519 tdp->t_flags |= TDESC_F_RESOLVED; in die_through_create()
1524 ii->ii_name = xstrdup(tdp->t_name); in die_through_create()
1525 ii->ii_dtype = tdp; in die_through_create()
1532 die_typedef_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp) in die_typedef_create() argument
1534 die_through_create(dw, die, off, tdp, TYPEDEF, "typedef"); in die_typedef_create()
1538 die_const_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp) in die_const_create() argument
1540 die_through_create(dw, die, off, tdp, CONST, "const"); in die_const_create()
1544 die_pointer_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp) in die_pointer_create() argument
1546 die_through_create(dw, die, off, tdp, POINTER, "pointer"); in die_pointer_create()
1550 die_restrict_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp) in die_restrict_create() argument
1552 die_through_create(dw, die, off, tdp, RESTRICT, "restrict"); in die_restrict_create()
1556 die_volatile_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp) in die_volatile_create() argument
1558 die_through_create(dw, die, off, tdp, VOLATILE, "volatile"); in die_volatile_create()
1563 die_function_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp __unused) in die_function_create()
1656 die_variable_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp __unused) in die_variable_create()
1696 die_lexblk_descend(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off __unused, tdesc_t *tdp __unused) in die_lexblk_descend()
1756 tdesc_t *tdp; in die_create_one() local
1772 if ((tdp = tdesc_lookup(dw, off)) == NULL && in die_create_one()
1774 tdp = xcalloc(sizeof (tdesc_t)); in die_create_one()
1775 tdp->t_id = off; in die_create_one()
1776 tdesc_add(dw, tdp); in die_create_one()
1779 if (tdp != NULL) in die_create_one()
1780 tdp->t_name = die_name(dw, die); in die_create_one()
1782 dc->dc_create(dw, die, off, tdp); in die_create_one()