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