Lines Matching refs:tdp

153 tdesc_add(dwarf_t *dw, tdesc_t *tdp)
155 hash_add(dw->dw_tidhash, tdp);
162 void *tdp;
166 if (hash_find(dw->dw_tidhash, &tmpl, &tdp))
167 return (tdp);
177 tdesc_size(tdesc_t *tdp)
180 switch (tdp->t_type) {
188 return (tdp->t_size);
197 tdp = tdp->t_tdesc;
204 terminate("tdp %u: tdesc_size on unknown type %d\n",
205 tdp->t_id, tdp->t_type);
211 tdesc_bitsize(tdesc_t *tdp)
214 switch (tdp->t_type) {
216 return (tdp->t_intr->intr_nbits);
224 return (tdp->t_size * NBBY);
233 tdp = tdp->t_tdesc;
240 terminate("tdp %u: tdesc_bitsize on unknown type %d\n",
241 tdp->t_id, tdp->t_type);
247 tdesc_basetype(tdesc_t *tdp)
250 switch (tdp->t_type) {
255 tdp = tdp->t_tdesc;
260 return (tdp);
465 tdesc_t *tdp = xcalloc(sizeof (tdesc_t));
467 tdp->t_id = off;
469 tdesc_add(dw, tdp);
471 return (tdp);
478 tdesc_t *tdp;
480 if ((tdp = tdesc_lookup(dw, ref)) != NULL)
481 return (tdp);
557 tdesc_t *tdp;
565 tdp = xcalloc(sizeof (tdesc_t));
566 tdp->t_name = xstrdup(name);
567 tdp->t_size = sz;
568 tdp->t_id = tid;
569 tdp->t_type = INTRINSIC;
570 tdp->t_intr = intr;
571 tdp->t_flags = TDESC_F_RESOLVED;
573 tdesc_add(dw, tdp);
575 return (tdp);
618 terminate("tdp %u: attempt to make a bit field from an "
704 die_array_create(dwarf_t *dw, Dwarf_Die arr, Dwarf_Off off, tdesc_t *tdp)
716 tdesc_array_create(dw, dim, arrtdp, tdp);
729 tdp->t_size = uval;
736 for (dimtdp = tdp->t_ardef->ad_contents;
745 tdp->t_flags |= flags;
749 tdp->t_ardef->ad_nelems, tdp->t_size);
754 die_array_resolve(tdesc_t *tdp, tdesc_t **tdpp __unused, void *private)
759 if (tdp->t_flags & TDESC_F_RESOLVED)
762 debug(3, "trying to resolve array %d (cont %d)\n", tdp->t_id,
763 tdp->t_ardef->ad_contents->t_id);
765 if ((sz = tdesc_size(tdp->t_ardef->ad_contents)) == 0) {
767 tdesc_name(tdp), tdp->t_id,
768 tdp->t_ardef->ad_contents->t_id);
774 tdp->t_size = sz * tdp->t_ardef->ad_nelems;
775 tdp->t_flags |= TDESC_F_RESOLVED;
777 debug(3, "resolved array %d: %u bytes\n", tdp->t_id, tdp->t_size);
784 die_array_failed(tdesc_t *tdp, tdesc_t **tdpp __unused, void *private __unused)
786 tdesc_t *cont = tdp->t_ardef->ad_contents;
788 if (tdp->t_flags & TDESC_F_RESOLVED)
792 tdp->t_id, tdesc_name(cont), cont->t_id);
804 die_enum_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp)
811 tdp->t_type = FORWARD;
817 tdp->t_type = ENUM;
826 tdp->t_size = uval;
829 elist_t **elastp = &tdp->t_emem;
861 hash_add(dw->dw_enumhash, tdp);
863 tdp->t_flags |= TDESC_F_RESOLVED;
865 if (tdp->t_name != NULL) {
868 ii->ii_name = xstrdup(tdp->t_name);
869 ii->ii_dtype = tdp;
879 tdesc_t *tdp = arg1, **fullp = arg2;
881 if (tdp->t_emem != NULL) {
882 *fullp = tdp;
891 die_enum_resolve(tdesc_t *tdp, tdesc_t **tdpp __unused, void *private)
896 if (tdp->t_flags & TDESC_F_RESOLVED)
899 (void) hash_find_iter(dw->dw_enumhash, tdp, die_enum_match, &full);
906 terminate("tdp %u: enum %s has no members\n", tdp->t_id,
907 tdesc_name(tdp));
910 debug(3, "tdp %u: enum %s redirected to %u\n", tdp->t_id,
911 tdesc_name(tdp), full->t_id);
913 tdp->t_flags |= TDESC_F_RESOLVED;
923 debug(3, "tdp %u: mapped forward %s to sou %u\n", fwd->t_id,
936 die_sou_create(dwarf_t *dw, Dwarf_Die str, Dwarf_Off off, tdesc_t *tdp,
947 tdp->t_type = (die_isdecl(dw, str) ? FORWARD : type);
950 (tdp->t_type == FORWARD ? "forward decl" : typename),
951 tdesc_name(tdp));
953 if (tdp->t_type == FORWARD) {
954 hash_add(dw->dw_fwdhash, tdp);
958 (void) hash_find_iter(dw->dw_fwdhash, tdp, die_fwd_map, tdp);
961 tdp->t_size = sz;
970 mlastp = &tdp->t_members;
1060 tdp->t_size = maxsz / 8; /* maxsz is in bits, t_size is bytes */
1083 if (tdp->t_members == NULL) {
1084 const char *old = tdesc_name(tdp);
1091 if (tdp->t_name != NULL)
1092 free(tdp->t_name);
1093 tdp->t_name = new;
1098 if (tdp->t_name != NULL) {
1101 ii->ii_name = xstrdup(tdp->t_name);
1102 ii->ii_dtype = tdp;
1109 die_struct_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp)
1111 die_sou_create(dw, die, off, tdp, STRUCT, "struct");
1115 die_union_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp)
1117 die_sou_create(dw, die, off, tdp, UNION, "union");
1122 die_sou_resolve(tdesc_t *tdp, tdesc_t **tdpp __unused, void *private)
1128 if (tdp->t_flags & TDESC_F_RESOLVED)
1131 debug(3, "resolving sou %s\n", tdesc_name(tdp));
1133 for (ml = tdp->t_members; ml != NULL; ml = ml->ml_next) {
1167 debug(3, "tdp %u: creating bitfield for %d bits\n",
1168 tdp->t_id, ml->ml_size);
1174 tdp->t_flags |= TDESC_F_RESOLVED;
1181 die_sou_failed(tdesc_t *tdp, tdesc_t **tdpp __unused, void *private __unused)
1183 const char *typename = (tdp->t_type == STRUCT ? "struct" : "union");
1186 if (tdp->t_flags & TDESC_F_RESOLVED)
1189 for (ml = tdp->t_members; ml != NULL; ml = ml->ml_next) {
1192 "of type %s (%d <%x>)\n", typename, tdp->t_id,
1193 tdp->t_id,
1203 die_funcptr_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp)
1238 tdp->t_type = FUNCTION;
1274 tdp->t_fndef = fn;
1275 tdp->t_flags |= TDESC_F_RESOLVED;
1456 die_base_create(dwarf_t *dw, Dwarf_Die base, Dwarf_Off off, tdesc_t *tdp)
1482 if (tdp->t_name == NULL)
1486 if ((intr = die_base_name_parse(tdp->t_name, &new)) != NULL) {
1489 tdesc_name(tdp), new);
1491 free(tdp->t_name);
1492 tdp->t_name = new;
1499 tdesc_name(tdp));
1506 tdp->t_type = INTRINSIC;
1507 tdp->t_intr = intr;
1508 tdp->t_size = sz;
1510 tdp->t_flags |= TDESC_F_RESOLVED;
1514 die_through_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp,
1521 tdp->t_type = type;
1524 tdp->t_tdesc = die_lookup_pass1(dw, die, DW_AT_type);
1526 tdp->t_tdesc = tdesc_intr_void(dw);
1530 tdp->t_size = dw->dw_ptrsz;
1532 tdp->t_flags |= TDESC_F_RESOLVED;
1537 ii->ii_name = xstrdup(tdp->t_name);
1538 ii->ii_dtype = tdp;
1545 die_typedef_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp)
1547 die_through_create(dw, die, off, tdp, TYPEDEF, "typedef");
1551 die_const_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp)
1553 die_through_create(dw, die, off, tdp, CONST, "const");
1557 die_pointer_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp)
1559 die_through_create(dw, die, off, tdp, POINTER, "pointer");
1563 die_restrict_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp)
1565 die_through_create(dw, die, off, tdp, RESTRICT, "restrict");
1569 die_volatile_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp)
1571 die_through_create(dw, die, off, tdp, VOLATILE, "volatile");
1576 die_function_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp __unused)
1668 die_variable_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp __unused)
1696 debug(3, "tdp %u: unforwarded %s\n", fwd->t_id,
1708 die_lexblk_descend(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off __unused, tdesc_t *tdp __unused)
1768 tdesc_t *tdp;
1784 if ((tdp = tdesc_lookup(dw, off)) == NULL &&
1786 tdp = xcalloc(sizeof (tdesc_t));
1787 tdp->t_id = off;
1788 tdesc_add(dw, tdp);
1791 if (tdp != NULL)
1792 tdp->t_name = die_name(dw, die);
1794 dc->dc_create(dw, die, off, tdp);