Lines Matching refs:ob
62 void __register_frame_info_bases (void *begin, struct object *ob,
66 struct object *ob,
102 __register_frame_info_bases (void *begin, struct object *ob,
109 ob->pc_begin = (void *)-1;
110 ob->tbase = tbase;
111 ob->dbase = dbase;
112 ob->u.single = begin;
113 ob->s.i = 0;
114 ob->s.b.encoding = DW_EH_PE_omit;
116 ob->fde_end = NULL;
122 ob->next = unseen_objects;
123 unseen_objects = ob;
130 __register_frame_info (void *begin, struct object *ob) in hidden_def()
132 __register_frame_info_bases (begin, ob, 0, 0); in hidden_def()
138 struct object *ob; in __register_frame() local
144 ob = (struct object *) malloc (sizeof (struct object)); in __register_frame()
145 __register_frame_info_bases (begin, ob, 0, 0); in __register_frame()
153 __register_frame_info_table_bases (void *begin, struct object *ob, in __register_frame_info_table_bases() argument
156 ob->pc_begin = (void *)-1; in __register_frame_info_table_bases()
157 ob->tbase = tbase; in __register_frame_info_table_bases()
158 ob->dbase = dbase; in __register_frame_info_table_bases()
159 ob->u.array = begin; in __register_frame_info_table_bases()
160 ob->s.i = 0; in __register_frame_info_table_bases()
161 ob->s.b.from_array = 1; in __register_frame_info_table_bases()
162 ob->s.b.encoding = DW_EH_PE_omit; in __register_frame_info_table_bases()
167 ob->next = unseen_objects; in __register_frame_info_table_bases()
168 unseen_objects = ob; in __register_frame_info_table_bases()
175 __register_frame_info_table (void *begin, struct object *ob) in hidden_def()
177 __register_frame_info_table_bases (begin, ob, 0, 0); in hidden_def()
183 struct object *ob = (struct object *) malloc (sizeof (struct object)); in __register_frame_table() local
184 __register_frame_info_table_bases (begin, ob, 0, 0); in __register_frame_table()
203 struct object *ob = 0; in __deregister_frame_info_bases() local
208 return ob; in __deregister_frame_info_bases()
216 ob = *p; in __deregister_frame_info_bases()
217 *p = ob->next; in __deregister_frame_info_bases()
226 ob = *p; in __deregister_frame_info_bases()
227 *p = ob->next; in __deregister_frame_info_bases()
228 tofree = ob->u.sort; in __deregister_frame_info_bases()
236 ob = *p; in __deregister_frame_info_bases()
237 *p = ob->next; in __deregister_frame_info_bases()
248 return (void *) ob; in __deregister_frame_info_bases()
271 base_from_object (unsigned char encoding, struct object *ob) in base_from_object() argument
284 return (_Unwind_Ptr) ob->tbase; in base_from_object()
286 return (_Unwind_Ptr) ob->dbase; in base_from_object()
361 fde_unencoded_compare (struct object *ob __attribute__((unused)), in fde_unencoded_compare() argument
375 fde_single_encoding_compare (struct object *ob, fde *x, fde *y) in fde_single_encoding_compare() argument
379 base = base_from_object (ob->s.b.encoding, ob); in fde_single_encoding_compare()
380 read_encoded_value_with_base (ob->s.b.encoding, base, x->pc_begin, &x_ptr); in fde_single_encoding_compare()
381 read_encoded_value_with_base (ob->s.b.encoding, base, y->pc_begin, &y_ptr); in fde_single_encoding_compare()
391 fde_mixed_encoding_compare (struct object *ob, fde *x, fde *y) in fde_mixed_encoding_compare() argument
397 read_encoded_value_with_base (x_encoding, base_from_object (x_encoding, ob), in fde_mixed_encoding_compare()
401 read_encoded_value_with_base (y_encoding, base_from_object (y_encoding, ob), in fde_mixed_encoding_compare()
470 fde_split (struct object *ob, fde_compare_t fde_compare, in fde_split() argument
489 probe != &marker && fde_compare (ob, linear->array[i], *probe) < 0; in fde_split()
515 frame_heapsort (struct object *ob, fde_compare_t fde_compare, in frame_heapsort() argument
537 && fde_compare (ob, a[2*i+2], a[2*i+1]) > 0 in frame_heapsort()
538 && fde_compare (ob, a[2*i+2], a[i]) > 0) in frame_heapsort()
543 else if (fde_compare (ob, a[2*i+1], a[i]) > 0) in frame_heapsort()
560 && fde_compare (ob, a[2*i+2], a[2*i+1]) > 0 in frame_heapsort()
561 && fde_compare (ob, a[2*i+2], a[i]) > 0) in frame_heapsort()
566 else if (fde_compare (ob, a[2*i+1], a[i]) > 0) in frame_heapsort()
580 fde_merge (struct object *ob, fde_compare_t fde_compare, in fde_merge() argument
594 while (i1 > 0 && fde_compare (ob, v1->array[i1-1], fde2) > 0) in fde_merge()
607 end_fde_sort (struct object *ob, struct fde_accumulator *accu, size_t count) in end_fde_sort() argument
614 if (ob->s.b.mixed_encoding) in end_fde_sort()
616 else if (ob->s.b.encoding == DW_EH_PE_absptr) in end_fde_sort()
623 fde_split (ob, fde_compare, accu->linear, accu->erratic); in end_fde_sort()
626 frame_heapsort (ob, fde_compare, accu->erratic); in end_fde_sort()
627 fde_merge (ob, fde_compare, accu->linear, accu->erratic); in end_fde_sort()
634 frame_heapsort (ob, fde_compare, accu->linear); in end_fde_sort()
644 classify_object_over_fdes (struct object *ob, fde *this_fde) in classify_object_over_fdes() argument
651 for (; ! last_fde (ob, this_fde); this_fde = next_fde (this_fde)) in classify_object_over_fdes()
667 base = base_from_object (encoding, ob); in classify_object_over_fdes()
668 if (ob->s.b.encoding == DW_EH_PE_omit) in classify_object_over_fdes()
669 ob->s.b.encoding = encoding; in classify_object_over_fdes()
670 else if (ob->s.b.encoding != encoding) in classify_object_over_fdes()
671 ob->s.b.mixed_encoding = 1; in classify_object_over_fdes()
691 if ((void *) pc_begin < ob->pc_begin) in classify_object_over_fdes()
692 ob->pc_begin = (void *) pc_begin; in classify_object_over_fdes()
699 add_fdes (struct object *ob, struct fde_accumulator *accu, fde *this_fde) in add_fdes() argument
702 int encoding = ob->s.b.encoding; in add_fdes()
703 _Unwind_Ptr base = base_from_object (ob->s.b.encoding, ob); in add_fdes()
705 for (; ! last_fde (ob, this_fde); this_fde = next_fde (this_fde)) in add_fdes()
713 if (ob->s.b.mixed_encoding) in add_fdes()
722 base = base_from_object (encoding, ob); in add_fdes()
762 init_object (struct object* ob) in init_object() argument
767 count = ob->s.b.count; in init_object()
770 if (ob->s.b.from_array) in init_object()
772 fde **p = ob->u.array; in init_object()
774 count += classify_object_over_fdes (ob, *p); in init_object()
777 count = classify_object_over_fdes (ob, ob->u.single); in init_object()
784 ob->s.b.count = count; in init_object()
785 if (ob->s.b.count != count) in init_object()
786 ob->s.b.count = 0; in init_object()
792 if (ob->s.b.from_array) in init_object()
795 for (p = ob->u.array; *p; ++p) in init_object()
796 add_fdes (ob, &accu, *p); in init_object()
799 add_fdes (ob, &accu, ob->u.single); in init_object()
801 end_fde_sort (ob, &accu, count); in init_object()
805 accu.linear->orig_data = ob->u.single; in init_object()
806 ob->u.sort = accu.linear; in init_object()
808 ob->s.b.sorted = 1; in init_object()
816 linear_search_fdes (struct object *ob, fde *this_fde, void *pc) in linear_search_fdes() argument
819 int encoding = ob->s.b.encoding; in linear_search_fdes()
820 _Unwind_Ptr base = base_from_object (ob->s.b.encoding, ob); in linear_search_fdes()
822 for (; ! last_fde (ob, this_fde); this_fde = next_fde (this_fde)) in linear_search_fdes()
831 if (ob->s.b.mixed_encoding) in linear_search_fdes()
840 base = base_from_object (encoding, ob); in linear_search_fdes()
885 binary_search_unencoded_fdes (struct object *ob, void *pc) in binary_search_unencoded_fdes() argument
887 struct fde_vector *vec = ob->u.sort; in binary_search_unencoded_fdes()
912 binary_search_single_encoding_fdes (struct object *ob, void *pc) in binary_search_single_encoding_fdes() argument
914 struct fde_vector *vec = ob->u.sort; in binary_search_single_encoding_fdes()
915 int encoding = ob->s.b.encoding; in binary_search_single_encoding_fdes()
916 _Unwind_Ptr base = base_from_object (encoding, ob); in binary_search_single_encoding_fdes()
942 binary_search_mixed_encoding_fdes (struct object *ob, void *pc) in binary_search_mixed_encoding_fdes() argument
944 struct fde_vector *vec = ob->u.sort; in binary_search_mixed_encoding_fdes()
957 base_from_object (encoding, ob), in binary_search_mixed_encoding_fdes()
973 search_object (struct object* ob, void *pc) in search_object() argument
977 if (! ob->s.b.sorted) in search_object()
979 init_object (ob); in search_object()
984 if (pc < ob->pc_begin) in search_object()
988 if (ob->s.b.sorted) in search_object()
990 if (ob->s.b.mixed_encoding) in search_object()
991 return binary_search_mixed_encoding_fdes (ob, pc); in search_object()
992 else if (ob->s.b.encoding == DW_EH_PE_absptr) in search_object()
993 return binary_search_unencoded_fdes (ob, pc); in search_object()
995 return binary_search_single_encoding_fdes (ob, pc); in search_object()
1000 if (ob->s.b.from_array) in search_object()
1003 for (p = ob->u.array; *p ; p++) in search_object()
1005 fde *f = linear_search_fdes (ob, *p, pc); in search_object()
1012 return linear_search_fdes (ob, ob->u.single, pc); in search_object()
1019 struct object *ob; in _Unwind_Find_FDE() local
1028 for (ob = seen_objects; ob; ob = ob->next) in _Unwind_Find_FDE()
1029 if (pc >= ob->pc_begin) in _Unwind_Find_FDE()
1031 f = search_object (ob, pc); in _Unwind_Find_FDE()
1038 while ((ob = unseen_objects)) in _Unwind_Find_FDE()
1042 unseen_objects = ob->next; in _Unwind_Find_FDE()
1043 f = search_object (ob, pc); in _Unwind_Find_FDE()
1047 if ((*p)->pc_begin < ob->pc_begin) in _Unwind_Find_FDE()
1049 ob->next = *p; in _Unwind_Find_FDE()
1050 *p = ob; in _Unwind_Find_FDE()
1064 bases->tbase = ob->tbase; in _Unwind_Find_FDE()
1065 bases->dbase = ob->dbase; in _Unwind_Find_FDE()
1067 encoding = ob->s.b.encoding; in _Unwind_Find_FDE()
1068 if (ob->s.b.mixed_encoding) in _Unwind_Find_FDE()
1070 read_encoded_value_with_base (encoding, base_from_object (encoding, ob), in _Unwind_Find_FDE()