From: Roland McGrath Date: Mon, 21 Jun 2010 00:14:29 +0000 (-0700) Subject: Merge branch 'roland/debug_types' X-Git-Tag: elfutils-0.148~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=183e8abb7bce1b51759f1f16529db7f31e3ec705;p=thirdparty%2Felfutils.git Merge branch 'roland/debug_types' Conflicts: libdw/ChangeLog libdw/libdw.map --- 183e8abb7bce1b51759f1f16529db7f31e3ec705 diff --cc libdw/ChangeLog index 277966bae,d4d135389..42a59d111 --- a/libdw/ChangeLog +++ b/libdw/ChangeLog @@@ -1,39 -1,67 +1,103 @@@ + 2010-06-16 Roland McGrath + + * 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 + + * 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 + + * 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 * dwarf_formref.c (__libdw_formref): Diagnose DW_FORM_ref_sig8 like diff --cc libdw/libdw.map index d1f486615,9b60824aa..9cf8cd388 --- a/libdw/libdw.map +++ b/libdw/libdw.map @@@ -241,8 -241,5 +241,10 @@@ ELFUTILS_0.146 ELFUTILS_0.148 { global: dwarf_cfi_validate_fde; + + dwarf_lineisa; + dwarf_linediscriminator; + dwarf_lineop_index; ++ + dwarf_next_unit; } ELFUTILS_0.146;