Lines Matching refs:tdp

156 tdesc_add(dwarf_t *dw, tdesc_t *tdp)
158 hash_add(dw->dw_tidhash, tdp);
164 tdesc_t tmpl, *tdp;
168 if (hash_find(dw->dw_tidhash, &tmpl, (void **)&tdp))
169 return (tdp);
179 tdesc_size(tdesc_t *tdp)
182 switch (tdp->t_type) {
190 return (tdp->t_size);
199 tdp = tdp->t_tdesc;
206 terminate("tdp %u: tdesc_size on unknown type %d\n",
207 tdp->t_id, tdp->t_type);
213 tdesc_bitsize(tdesc_t *tdp)
216 switch (tdp->t_type) {
218 return (tdp->t_intr->intr_nbits);
226 return (tdp->t_size * NBBY);
235 tdp = tdp->t_tdesc;
242 terminate("tdp %u: tdesc_bitsize on unknown type %d\n",
243 tdp->t_id, tdp->t_type);
249 tdesc_basetype(tdesc_t *tdp)
252 switch (tdp->t_type) {
257 tdp = tdp->t_tdesc;
262 return (tdp);
547 tdesc_t *tdp = xcalloc(sizeof (tdesc_t));
549 tdp->t_id = off;
551 tdesc_add(dw, tdp);
553 return (tdp);
560 tdesc_t *tdp;
562 if ((tdp = tdesc_lookup(dw, ref)) != NULL)
563 return (tdp);
602 tdesc_t *tdp;
610 tdp = xcalloc(sizeof (tdesc_t));
611 tdp->t_name = xstrdup(name);
612 tdp->t_size = sz;
613 tdp->t_id = tid;
614 tdp->t_type = INTRINSIC;
615 tdp->t_intr = intr;
616 tdp->t_flags = TDESC_F_RESOLVED;
618 tdesc_add(dw, tdp);
620 return (tdp);
663 terminate("tdp %u: attempt to make a bit field from an "
745 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 tdp->t_ardef->ad_nelems, tdp->t_size);
788 die_array_resolve(tdesc_t *tdp, tdesc_t **tdpp, void *private)
793 if (tdp->t_flags & TDESC_F_RESOLVED)
796 debug(3, "trying to resolve array %d (cont %d)\n", tdp->t_id,
797 tdp->t_ardef->ad_contents->t_id);
799 if ((sz = tdesc_size(tdp->t_ardef->ad_contents)) == 0) {
801 tdesc_name(tdp), tdp->t_id,
802 tdp->t_ardef->ad_contents->t_id);
808 tdp->t_size = sz * tdp->t_ardef->ad_nelems;
809 tdp->t_flags |= TDESC_F_RESOLVED;
811 debug(3, "resolved array %d: %u bytes\n", tdp->t_id, tdp->t_size);
818 die_array_failed(tdesc_t *tdp, tdesc_t **tdpp, void *private)
820 tdesc_t *cont = tdp->t_ardef->ad_contents;
822 if (tdp->t_flags & TDESC_F_RESOLVED)
826 tdp->t_id, tdesc_name(cont), cont->t_id);
838 die_enum_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp)
846 tdp->t_type = ENUM;
849 tdp->t_size = uval;
852 elist_t **elastp = &tdp->t_emem;
884 hash_add(dw->dw_enumhash, tdp);
886 tdp->t_flags |= TDESC_F_RESOLVED;
888 if (tdp->t_name != NULL) {
891 ii->ii_name = xstrdup(tdp->t_name);
892 ii->ii_dtype = tdp;
902 tdesc_t *tdp = arg1, **fullp = arg2;
904 if (tdp->t_emem != NULL) {
905 *fullp = tdp;
914 die_enum_resolve(tdesc_t *tdp, tdesc_t **tdpp, void *private)
919 if (tdp->t_flags & TDESC_F_RESOLVED)
922 (void) hash_find_iter(dw->dw_enumhash, tdp, die_enum_match, &full);
929 terminate("tdp %u: enum %s has no members\n", tdp->t_id,
930 tdesc_name(tdp));
933 debug(3, "tdp %u: enum %s redirected to %u\n", tdp->t_id,
934 tdesc_name(tdp), full->t_id);
936 tdp->t_flags |= TDESC_F_RESOLVED;
946 debug(3, "tdp %u: mapped forward %s to sou %u\n", fwd->t_id,
959 die_sou_create(dwarf_t *dw, Dwarf_Die str, Dwarf_Off off, tdesc_t *tdp,
967 tdp->t_type = (die_isdecl(dw, str) ? FORWARD : type);
970 (tdp->t_type == FORWARD ? "forward decl" : typename),
971 tdesc_name(tdp));
973 if (tdp->t_type == FORWARD) {
974 hash_add(dw->dw_fwdhash, tdp);
978 (void) hash_find_iter(dw->dw_fwdhash, tdp, die_fwd_map, tdp);
981 tdp->t_size = sz;
989 mlastp = &tdp->t_members;
1066 if (tdp->t_members == NULL) {
1067 const char *old = tdesc_name(tdp);
1074 if (tdp->t_name != NULL)
1075 free(tdp->t_name);
1076 tdp->t_name = new;
1081 if (tdp->t_name != NULL) {
1084 ii->ii_name = xstrdup(tdp->t_name);
1085 ii->ii_dtype = tdp;
1092 die_struct_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp)
1094 die_sou_create(dw, die, off, tdp, STRUCT, "struct");
1098 die_union_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp)
1100 die_sou_create(dw, die, off, tdp, UNION, "union");
1105 die_sou_resolve(tdesc_t *tdp, tdesc_t **tdpp, void *private)
1111 if (tdp->t_flags & TDESC_F_RESOLVED)
1114 debug(3, "resolving sou %s\n", tdesc_name(tdp));
1116 for (ml = tdp->t_members; ml != NULL; ml = ml->ml_next) {
1150 debug(3, "tdp %u: creating bitfield for %d bits\n",
1151 tdp->t_id, ml->ml_size);
1157 tdp->t_flags |= TDESC_F_RESOLVED;
1164 die_sou_failed(tdesc_t *tdp, tdesc_t **tdpp, void *private)
1166 const char *typename = (tdp->t_type == STRUCT ? "struct" : "union");
1169 if (tdp->t_flags & TDESC_F_RESOLVED)
1172 for (ml = tdp->t_members; ml != NULL; ml = ml->ml_next) {
1175 "of type %s (%d)\n", typename, tdp->t_id,
1185 die_funcptr_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp)
1220 tdp->t_type = FUNCTION;
1257 tdp->t_fndef = fn;
1258 tdp->t_flags |= TDESC_F_RESOLVED;
1433 die_base_create(dwarf_t *dw, Dwarf_Die base, Dwarf_Off off, tdesc_t *tdp)
1452 if (tdp->t_name == NULL)
1456 if ((intr = die_base_name_parse(tdp->t_name, &new)) != NULL) {
1459 tdesc_name(tdp), new);
1461 free(tdp->t_name);
1462 tdp->t_name = new;
1469 tdesc_name(tdp));
1476 tdp->t_type = INTRINSIC;
1477 tdp->t_intr = intr;
1478 tdp->t_size = sz;
1480 tdp->t_flags |= TDESC_F_RESOLVED;
1484 die_through_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp,
1491 tdp->t_type = type;
1495 tdp->t_tdesc = die_lookup_pass1(dw, die, DW_AT_type);
1497 tdp->t_tdesc = tdesc_intr_void(dw);
1501 tdp->t_size = dw->dw_ptrsz;
1503 tdp->t_flags |= TDESC_F_RESOLVED;
1508 ii->ii_name = xstrdup(tdp->t_name);
1509 ii->ii_dtype = tdp;
1516 die_typedef_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp)
1518 die_through_create(dw, die, off, tdp, TYPEDEF, "typedef");
1522 die_const_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp)
1524 die_through_create(dw, die, off, tdp, CONST, "const");
1528 die_pointer_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp)
1530 die_through_create(dw, die, off, tdp, POINTER, "pointer");
1534 die_restrict_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp)
1536 die_through_create(dw, die, off, tdp, RESTRICT, "restrict");
1540 die_volatile_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp)
1542 die_through_create(dw, die, off, tdp, VOLATILE, "volatile");
1547 die_function_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp)
1639 die_variable_create(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp)
1667 debug(3, "tdp %u: unforwarded %s\n", fwd->t_id,
1679 die_lexblk_descend(dwarf_t *dw, Dwarf_Die die, Dwarf_Off off, tdesc_t *tdp)
1739 tdesc_t *tdp;
1755 if ((tdp = tdesc_lookup(dw, off)) == NULL &&
1757 tdp = xcalloc(sizeof (tdesc_t));
1758 tdp->t_id = off;
1759 tdesc_add(dw, tdp);
1762 if (tdp != NULL)
1763 tdp->t_name = die_name(dw, die);
1765 dc->dc_create(dw, die, off, tdp);