+ 2010-06-16 Roland McGrath <roland@redhat.com>
+
+ * dwarf_formref_die.c: Use dwarf_offdie only for DW_FORM_ref_addr, so
+ we don't repeat a CU lookup we've already done. Handle
+ DW_FORM_ref_sig8 using sig8_hash table and __libdw_intern_next_unit.
+
+ * libdw_findcu.c (__libdw_intern_next_unit): New function,
+ broken out of ...
+ (__libdw_findcu): ... here. Call it.
+ * libdwP.h: Declare it.
+ (struct Dwarf): New member next_tu_offset.
+
+ * dwarf_sig8_hash.c: New file.
+ * dwarf_sig8_hash.h: New file.
+ * Makefile.am (libdw_a_SOURCES, noinst_HEADERS): Add them.
+ * dwarf_abbrev_hash.c: Include dwarf_sig8_hash.h before
+ defining NO_UNDEF.
+ * libdwP.h (struct Dwarf): New member sig8_hash.
+ * dwarf_begin_elf.c: Call Dwarf_Sig8_Hash_init on it.
+ * dwarf_end.c: Call Dwarf_Sig8_Hash_free on it.
+
+ * dwarf_nextcu.c (dwarf_next_unit): New function, broken out of ...
+ (dwarf_nextcu): ... here. Call it.
+ * libdw.h: Declare it.
+ * libdwP.h: Add INTDECL.
+ * libdw_findcu.c (__libdw_findcu): Use it instead of dwarf_nextcu.
+ * libdw.map (ELFUTILS_0.148): New set, add dwarf_next_unit.
+
+ * libdwP.h (cu_sec_idx, cu_data): New functions.
+ Use .debug_types when CU is a TU.
+ * dwarf_cuoffset.c: Use that instead of assuming IDX_debug_info.
+ * dwarf_siblingof.c: Likewise.
+ * dwarf_formstring.c: Likewise.
+ * dwarf_formudata.c (__libdw_formptr, dwarf_formudata): Likewise.
+ * dwarf_getlocation.c (dwarf_getlocation): Likewise.
+ (dwarf_getlocation_addr): Likewise.
+
+ * libdwP.h (struct Dwarf_CU): Add new members type_offset, type_sig8.
+ (DIE_OFFSET_FROM_CU_OFFSET): Take flag argument; if true, compute
+ .debug_types header size instead of .debug_info header size.
+ (CUDIE): Use it.
+ * dwarf_diecu.c: Update caller.
+ * dwarf_getaranges.c: Likewise.
+ * dwarf_nextcu.c: Likewise.
+ * libdw_findcu.c (__libdw_findcu): Initialize new members.
+
+ * fde.c (fde_by_offset): Renamed to ...
+ (__libdw_fde_by_offset): ... this, made global and internal_function.
+ Don't take ADDRESS argument.
+ (__libdw_find_fde): Update caller. Do address sanity check here.
+ * cfi.h: Declare __libdw_fde_by_offset.
+ * cfi.c (dwarf_cfi_validate_fde): New function.
+ * libdw.h: Declare it.
+ * libdw.map (ELFUTILS_0.148): Add it.
+
+ * cie.c (intern_new_cie): Canonicalize DW_EH_PE_absptr FDE encoding to
+ either DW_EH_PE_udata8 or DW_EH_PE_udata4.
+
+ * encoded-value.h (read_encoded_value): Handle DW_EH_PE_indirect.
+ Don't assume DW_EH_PE_aligned refers to native address size.
+
+ * cfi.c (execute_cfi): Barf on CIE initial instructions changing the
+ address.
+
+2010-06-17 Roland McGrath <roland@redhat.com>
+
+ * libdwP.h (struct Dwarf_Line_s): Add members isa, discriminator, and
+ op_index.
+ * dwarf_getsrclines.c (dwarf_getsrclines): Move NEW_FILE macro guts
+ into an inner inline function. Set new fields. Check all fields for
+ overflow when setting.
+ * dwarf_lineisa.c: New file.
+ * dwarf_linediscriminator.c: New file.
+ * dwarf_lineop_index.c: New file.
+ * Makefile.am (libdw_a_SOURCES): Add them.
+ * libdw.map (ELFUTILS_0.148): Add them.
+ * libdw.h: Declare them.
+
+2010-06-16 Roland McGrath <roland@redhat.com>
+
+ * dwarf_next_cfi.c: Fix version 4 return_address_register decoding.
+
+ * fde.c (fde_by_offset): Renamed to ...
+ (__libdw_fde_by_offset): ... this, made global and internal_function.
+ Don't take ADDRESS argument.
+ (__libdw_find_fde): Update caller. Do address sanity check here.
+ * cfi.h: Declare __libdw_fde_by_offset.
+ * cfi.c (dwarf_cfi_validate_fde): New function.
+ * libdw.h: Declare it.
+ * libdw.map (ELFUTILS_0.148): Add it.
+
+ * cie.c (intern_new_cie): Canonicalize DW_EH_PE_absptr FDE encoding to
+ either DW_EH_PE_udata8 or DW_EH_PE_udata4.
+
+ * encoded-value.h (read_encoded_value): Handle DW_EH_PE_indirect.
+ Don't assume DW_EH_PE_aligned refers to native address size.
+
+ * cfi.c (execute_cfi): Barf on CIE initial instructions changing the
+ address.
+
2010-06-15 Roland McGrath <roland@redhat.com>
* dwarf_formref.c (__libdw_formref): Diagnose DW_FORM_ref_sig8 like