Lines Matching defs:tdp
154 tdesc_add(dwarf_t *dw, tdesc_t *tdp)
156 hash_add(dw->dw_tidhash, tdp);
163 void *tdp;
167 if (hash_find(dw->dw_tidhash, &tmpl, &tdp))
168 return (tdp);
178 tdesc_size(tdesc_t *tdp)
181 switch (tdp->t_type) {
191 return (tdp->t_size);
194 debug(3, "type is forward for %#x\n", tdp->t_id);
201 tdp = tdp->t_tdesc;
205 debug(3, "type is undefined for %#x\n", tdp->t_id);
209 terminate("tdp %u: tdesc_size on unknown type %#x\n",
210 tdp->t_id, tdp->t_type);
216 tdesc_bitsize(tdesc_t *tdp)
219 switch (tdp->t_type) {
221 return (tdp->t_intr->intr_nbits);
231 return (tdp->t_size * NBBY);
234 debug(3, "bitsize is forward for %d\n", tdp->t_id);
241 tdp = tdp->t_tdesc;
245 debug(3, "bitsize is undefined for %d\n", tdp->t_id);
249 terminate("tdp %u: tdesc_bitsize on unknown type %d\n",
250 tdp->t_id, tdp->t_type);
256 tdesc_basetype(tdesc_t *tdp)
259 switch (tdp->t_type) {
264 tdp = tdp->t_tdesc;
269 return (tdp);
481 tdesc_t *tdp = xcalloc(sizeof (tdesc_t));
483 tdp->t_id = off;
485 tdesc_add(dw, tdp);
487 return (tdp);
494 tdesc_t *tdp;
496 if ((tdp = tdesc_lookup(dw, ref)) != NULL)
497 return (tdp);
583 tdesc_t *tdp;
591 tdp = xcalloc(sizeof (tdesc_t));
592 tdp->t_name = xstrdup(name);
593 tdp->t_size = sz;
594 tdp->t_id = tid;
595 tdp->t_type = INTRINSIC;
596 tdp->t_intr = intr;
597 tdp->t_flags = TDESC_F_RESOLVED;
599 tdesc_add(dw, tdp);
601 return (tdp);
644 terminate("tdp %u: attempt to make a bit field from an "
732 die_array_create(dwarf_t *dw, Dwarf_Die arr, Dwarf_Off off, tdesc_t *tdp)
757 tdesc_array_create(dw, dim, arrtdp, tdp);
763 tdp->t_size = uval;
770 for (dimtdp = tdp->t_ardef->ad_contents;
779 tdp->t_flags |= flags;
783 (uintmax_t)off, tdp->t_ardef->ad_nelems, tdp->t_size);
788 die_array_resolve(tdesc_t *tdp, tdesc_t **tdpp __unused, void *private)
793 if (tdp->t_flags & TDESC_F_RESOLVED)
796 debug(3, "trying to resolve array %#x (cont %#x/%d)\n", tdp->t_id,
797 tdp->t_ardef->ad_contents->t_id,
798 tdp->t_ardef->ad_contents->t_size);
800 if ((sz = tdesc_size(tdp->t_ardef->ad_contents)) == 0 &&
801 (tdp->t_ardef->ad_contents->t_flags & TDESC_F_RESOLVED) == 0) {
803 tdesc_name(tdp), tdp->t_id,
804 tdp->t_ardef->ad_contents->t_id);
810 tdp->t_size = sz * tdp->t_ardef->ad_nelems;
811 tdp->t_flags |= TDESC_F_RESOLVED;
813 debug(3, "resolved array %#x: %u bytes\n", tdp->t_id, tdp->t_size);
820 die_array_failed(tdesc_t *tdp, tdesc_t **tdpp __unused, void *private __unused)
822 tdesc_t *cont = tdp->t_ardef->ad_contents;
824 if (tdp->t_flags & TDESC_F_RESOLVED)
828 tdp->t_id, tdesc_name(cont), cont->t_id);
840 die_enum_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp)
847 tdp->t_type = FORWARD;
853 tdp->t_type = ENUM;
856 tdp->t_size = uval;
859 elist_t **elastp = &tdp->t_emem;
893 hash_add(dw->dw_enumhash, tdp);
895 tdp->t_flags |= TDESC_F_RESOLVED;
897 if (tdp->t_name != NULL) {
900 ii->ii_name = xstrdup(tdp->t_name);
901 ii->ii_dtype = tdp;
911 tdesc_t *tdp = arg1, **fullp = arg2;
913 if (tdp->t_emem != NULL) {
914 *fullp = tdp;
923 die_enum_resolve(tdesc_t *tdp, tdesc_t **tdpp __unused, void *private)
928 if (tdp->t_flags & TDESC_F_RESOLVED)
931 (void) hash_find_iter(dw->dw_enumhash, tdp, die_enum_match, &full);
938 terminate("tdp %u: enum %s has no members\n", tdp->t_id,
939 tdesc_name(tdp));
942 debug(3, "tdp %u: enum %s redirected to %u\n", tdp->t_id,
943 tdesc_name(tdp), full->t_id);
945 tdp->t_flags |= TDESC_F_RESOLVED;
955 debug(3, "tdp %u: mapped forward %s to sou %u\n", fwd->t_id,
968 die_sou_create(dwarf_t *dw, Dwarf_Die str, Dwarf_Off off, tdesc_t *tdp,
979 tdp->t_type = (die_isdecl(dw, str) ? FORWARD : type);
982 (tdp->t_type == FORWARD ? "forward decl" : typename),
983 tdesc_name(tdp), tdp->t_id);
985 if (tdp->t_type == FORWARD) {
986 hash_add(dw->dw_fwdhash, tdp);
990 (void) hash_find_iter(dw->dw_fwdhash, tdp, die_fwd_map, tdp);
993 tdp->t_size = sz;
1002 mlastp = &tdp->t_members;
1101 if (tdp->t_members == NULL) {
1102 const char *old = tdesc_name(tdp);
1110 if (tdp->t_name != NULL)
1111 free(tdp->t_name);
1112 tdp->t_name = new;
1117 if (tdp->t_name != NULL) {
1120 ii->ii_name = xstrdup(tdp->t_name);
1121 ii->ii_dtype = tdp;
1128 die_struct_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp)
1130 die_sou_create(dw, die, off, tdp, STRUCT, "struct");
1134 die_union_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp)
1136 die_sou_create(dw, die, off, tdp, UNION, "union");
1140 die_class_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp)
1142 die_sou_create(dw, die, off, tdp, CLASS, "class");
1147 die_sou_resolve(tdesc_t *tdp, tdesc_t **tdpp __unused, void *private)
1153 if (tdp->t_flags & TDESC_F_RESOLVED)
1156 debug(3, "resolving sou %s\n", tdesc_name(tdp));
1158 for (ml = tdp->t_members; ml != NULL; ml = ml->ml_next) {
1217 tdesc_name(tdp), mt->t_type, tdesc_name(mt),
1237 debug(3, "tdp %u: creating bitfield for %d bits\n",
1238 tdp->t_id, ml->ml_size);
1245 tdp->t_flags |= TDESC_F_RESOLVED;
1252 die_sou_failed(tdesc_t *tdp, tdesc_t **tdpp __unused, void *private __unused)
1254 const char *typename = (tdp->t_type == STRUCT ? "struct" : "union");
1257 if (tdp->t_flags & TDESC_F_RESOLVED)
1260 for (ml = tdp->t_members; ml != NULL; ml = ml->ml_next) {
1263 "of type %s (%d <%x>)\n", typename, tdp->t_id,
1264 tdp->t_id,
1274 die_funcptr_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp)
1310 tdp->t_type = FUNCTION;
1346 tdp->t_fndef = fn;
1347 tdp->t_flags |= TDESC_F_RESOLVED;
1549 die_base_create(dwarf_t *dw, Dwarf_Die base, Dwarf_Off off, tdesc_t *tdp)
1568 if (tdp->t_name == NULL)
1572 if ((intr = die_base_name_parse(tdp->t_name, &new)) != NULL) {
1575 (uintmax_t)off, tdesc_name(tdp), new);
1577 free(tdp->t_name);
1578 tdp->t_name = new;
1585 (uintmax_t)off, tdesc_name(tdp));
1592 tdp->t_type = INTRINSIC;
1593 tdp->t_intr = intr;
1594 tdp->t_size = sz;
1596 tdp->t_flags |= TDESC_F_RESOLVED;
1600 die_through_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp,
1608 tdp->t_type = type;
1611 tdp->t_tdesc = die_lookup_pass1(dw, die, DW_AT_type);
1613 tdp->t_tdesc = tdesc_intr_void(dw);
1617 tdp->t_size = dw->dw_ptrsz;
1619 tdp->t_flags |= TDESC_F_RESOLVED;
1624 ii->ii_name = xstrdup(tdp->t_name);
1625 ii->ii_dtype = tdp;
1632 die_typedef_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp)
1634 die_through_create(dw, die, off, tdp, TYPEDEF, "typedef");
1638 die_const_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp)
1640 die_through_create(dw, die, off, tdp, CONST, "const");
1644 die_pointer_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp)
1646 die_through_create(dw, die, off, tdp, POINTER, "pointer");
1650 die_reference_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp)
1652 die_through_create(dw, die, off, tdp, REFERENCE, "reference");
1656 die_restrict_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp)
1658 die_through_create(dw, die, off, tdp, RESTRICT, "restrict");
1662 die_volatile_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp)
1664 die_through_create(dw, die, off, tdp, VOLATILE, "volatile");
1669 die_function_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp __unused)
1763 die_variable_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp __unused)
1791 debug(3, "tdp %u: unforwarded %s\n", fwd->t_id,
1803 die_lexblk_descend(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off __unused, tdesc_t *tdp __unused)
1865 tdesc_t *tdp;
1883 if ((tdp = tdesc_lookup(dw, off)) == NULL &&
1885 tdp = xcalloc(sizeof (tdesc_t));
1886 tdp->t_id = off;
1887 tdesc_add(dw, tdp);
1890 if (tdp != NULL)
1891 tdp->t_name = die_name(dw, die);
1893 dc->dc_create(dw, die, off, tdp);