Lines Matching defs:fde
0 /* FDE reading.
73 struct dwarf_fde *fde = malloc (sizeof (struct dwarf_fde));
74 if (fde == NULL)
80 fde->instructions = entry->start;
81 fde->instructions_end = entry->end;
83 &fde->instructions, &fde->start))
85 &fde->instructions, &fde->end)))
87 free (fde);
91 fde->end += fde->start;
93 /* Make sure the fde actually covers a real code range. */
94 if (fde->start >= fde->end)
96 free (fde);
100 fde->cie = cie;
104 /* The CIE augmentation says the FDE has a DW_FORM_block
107 get_uleb128 (len, fde->instructions, fde->instructions_end);
108 if ((Dwarf_Word) (fde->instructions_end - fde->instructions) < len)
110 free (fde);
114 fde->instructions += len;
119 fde->instructions += cie->fde_augmentation_data_size;
122 struct dwarf_fde **tres = tsearch (fde, &cache->fde_tree, &compare_fde);
125 free (fde);
129 else if (*tres != fde)
131 /* There is already an FDE in the cache that covers the same
132 address range. That is odd. Ignore this FDE. And just use
134 free (fde);
138 return fde;
161 /* We have a new FDE to consider. */
162 struct dwarf_fde *fde = intern_fde (cache, &entry.fde);
163 if (fde == (void *) -1l || fde == NULL)
170 return fde;
173 /* Use a binary search table in .eh_frame_hdr format, yield an FDE offset. */
217 Dwarf_Addr fde;
220 &fde)))
238 return fde - cache->frame_vaddr;
249 /* Look for a cached FDE covering this address. */
262 struct dwarf_fde *fde = __libdw_fde_by_offset (cache, offset);
263 if (likely (fde != NULL))
266 if (unlikely (address < fde->start))
271 /* .eh_frame_hdr does not indicate length covered by FDE. */
272 if (unlikely (address >= fde->end))
275 return fde;
292 /* We couldn't progress past the bogus FDE. */
300 /* This is a CIE, not an FDE. We eagerly intern these
301 because the next FDE will usually refer to this CIE. */
306 /* We have a new FDE to consider. */
307 struct dwarf_fde *fde = intern_fde (cache, &entry.fde);
309 if (fde == (void *) -1l) /* Bad FDE, but we can keep looking. */
312 if (fde == NULL) /* Bad data. */
316 if (fde->start <= address && fde->end > address)
317 return fde;
321 /* We found no FDE covering this address. */