Home | History | Annotate | Download | only in libdw

Lines Matching defs:fde

0 /* FDE reading.
94 struct dwarf_fde *fde = malloc (sizeof (struct dwarf_fde));
95 if (fde == NULL)
101 fde->instructions = entry->start;
102 fde->instructions_end = entry->end;
104 &fde->instructions, &fde->start))
106 &fde->instructions, &fde->end)))
108 fde->end += fde->start;
110 fde->cie = cie;
114 /* The CIE augmentation says the FDE has a DW_FORM_block
117 get_uleb128 (len, fde->instructions);
118 if ((Dwarf_Word) (fde->instructions_end - fde->instructions) < len)
120 free (fde);
124 fde->instructions += len;
129 fde->instructions += cie->fde_augmentation_data_size;
132 if (tsearch (fde, &cache->fde_tree, &compare_fde) == NULL)
134 free (fde);
139 return fde;
162 /* We have a new FDE to consider. */
163 struct dwarf_fde *fde = intern_fde (cache, &entry.fde);
164 if (fde == (void *) -1l || fde == NULL)
171 return fde;
174 /* Use a binary search table in .eh_frame_hdr format, yield an FDE offset. */
205 Dwarf_Addr fde;
208 &fde)))
229 return fde - cache->frame_vaddr;
241 /* Look for a cached FDE covering this address. */
254 struct dwarf_fde *fde = __libdw_fde_by_offset (cache, offset);
255 if (unlikely (fde != NULL)
257 && unlikely (address < fde->start || address >= fde->end))
262 return fde;
279 /* We couldn't progress past the bogus FDE. */
287 /* This is a CIE, not an FDE. We eagerly intern these
288 because the next FDE will usually refer to this CIE. */
293 /* We have a new FDE to consider. */
294 struct dwarf_fde *fde = intern_fde (cache, &entry.fde);
296 if (fde == (void *) -1l) /* Bad FDE, but we can keep looking. */
299 if (fde == NULL) /* Bad data. */
303 if (fde->start <= address && fde->end > address)
304 return fde;
308 /* We found no FDE covering this address. */